You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by kn...@apache.org on 2011/01/18 19:46:56 UTC

svn commit: r1060530 - in /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs: SchemaGrammar.java traversers/XSDHandler.java

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: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org