Author: knoaman Date: Tue Jan 18 18:46:56 2011 New Revision: 1060530 URL: http://svn.apache.org/viewvc?rev=1060530&view=rev Log: Allow reference to xsi attribute in schema documents (per XML Schema 1.1).
Ref, the recent discussion on xerces-dev list - http://markmail.org/message/sjo34dqenmhyzeno. Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaGrammar.java xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDHandler.java Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaGrammar.java URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaGrammar.java?rev=1060530&r1=1060529&r2=1060530&view=diff ============================================================================== --- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaGrammar.java (original) +++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaGrammar.java Tue Jan 18 18:46:56 2011 @@ -1362,6 +1362,7 @@ public class SchemaGrammar implements XS // the grammars to hold components of the schema-instance namespace public final static BuiltinSchemaGrammar SG_XSI = new BuiltinSchemaGrammar(GRAMMAR_XSI, Constants.SCHEMA_VERSION_1_0); + private final static BuiltinSchemaGrammar SG_XSI11 = new BuiltinSchemaGrammar(GRAMMAR_XSI, Constants.SCHEMA_VERSION_1_1); public static SchemaGrammar getS4SGrammar(short schemaVersion) { if (schemaVersion == Constants.SCHEMA_VERSION_1_0) { @@ -1373,6 +1374,14 @@ public class SchemaGrammar implements XS return SG_SchemaNSExtended; } + + public static SchemaGrammar getXSIGrammar(short schemaVersion) { + if (schemaVersion == Constants.SCHEMA_VERSION_1_1) { + return SG_XSI11; + } + + return SG_XSI; + } static final XSComplexTypeDecl[] resize(XSComplexTypeDecl[] oldArray, int newSize) { XSComplexTypeDecl[] newArray = new XSComplexTypeDecl[newSize]; 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=1060530&r1=1060529&r2=1060530&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 Tue Jan 18 18:46:56 2011 @@ -1793,6 +1793,17 @@ public class XSDHandler { } } + // XML Schema 1.1 allows reference to xsi attributes + if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1 && + declType == ATTRIBUTE_TYPE && + declToTraverse.uri == SchemaSymbols.URI_XSI) { + SchemaGrammar xsiGrammar = SchemaGrammar.getXSIGrammar(fSchemaVersion); + Object retObj = xsiGrammar.getGlobalAttributeDecl(declToTraverse.localpart); + if (retObj != null) { + return retObj; + } + } + // now check whether this document can access the requsted namespace if (!currSchema.isAllowedNS(declToTraverse.uri)) { // cannot get to this schema from the one containing the requesting decl --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
