Author: mukulg
Date: Sat Jul 24 15:46:09 2010
New Revision: 978885
URL: http://svn.apache.org/viewvc?rev=978885&view=rev
Log:
committing implementation of vc:typeAvailable, vc:typeUnavailable,
vc:facetAvailable & vc:facetUnavailable attributes (JIRA issue, XERCESJ-1460)
Added:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaVersioningHelper.java
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaDOMParser.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java?rev=978885&r1=978884&r2=978885&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/Constants.java
Sat Jul 24 15:46:09 2010
@@ -485,6 +485,12 @@ public final class Constants {
public final static short SCHEMA_VERSION_1_0_EXTENDED = 2;
public final static short SCHEMA_VERSION_1_1 = 4;
+ // Constants to support XML Schema 1.1 conditional inclusion functionality
+ public final static short IS_TYPE = 0;
+ public final static short IS_FACET = 1;
+ public final static short TYPE_AND_FACET_AVAILABILITY = 2;
+ public final static short TYPE_AND_FACET_UNAVAILABILITY = 3;
+
// private
/** SAX features. */
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java?rev=978885&r1=978884&r2=978885&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/dv/XSSimpleType.java
Sat Jul 24 15:46:09 2010
@@ -60,7 +60,7 @@ public interface XSSimpleType extends XS
public static final short ET_PROHIBITED = 2;
/**
- * Constant defined for the primitive built-in simple tpyes.
+ * Constant defined for the primitive built-in simple types.
* see <a
href='http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes'>
* XML Schema Part 2: Datatypes </a>
*/
@@ -76,7 +76,7 @@ public interface XSSimpleType extends XS
public static final short PRIMITIVE_DOUBLE = 5;
/** "duration" type */
public static final short PRIMITIVE_DURATION = 6;
- /** "dataTime" type */
+ /** "dateTime" type */
public static final short PRIMITIVE_DATETIME = 7;
/** "time" type */
public static final short PRIMITIVE_TIME = 8;
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java?rev=978885&r1=978884&r2=978885&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
Sat Jul 24 15:46:09 2010
@@ -149,6 +149,10 @@ public final class SchemaSymbols {
public static final String ATT_XPATH_DEFAULT_NS =
"xpathDefaultNamespace".intern();
public static final String ATT_MINVERSION =
"minVersion".intern();
public static final String ATT_MAXVERSION =
"maxVersion".intern();
+ public static final String ATT_TYPEAVAILABLE =
"typeAvailable".intern();
+ public static final String ATT_TYPEUNAVAILABLE =
"typeUnavailable".intern();
+ public static final String ATT_FACETAVAILABLE =
"facetAvailable".intern();
+ public static final String ATT_FACETUNAVAILABLE =
"facetUnavailable".intern();
public static final String ATT_INHERITABLE =
"inheritable".intern();
public static final String ATT_ASSERT_MESSAGE = "message".intern();
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaDOMParser.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaDOMParser.java?rev=978885&r1=978884&r2=978885&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaDOMParser.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaDOMParser.java
Sat Jul 24 15:46:09 2010
@@ -17,13 +17,14 @@
package org.apache.xerces.impl.xs.opti;
+import java.util.Iterator;
+import java.util.List;
import java.io.IOException;
import java.math.BigDecimal;
+import java.util.ArrayList;
import org.apache.xerces.impl.Constants;
import org.apache.xerces.impl.XMLErrorReporter;
-import org.apache.xerces.impl.dv.xs.DecimalDV;
-import org.apache.xerces.impl.dv.xs.TypeValidator;
import org.apache.xerces.impl.xs.SchemaSymbols;
import org.apache.xerces.impl.xs.XSMessageFormatter;
import org.apache.xerces.util.XMLAttributesImpl;
@@ -106,10 +107,10 @@ public class SchemaDOMParser extends Def
private XMLAttributes fEmptyAttr = new XMLAttributesImpl();
// fields for conditional inclusion
- private final TypeValidator fDecimalDV = new DecimalDV();
private XSDecimal fSupportedVersion;
private int fIgnoreDepth = -1;
private boolean fPerformConditionalInclusion = true; //REVISIT: use feature
+ private SchemaVersioningHelper schemaVersioningHelper = new
SchemaVersioningHelper();
//
// XMLDocumentHandler methods
@@ -249,9 +250,10 @@ public class SchemaDOMParser extends Def
return;
}
- // check for version mismatch if any (does not apply to <schema>
element)
+ // perform conditional exclusion checks for schema versioning
+ // namespace (does not apply to <schema> element).
if (fDepth > 0) {
- checkSupportedVersion(element, attributes);
+ checkVersionControlAttributes(element, attributes);
if (fIgnoreDepth > -1) {
return;
}
@@ -321,7 +323,9 @@ public class SchemaDOMParser extends Def
}
if (fDepth > -1) {
- boolean ignoreElement = checkSupportedVersion(element,
attributes);
+ // perform conditional exclusion checks for schema versioning
+ // namespace.
+ boolean ignoreElement = checkVersionControlAttributes(element,
attributes);
if (fIgnoreDepth > -1) {
if (ignoreElement) {
fIgnoreDepth--;
@@ -597,21 +601,38 @@ public class SchemaDOMParser extends Def
fSupportedVersion = version;
}
- private boolean checkSupportedVersion(QName element, XMLAttributes
attributes) {
-
- boolean ignoreElement = false;
+ /*
+ * Method to check if any attributes of schema versioning namespace should
+ * cause exclusion of a schema component along with it's descendant
+ * instructions.
+ *
+ * ref: http://www.w3.org/TR/xmlschema11-1/#cip
+ */
+ private boolean checkVersionControlAttributes(QName element, XMLAttributes
attributes) {
+ boolean ignoreSchemaComponent = false;
+
+ // variables holding schema versioning attribute values
BigDecimal minVer = null;
BigDecimal maxVer = null;
+ List typeAvailableList = null;
+ List typeUnavailableList = null;
+ List facetAvailableList = null;
+ List facetUnavailableList = null;
+ // iterate all attributes of an element, and get values of schema
versioning attributes
final int length = attributes.getLength();
- for (int i = 0; i < length; ++i) {
- String uri = attributes.getURI(i);
+
+ for (int attrIdx = 0; attrIdx < length; ++attrIdx) {
+ String uri = attributes.getURI(attrIdx);
+
if (uri != null && SchemaSymbols.URI_SCHEMAVERSION.equals(uri)) {
- String attrLocalName = attributes.getLocalName(i);
+ String attrLocalName = attributes.getLocalName(attrIdx);
+ String attrValue = attributes.getValue(attrIdx);
+
if (SchemaSymbols.ATT_MINVERSION.equals(attrLocalName)) {
try {
- minVer = new BigDecimal(attributes.getValue(i));
+ minVer = new BigDecimal(attrValue);
}
catch (NumberFormatException nfe) {
fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
@@ -622,7 +643,7 @@ public class SchemaDOMParser extends Def
}
else if (SchemaSymbols.ATT_MAXVERSION.equals(attrLocalName)) {
try {
- maxVer = new BigDecimal(attributes.getValue(i));
+ maxVer = new BigDecimal(attrValue);
}
catch (NumberFormatException nfe) {
fErrorReporter.reportError(XSMessageFormatter.SCHEMA_DOMAIN,
@@ -631,42 +652,208 @@ public class SchemaDOMParser extends Def
XMLErrorReporter.SEVERITY_ERROR);
}
}
- else { //REVISIT: report error
-
+ else if
(SchemaSymbols.ATT_TYPEAVAILABLE.equals(attrLocalName)) {
+ typeAvailableList = tokenizeString(attrValue, "\\s");
+ }
+ else if
(SchemaSymbols.ATT_TYPEUNAVAILABLE.equals(attrLocalName)) {
+ typeUnavailableList = tokenizeString(attrValue, "\\s");
+ }
+ else if
(SchemaSymbols.ATT_FACETAVAILABLE.equals(attrLocalName)) {
+ facetAvailableList = tokenizeString(attrValue, "\\s");
+ }
+ else if
(SchemaSymbols.ATT_FACETUNAVAILABLE.equals(attrLocalName)) {
+ facetUnavailableList = tokenizeString(attrValue, "\\s");
+ }
+ else {
+ // throw warning. This is optional as per the spec,
+ // but highly recommended. TO DO ...
}
}
+
+ } // end attributes iteration
+
+ // perform checks for attributes vc:minVersion, vc:maxVersion,
vc:typeAvailable,
+ // vc:typeUnavailable, vc:facetAvailable & vc:facetUnavailable.
+ boolean minMaxSchemaVerAllowsIgnore = (minVer == null && maxVer ==
null) ?
+ false :
+
schemaVersionAllowsExclude(minVer, maxVer);
+ boolean typeAvlAllowsIgnore = (typeAvailableList == null) ? false :
+
typeAndFacetAvailableAllowsExclude(
+ typeAvailableList,
+ Constants.IS_TYPE,
+
Constants.TYPE_AND_FACET_AVAILABILITY);
+ boolean typeUnAvlAllowsIgnore = (typeUnavailableList == null) ? false :
+
typeAndFacetAvailableAllowsExclude(
+ typeUnavailableList,
+ Constants.IS_TYPE,
+
Constants.TYPE_AND_FACET_UNAVAILABILITY);
+ boolean facetAvlAllowsIgnore = (facetAvailableList == null) ? false :
+
typeAndFacetAvailableAllowsExclude(
+ facetAvailableList,
+ Constants.IS_FACET,
+
Constants.TYPE_AND_FACET_AVAILABILITY);
+ boolean facetUnavlAllowsIgnore = (facetUnavailableList == null) ?
false :
+
typeAndFacetAvailableAllowsExclude(
+ facetUnavailableList,
+ Constants.IS_FACET,
+
Constants.TYPE_AND_FACET_UNAVAILABILITY);
+
+ if (minMaxSchemaVerAllowsIgnore || typeAvlAllowsIgnore ||
typeUnAvlAllowsIgnore |
+ facetAvlAllowsIgnore || facetUnavlAllowsIgnore) {
+ ignoreSchemaComponent = true;
}
+ else {
+ ignoreSchemaComponent = false;
+ }
+
+ return ignoreSchemaComponent;
+
+ } //checkSupportedVersion
+
+
+ /*
+ * Method to determine whether a schema component and it's descendant
+ * instructions should be excluded from schema processing, depending
+ * on the values of vc:minVersion & vc:maxVersion attributes from schema
+ * versioning namespace.
+ */
+ public boolean schemaVersionAllowsExclude(BigDecimal minVer,
+ BigDecimal maxVer) {
+
+ boolean minMaxSchemaVerAllowsIgnore = false;
+
+ // The condition vc:minVersion <= V < vc:maxVersion needs to be true
+ // for a schema component to be included in a validation episode.
+ // Here value of "V" is an instance variable fSupportedVersion.
- // as per XML Schema 1.1 spec, the condition vc:minVersion <= V <
vc:maxVersion
- // needs to be true for a schema component to be included in a
validation
- // episode (ref, http://www.w3.org/TR/xmlschema11-1/#cip). here value
of "V" is
- // an instance variable fSupportedVersion.
if (minVer != null && maxVer != null) {
// if both vc:minVersion & vc:maxVersion attributes are present on
a schema component
if (!(minVer.compareTo(fSupportedVersion.getBigDecimal()) <= 0 &&
maxVer.compareTo(fSupportedVersion.getBigDecimal()) == 1)) {
fIgnoreDepth++;
- ignoreElement = true;
+ minMaxSchemaVerAllowsIgnore = true;
}
}
else if (minVer != null && maxVer == null) {
// only vc:minVersion attribute is present
if (!(minVer.compareTo(fSupportedVersion.getBigDecimal()) <= 0)) {
fIgnoreDepth++;
- ignoreElement = true;
+ minMaxSchemaVerAllowsIgnore = true;
}
}
else if (minVer == null && maxVer != null) {
// only vc:maxVersion attribute is present
if (!(maxVer.compareTo(fSupportedVersion.getBigDecimal()) == 1)) {
fIgnoreDepth++;
- ignoreElement = true;
+ minMaxSchemaVerAllowsIgnore = true;
}
}
- return ignoreElement;
+ return minMaxSchemaVerAllowsIgnore;
+
+ } // schemaVersionAllowsExclude
+
+
+ /*
+ * Method to determine whether a schema component and it's descendant
+ * instructions should be excluded from schema processing, depending
+ * on values of vc:typeAvailable, vc:typeUnavailable, vc:facetAvailable
+ * and vc:facetUnavailable attributes from schema versioning namespace.
+ */
+ private boolean typeAndFacetAvailableAllowsExclude(
+ List typeOrFacetList,
+ short typeOrFacet,
+ short availaibilityUnavlCheck) {
+
+ // either of the following boolean values should be returned from this
+ // method, depending on whether availability or unavailability check is
+ // asked for.
+ boolean typeOrFacetAvlAllowsIgnore = false;
+ boolean typeOrFacetUnavlAllowsIgnore = true;
+
+ for (Iterator iter = typeOrFacetList.iterator(); iter.hasNext(); ) {
+ String typeOrFacetRawValue = (String) iter.next();
+ String typeOrFacetLocalName = null;
+ String typeOrFacetUri = null;
+ if (typeOrFacetRawValue.indexOf(':') != -1) {
+ typeOrFacetLocalName = typeOrFacetRawValue.substring(
+
typeOrFacetRawValue.indexOf(':') + 1);
+ String typeOrFacetPrefix = typeOrFacetRawValue.substring(0,
+
typeOrFacetRawValue.indexOf(':'));
+ typeOrFacetUri = fNamespaceContext.getURI(typeOrFacetPrefix);
+ }
+ else {
+ typeOrFacetLocalName = typeOrFacetRawValue;
+ }
+
+ if (typeOrFacet == Constants.IS_TYPE) {
+ // check for availability of schema types
+ if (availaibilityUnavlCheck ==
Constants.TYPE_AND_FACET_AVAILABILITY &&
+
!schemaVersioningHelper.isTypeSupported(typeOrFacetLocalName,
+
typeOrFacetUri)) {
+ fIgnoreDepth++;
+ typeOrFacetAvlAllowsIgnore = true;
+ break;
+ }
+ else if (availaibilityUnavlCheck ==
Constants.TYPE_AND_FACET_UNAVAILABILITY &&
+
!schemaVersioningHelper.isTypeSupported(typeOrFacetLocalName,
+
typeOrFacetUri)) {
+ typeOrFacetUnavlAllowsIgnore = false;
+ break;
+ }
+ }
+ else if (typeOrFacet == Constants.IS_FACET) {
+ // check for availability of schema facets
+ if (availaibilityUnavlCheck ==
Constants.TYPE_AND_FACET_AVAILABILITY &&
+
!schemaVersioningHelper.isFacetSupported(typeOrFacetLocalName,
+
typeOrFacetUri)) {
+ fIgnoreDepth++;
+ typeOrFacetAvlAllowsIgnore = true;
+ break;
+ }
+ else if (availaibilityUnavlCheck ==
Constants.TYPE_AND_FACET_UNAVAILABILITY &&
+
!schemaVersioningHelper.isFacetSupported(typeOrFacetLocalName,
+
typeOrFacetUri)) {
+ typeOrFacetUnavlAllowsIgnore = false;
+ break;
+ }
+ }
+ }
+
+ if (availaibilityUnavlCheck == Constants.TYPE_AND_FACET_AVAILABILITY) {
+ if (typeOrFacetAvlAllowsIgnore) {
+ fIgnoreDepth++;
+ }
+ return typeOrFacetAvlAllowsIgnore;
+ }
+ else {
+ if (typeOrFacetUnavlAllowsIgnore) {
+ fIgnoreDepth++;
+ }
+ return typeOrFacetUnavlAllowsIgnore;
+ }
+
+ } // typeAndFacetAvailableAllowsExclude
+
+
+ /*
+ * Method to tokenize a string value given a delimeter, and return a List
+ * containing the string tokens.
+ */
+ private List tokenizeString(String strValue, String delim) {
+ List tokenizedList = new ArrayList();
+
+ String[] strSplitValue = strValue.split(delim);
+
+ for (int strIdx = 0; strIdx < strSplitValue.length; strIdx++) {
+ if (!(strSplitValue[strIdx].trim()).equals("")) {
+ tokenizedList.add(strSplitValue[strIdx].trim());
+ }
+ }
+
+ return tokenizedList;
- } //checkSupportedVersion
+ } // tokenizeString
/**
* A simple boolean based stack.
Added:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaVersioningHelper.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaVersioningHelper.java?rev=978885&view=auto
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaVersioningHelper.java
(added)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/opti/SchemaVersioningHelper.java
Sat Jul 24 15:46:09 2010
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.xerces.impl.xs.opti;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.xerces.impl.Constants;
+import org.apache.xerces.xni.QName;
+
+/**
+ * This class provides supporting functionality for schema versioning
+ * pre-processing, during conditional inclusion of schema components (newly
+ * introduced in XML Schema 1.1).
+ *
+ *
+ * ref: http://www.w3.org/TR/xmlschema11-1/#cip
+ *
+ * @author Mukul Gandhi, IBM
+ *
+ * @version $Id: $
+ */
+public class SchemaVersioningHelper {
+
+ // list variables holding 'natively supported' XML Schema types and facets
+ // by Xerces-J XML Schema 1.1 engine.
+ List typesSupported = null;
+ List facetsSupported = null;
+
+ // class constructor
+ public SchemaVersioningHelper() {
+ typesSupported = new ArrayList();
+ facetsSupported = new ArrayList();
+ initialize();
+ }
+
+ // initializing the supported XML Schema types and facets
+ private void initialize() {
+ initSupportedTypes();
+ initSupportedFacets();
+ }
+
+ // initializing the supported XML Schema types
+ private void initSupportedTypes() {
+ typesSupported.add(new QName(null, "anySimpleType", "anySimpleType",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "anyAtomicType", "anyAtomicType",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "string", "string",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "boolean", "boolean",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "decimal", "decimal",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "precisionDecimal",
"precisionDecimal", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "float", "float",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "double", "double",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "duration", "duration",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "dateTime", "dateTime",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "time", "time",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "date", "date",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "gYearMonth", "gYearMonth",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "gYear", "gYear",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "gMonthDay", "gMonthDay",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "gDay", "gDay",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "gMonth", "gMonth",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "hexBinary", "hexBinary",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "base64Binary", "base64Binary",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "anyURI", "anyURI",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "QName", "QName",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "NOTATION", "NOTATION",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "normalizedString",
"normalizedString", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "token", "token",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "language", "language",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "NMTOKEN", "NMTOKEN",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "NMTOKENS", "NMTOKENS",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "Name", "Name",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "NCName", "NCName",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "ID", "ID",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "IDREF", "IDREF",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "IDREFS", "IDREFS",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "ENTITY", "ENTITY",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "ENTITIES", "ENTITIES",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "integer", "integer",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "nonPositiveInteger",
"nonPositiveInteger", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "negativeInteger",
"negativeInteger", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "long", "long",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "int", "int",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "short", "short",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "byte", "byte",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "nonNegativeInteger",
"nonNegativeInteger", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "unsignedLong", "unsignedLong",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "unsignedInt", "unsignedInt",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "unsignedShort", "unsignedShort",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "unsignedByte", "unsignedByte",
Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "positiveInteger",
"positiveInteger", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "yearMonthDuration",
"yearMonthDuration", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "dayTimeDuration",
"dayTimeDuration", Constants.NS_XMLSCHEMA));
+ typesSupported.add(new QName(null, "dateTimeStamp", "dateTimeStamp",
Constants.NS_XMLSCHEMA));
+ }
+
+
+ // initializing the supported XML Schema facets
+ private void initSupportedFacets() {
+ facetsSupported.add(new QName(null, "length", "length",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "minLength", "minLength",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "maxLength", "maxLength",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "pattern", "pattern",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "enumeration", "enumeration",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "whiteSpace", "whiteSpace",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "maxInclusive", "maxInclusive",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "maxExclusive", "maxExclusive",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "minInclusive", "minInclusive",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "totalDigits", "totalDigits",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "minExclusive", "minExclusive",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "fractionDigits",
"fractionDigits", Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "maxScale", "maxScale",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "minScale", "minScale",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "assertion", "assertion",
Constants.NS_XMLSCHEMA));
+ facetsSupported.add(new QName(null, "explicitTimezone",
"explicitTimezone", Constants.NS_XMLSCHEMA));
+ }
+
+
+ // checks if the schema type specified by method arguments (the QName
+ // components of the schema type) is supported by Xerces-J natively.
+ public boolean isTypeSupported(String localName, String uri) {
+ boolean typeSupported = false;
+
+ for (Iterator iter = typesSupported.iterator(); iter.hasNext(); ) {
+ QName typeQname = (QName) iter.next();
+ if (localName.equals(typeQname.localpart) &&
+ uri.equals(typeQname.uri)) {
+ typeSupported = true;
+ break;
+ }
+ }
+
+ return typeSupported;
+
+ } // isTypeSupported
+
+
+ // checks if the schema facet specified by method arguments (the QName
+ // components of a schema facet) is supported by Xerces-J natively.
+ public boolean isFacetSupported(String localName, String uri) {
+ boolean facetSupported = false;
+
+ for (Iterator iter = facetsSupported.iterator(); iter.hasNext(); ) {
+ QName typeQname = (QName) iter.next();
+ if (localName.equals(typeQname.localpart) &&
+ uri.equals(typeQname.uri)) {
+ facetSupported = true;
+ break;
+ }
+ }
+
+ return facetSupported;
+
+ } // isFacetSupported
+
+}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java?rev=978885&r1=978884&r2=978885&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/util/NamespaceSupport.java
Sat Jul 24 15:46:09 2010
@@ -189,7 +189,7 @@ public class NamespaceSupport implements
// find prefix in current context
for (int i = fNamespaceSize; i > 0; i -= 2) {
- if (fNamespace[i - 2] == prefix) {
+ if (prefix.equals(fNamespace[i - 2])) {
return fNamespace[i - 1];
}
}
@@ -207,8 +207,8 @@ public class NamespaceSupport implements
// find uri in current context
for (int i = fNamespaceSize; i > 0; i -= 2) {
- if (fNamespace[i - 1] == uri) {
- if (getURI(fNamespace[i - 2]) == uri)
+ if (uri.equals(fNamespace[i - 1])) {
+ if (uri.equals(getURI(fNamespace[i - 2])))
return fNamespace[i - 2];
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]