FileDocCategorySizeDatePackage
DOMImplementationSourceImpl.javaAPI DocApache Xerces 3.0.15283Fri Sep 14 20:33:52 BST 2007org.apache.xerces.dom

DOMImplementationSourceImpl

public class DOMImplementationSourceImpl extends Object implements DOMImplementationSource
Supply one the right implementation, based upon requested features. Each implemented DOMImplementationSource object is listed in the binding-specific list of available sources so that its DOMImplementation objects are made available.

See also the Document Object Model (DOM) Level 3 Core Specification.

xerces.internal
version
$Id: DOMImplementationSourceImpl.java 447266 2006-09-18 05:57:49Z mrglavas $

Fields Summary
Constructors Summary
Methods Summary
public org.w3c.dom.DOMImplementationgetDOMImplementation(java.lang.String features)
A method to request a DOM implementation.

param
features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal Events 2.0"
return
An implementation that has the desired features, or null if this source has none.

        // first check whether the CoreDOMImplementation would do
        DOMImplementation impl =
            CoreDOMImplementationImpl.getDOMImplementation();
        if (testImpl(impl, features)) {
            return impl;
        }
        // if not try the DOMImplementation
        impl = DOMImplementationImpl.getDOMImplementation();
        if (testImpl(impl, features)) {
            return impl;
        }
        
        return null;
    
public org.w3c.dom.DOMImplementationListgetDOMImplementationList(java.lang.String features)
A method to request a list of DOM implementations that support the specified features and versions, as specified in .

param
features A string that specifies which features and versions are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 3.0 Traversal +Events 2.0"
return
A list of DOM implementations that support the desired features.

        // first check whether the CoreDOMImplementation would do
        DOMImplementation impl = CoreDOMImplementationImpl.getDOMImplementation();
		final Vector implementations = new Vector();
        if (testImpl(impl, features)) {
			implementations.addElement(impl);
        }
        impl = DOMImplementationImpl.getDOMImplementation();
        if (testImpl(impl, features)) {
			implementations.addElement(impl);
        }

        return new DOMImplementationListImpl(implementations);
    
booleantestImpl(org.w3c.dom.DOMImplementation impl, java.lang.String features)

       
        StringTokenizer st = new StringTokenizer(features);
        String feature = null;
        String version = null;
 
        if (st.hasMoreTokens()) {
           feature = st.nextToken();
        }
        while (feature != null) {
           boolean isVersion = false;
           if (st.hasMoreTokens()) {
               char c;
               version = st.nextToken();
               c = version.charAt(0);
               switch (c) {
               case '0": case '1": case '2": case '3": case '4":
               case '5": case '6": case '7": case '8": case '9":
                   isVersion = true;
               }
           } else {
               version = null;
           }
           if (isVersion) {
               if (!impl.hasFeature(feature, version)) {
                   return false;
               }
               if (st.hasMoreTokens()) {
                   feature = st.nextToken();
               } else {
                   feature = null;
               }
           } else {
               if (!impl.hasFeature(feature, null)) {
                   return false;
               }
               feature = version;
           }
        }
        return true;