Author: mukulg
Date: Thu Sep 8 03:46:24 2011
New Revision: 1166522
URL: http://svn.apache.org/viewvc?rev=1166522&view=rev
Log:
schema 1.1 change: as per private discussion with Sandy Gao, implementing a
feature to control "xpath subset" vs "full xpath" for CTA evaluation, with
xpath subset being default.
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/msg/XMLSchemaMessages.properties
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/jaxp/validation/XMLSchemaValidatorComponentManager.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.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=1166522&r1=1166521&r2=1166522&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
Thu Sep 8 03:46:24 2011
@@ -334,6 +334,9 @@ public final class Constants {
/** Feature to ignore errors caused by type alternatives */
public static final String TYPE_ALTERNATIVES_CHEKING_FEATURE =
"validation/type-alternative-checking";
+ /** Feature to control full XPath 2.0 checking for CTA processing */
+ public static final String CTA_FULL_XPATH_CHECKING_FEATURE =
"validation/cta-full-xpath-checking";
+
/** Feature to ignore errors caused by unparsed entities
("validation/unparsed-entity-checking") */
public static final String UNPARSED_ENTITY_CHECKING_FEATURE =
"validation/unparsed-entity-checking";
@@ -548,6 +551,7 @@ public final class Constants {
TOLERATE_DUPLICATES_FEATURE,
STRINGS_INTERNED_FEATURE,
TYPE_ALTERNATIVES_CHEKING_FEATURE,
+ CTA_FULL_XPATH_CHECKING_FEATURE,
};
/** Xerces properties. */
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
Thu Sep 8 03:46:24 2011
@@ -347,7 +347,7 @@
c-fields-xpaths = c-fields-xpaths: The field value = ''{0}'' is not
valid.
c-general-xpath = c-general-xpath: The expression ''{0}'' is not valid
with respect to the XPath subset supported by XML Schema.
c-general-xpath-ns = c-general-xpath-ns: A namespace prefix in XPath
expression ''{0}'' was not bound to a namespace.
- c-cta-xpath = c-cta-xpath: The expression ''{0}'' is not a valid XPath
expression, for CTA evaluation.
+ c-cta-xpath = c-cta-xpath: The XPath expression ''{0}'' couldn''t
compile successfully in ''{1}'' mode, during CTA evaluation.
c-selector-xpath = c-selector-xpath: The selector value = ''{0}'' is
not valid; selector xpaths cannot contain attributes.
EmptyTargetNamespace = EmptyTargetNamespace: In schema document
''{0}'', the value of the ''targetNamespace'' attribute cannot be an empty
string.
FacetValueFromBase = FacetValueFromBase: In the declaration of type
''{0}'', value ''{1}'' of facet ''{2}'' must be from the value space of the
base type, ''{3}''.
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLSchemaLoader.java
Thu Sep 8 03:46:24 2011
@@ -146,6 +146,10 @@ XSLoader, DOMConfiguration {
protected static final String TOLERATE_DUPLICATES =
Constants.XERCES_FEATURE_PREFIX +
Constants.TOLERATE_DUPLICATES_FEATURE;
+ /** Feature identifier: tolerate duplicates */
+ protected static final String CTA_FULL_XPATH =
+ Constants.XERCES_FEATURE_PREFIX +
Constants.CTA_FULL_XPATH_CHECKING_FEATURE;
+
/** Property identifier: Schema DV Factory */
protected static final String SCHEMA_DV_FACTORY =
Constants.XERCES_PROPERTY_PREFIX +
Constants.SCHEMA_DV_FACTORY_PROPERTY;
@@ -162,7 +166,8 @@ XSLoader, DOMConfiguration {
VALIDATE_ANNOTATIONS,
HONOUR_ALL_SCHEMALOCATIONS,
NAMESPACE_GROWTH,
- TOLERATE_DUPLICATES
+ TOLERATE_DUPLICATES,
+ CTA_FULL_XPATH,
};
// property identifiers
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/alternative/Test.java
Thu Sep 8 03:46:24 2011
@@ -101,7 +101,7 @@ public class Test extends AbstractPsycho
if (fXPath != null) {
return fXPath.evaluateTest(element, attributes);
} else if (fXPathPsychoPath != null) {
- return evaluateTestExprWithPsychoPathEngine(element, attributes);
+ return evaluateTestWithPsychoPathXPathEngine(element, attributes);
}
else {
return false;
@@ -113,15 +113,15 @@ public class Test extends AbstractPsycho
}
/*
- * Evaluate the XPath "test" expression on an XDM instance, consisting of
the specified element and its attributes.
- * Uses PsychoPath XPath 2.0 engine for the evaluation.
+ * Evaluate the XPath "test" expression on an XDM instance, for CTA
evaluation. Uses PsychoPath XPath 2.0 engine for the evaluation.
*/
- private boolean evaluateTestExprWithPsychoPathEngine(QName element,
XMLAttributes attributes) {
+ private boolean evaluateTestWithPsychoPathXPathEngine(QName element,
XMLAttributes attributes) {
boolean evaluationResult = false;
try {
- // an untyped PSVI DOM tree is constructed, to provide to
PsychoPath engine for evaluation.
+ // an untyped PSVI DOM tree (consisting only of the top most
element node and it's attributes) is constructed,
+ // to provide to PsychoPath XPath engine for evaluation.
Document document = new PSVIDocumentImpl();
Element elem = document.createElementNS(element.uri,
element.rawname);
for (int attrIndx = 0; attrIndx < attributes.getLength();
attrIndx++) {
@@ -146,6 +146,6 @@ public class Test extends AbstractPsycho
return evaluationResult;
- } // evaluateTestExprWithPsychoPathEngine
+ } // evaluateTestWithPsychoPathXPathEngine
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java
Thu Sep 8 03:46:24 2011
@@ -77,7 +77,6 @@ import org.apache.xerces.util.StAXLocati
import org.apache.xerces.util.SymbolHash;
import org.apache.xerces.util.SymbolTable;
import org.apache.xerces.util.URI.MalformedURIException;
-import org.apache.xerces.util.XMLChar;
import org.apache.xerces.util.XMLSymbols;
import org.apache.xerces.xni.QName;
import org.apache.xerces.xni.XNIException;
@@ -179,6 +178,10 @@ public class XSDHandler {
protected static final String TOLERATE_DUPLICATES =
Constants.XERCES_FEATURE_PREFIX + Constants.TOLERATE_DUPLICATES_FEATURE;
+ /** Feature identifier: Full XPath 2.0 for CTA evaluations */
+ protected static final String CTA_FULL_XPATH =
+ Constants.XERCES_FEATURE_PREFIX +
Constants.CTA_FULL_XPATH_CHECKING_FEATURE;
+
/** Feature identifier: namespace prefixes. */
private static final String NAMESPACE_PREFIXES =
Constants.SAX_FEATURE_PREFIX + Constants.NAMESPACE_PREFIXES_FEATURE;
@@ -403,6 +406,9 @@ public class XSDHandler {
// handle tolerate duplicates feature
boolean fTolerateDuplicates = false;
+
+ // handle full XPath 2.0 feature
+ boolean fFullXPathForCTA = false;
// the XMLErrorReporter
private XMLErrorReporter fErrorReporter;
@@ -3818,6 +3824,12 @@ public class XSDHandler {
} catch (XMLConfigurationException e) {
fTolerateDuplicates = false;
}
+
+ try {
+ fFullXPathForCTA = componentManager.getFeature(CTA_FULL_XPATH);
+ } catch (XMLConfigurationException e) {
+ fFullXPathForCTA = false;
+ }
try {
fSchemaParser.setFeature(
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDTypeAlternativeTraverser.java
Thu Sep 8 03:46:24 2011
@@ -61,7 +61,9 @@ import org.w3c.dom.Element;
*/
class XSDTypeAlternativeTraverser extends XSDAbstractTraverser {
- private static final XSSimpleType fErrorType;
+ private static final XSSimpleType fErrorType;
+ private boolean fIsFullXPathModeForCTA;
+ private String[] fctaXPathModes = {"cta-subset", "cta-full"};
static {
SchemaGrammar grammar =
SchemaGrammar.getS4SGrammar(Constants.SCHEMA_VERSION_1_1);
@@ -70,6 +72,7 @@ class XSDTypeAlternativeTraverser extend
XSDTypeAlternativeTraverser (XSDHandler handler, XSAttributeChecker
attrChecker) {
super(handler, attrChecker);
+ fIsFullXPathModeForCTA = handler.fFullXPathForCTA;
}
/**
@@ -188,21 +191,27 @@ class XSDTypeAlternativeTraverser extend
// now look for other optional attributes like test and
xpathDefaultNamespace
if (testStr != null) {
Test testExpr = null;
- //set the test attribute value
try {
- testExpr = new Test(new XPath20(testStr, fSymbolTable, new
NamespaceSupport(schemaDoc.fNamespaceSupport)), typeAlternative, new
NamespaceSupport(schemaDoc.fNamespaceSupport));
- }
+ if (fIsFullXPathModeForCTA) {
+ // if full XPath 2.0 support is enabled for CTA, use
PsychoPath XPath 2.0 engine for XPath evaluation
+ XPathParser xpp = new JFlexCupParser();
+ XPath xp = xpp.parse("boolean(" + testStr + ")");
+ testExpr = new Test(xp, typeAlternative,
schemaDoc.fNamespaceSupport);
+ }
+ else {
+ // if XPath subset is enabled for CTA (this is also the
default option), use Xerces's native XPath parser for CTA
+ testExpr = new Test(new XPath20(testStr, fSymbolTable, new
NamespaceSupport(schemaDoc.fNamespaceSupport)), typeAlternative, new
NamespaceSupport(schemaDoc.fNamespaceSupport));
+ }
+ }
catch (XPathException e) {
- // fall back to full XPath 2.0 support, with PsychoPath engine
- try {
- XPathParser xpp = new JFlexCupParser();
- XPath xp = xpp.parse("boolean(" + testStr + ")");
- testExpr = new Test(xp, typeAlternative,
schemaDoc.fNamespaceSupport);
- } catch(XPathParserException ex) {
- reportSchemaError("c-cta-xpath", new Object[] { testStr },
altElement);
- //if the XPath is invalid, create a Test without an
expression
- testExpr = new Test((XPath20) null, typeAlternative, new
NamespaceSupport(schemaDoc.fNamespaceSupport));
- }
+ // if XPath expression couldn't compile, create a "test"
without an expression
+ testExpr = new Test((XPath20) null, typeAlternative, new
NamespaceSupport(schemaDoc.fNamespaceSupport));
+ reportSchemaError("c-cta-xpath", new Object[] {testStr,
fctaXPathModes[0]}, altElement);
+ }
+ catch(XPathParserException ex) {
+ // if XPath expression couldn't compile, create a "test"
without an expression
+ testExpr = new Test((XPath20) null, typeAlternative, new
NamespaceSupport(schemaDoc.fNamespaceSupport));
+ reportSchemaError("c-cta-xpath", new Object[] {testStr,
fctaXPathModes[1]}, altElement);
}
typeAlternative.setTest(testExpr);
}
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/jaxp/validation/XMLSchemaValidatorComponentManager.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/jaxp/validation/XMLSchemaValidatorComponentManager.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/jaxp/validation/XMLSchemaValidatorComponentManager.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/jaxp/validation/XMLSchemaValidatorComponentManager.java
Thu Sep 8 03:46:24 2011
@@ -87,6 +87,10 @@ final class XMLSchemaValidatorComponentM
private static final String TYPE_ALTERNATIVES_CHECKING =
Constants.XERCES_FEATURE_PREFIX +
Constants.TYPE_ALTERNATIVES_CHEKING_FEATURE;
+ /** Feature identifier: whether to use full XPath 2.0 support for CTA
processing */
+ private static final String CTA_FULL_XPATH_CHECKING =
+ Constants.XERCES_FEATURE_PREFIX +
Constants.CTA_FULL_XPATH_CHECKING_FEATURE;
+
/** Feature identifier: disallow DOCTYPE declaration */
private static final String DISALLOW_DOCTYPE_DECL_FEATURE =
Constants.XERCES_FEATURE_PREFIX +
Constants.DISALLOW_DOCTYPE_DECL_FEATURE;
@@ -286,7 +290,8 @@ final class XMLSchemaValidatorComponentM
fFeatures.put(ID_IDREF_CHECKING, Boolean.TRUE);
fFeatures.put(IDENTITY_CONSTRAINT_CHECKING, Boolean.TRUE);
fFeatures.put(UNPARSED_ENTITY_CHECKING, Boolean.TRUE);
- fFeatures.put(TYPE_ALTERNATIVES_CHECKING, Boolean.TRUE);
+ fFeatures.put(TYPE_ALTERNATIVES_CHECKING, Boolean.TRUE);
+ fFeatures.put(CTA_FULL_XPATH_CHECKING, Boolean.FALSE);
}
/**
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/StandardParserConfiguration.java
Thu Sep 8 03:46:24 2011
@@ -131,6 +131,10 @@ public class StandardParserConfiguration
/** Feature identifier: whether to ignore type alternatives errors */
protected static final String TYPE_ALTERNATIVES_CHECKING =
Constants.XERCES_FEATURE_PREFIX +
Constants.TYPE_ALTERNATIVES_CHEKING_FEATURE;
+
+ /** Feature identifier: whether to use full XPath 2.0 support for CTA
processing */
+ protected static final String CTA_FULL_XPATH_CHECKING =
+ Constants.XERCES_FEATURE_PREFIX +
Constants.CTA_FULL_XPATH_CHECKING_FEATURE;
// property identifiers
@@ -239,6 +243,7 @@ public class StandardParserConfiguration
IDENTITY_CONSTRAINT_CHECKING,
UNPARSED_ENTITY_CHECKING,
TYPE_ALTERNATIVES_CHECKING,
+ CTA_FULL_XPATH_CHECKING,
};
addRecognizedFeatures(recognizedFeatures);
@@ -257,6 +262,7 @@ public class StandardParserConfiguration
setFeature(IDENTITY_CONSTRAINT_CHECKING, true);
setFeature(UNPARSED_ENTITY_CHECKING, true);
setFeature(TYPE_ALTERNATIVES_CHECKING, true);
+ setFeature(CTA_FULL_XPATH_CHECKING, false);
// add default recognized properties
Modified:
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java
URL:
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java?rev=1166522&r1=1166521&r2=1166522&view=diff
==============================================================================
---
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java
(original)
+++
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/parsers/XML11Configuration.java
Thu Sep 8 03:46:24 2011
@@ -196,6 +196,10 @@ public class XML11Configuration extends
protected static final String TYPE_ALTERNATIVES_CHECKING =
Constants.XERCES_FEATURE_PREFIX +
Constants.TYPE_ALTERNATIVES_CHEKING_FEATURE;
+ /** Feature identifier: whether to use full XPath 2.0 support for CTA
processing */
+ protected static final String CTA_FULL_XPATH_CHECKING =
+ Constants.XERCES_FEATURE_PREFIX +
Constants.CTA_FULL_XPATH_CHECKING_FEATURE;
+
// property identifiers
@@ -499,6 +503,7 @@ public class XML11Configuration extends
ID_IDREF_CHECKING, IDENTITY_CONSTRAINT_CHECKING,
UNPARSED_ENTITY_CHECKING, USE_GRAMMAR_POOL_ONLY,
TYPE_ALTERNATIVES_CHECKING,
+ CTA_FULL_XPATH_CHECKING,
// NOTE: These shouldn't really be here but since the
XML Schema
// validator is constructed dynamically, its
recognized
// features might not have been set and it would
cause a
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]