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 2008/09/15 18:00:38 UTC

svn commit: r695518 [2/2] - in /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces: impl/msg/ impl/xs/ impl/xs/traversers/ xs/

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java?rev=695518&r1=695517&r2=695518&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java Mon Sep 15 09:00:36 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.xerces.impl.xs.traversers;
 
+import org.apache.xerces.impl.Constants;
 import org.apache.xerces.impl.dv.InvalidDatatypeFacetException;
 import org.apache.xerces.impl.dv.SchemaDVFactory;
 import org.apache.xerces.impl.dv.XSFacets;
@@ -29,6 +30,7 @@
 import org.apache.xerces.impl.xs.XSComplexTypeDecl;
 import org.apache.xerces.impl.xs.XSConstraints;
 import org.apache.xerces.impl.xs.XSModelGroupImpl;
+import org.apache.xerces.impl.xs.XSOpenContentDecl;
 import org.apache.xerces.impl.xs.XSParticleDecl;
 import org.apache.xerces.impl.xs.XSWildcardDecl;
 import org.apache.xerces.impl.xs.util.XInt;
@@ -65,7 +67,7 @@
 class  XSDComplexTypeTraverser extends XSDAbstractParticleTraverser {
     
     // size of stack to hold globals:
-    private final static int GLOBAL_NUM = 11;
+    private final static int GLOBAL_NUM = 12;
     
     // globals for building XSComplexTypeDecls
     private String fName = null;
@@ -81,6 +83,7 @@
     private boolean fIsAbstract = false;
     private XSComplexTypeDecl fComplexTypeDecl = null;
     private XSAnnotationImpl [] fAnnotations = null;
+    private XSOpenContentDecl fOpenContent = null;
     
     private XSParticleDecl fEmptyParticle = null;
     
@@ -173,8 +176,74 @@
         
         return type;
     }
-    
-    
+
+    XSOpenContentDecl traverseOpenContent(Element elmNode,
+            XSDocumentInfo schemaDoc,
+            SchemaGrammar grammar,
+            boolean isDefault) {
+
+        // General Attribute Checking for elmNode
+        Object[] attrValues = fAttrChecker.checkAttributes(elmNode, false, schemaDoc);
+
+        // Create open content declaration
+        XSOpenContentDecl ocDecl = new XSOpenContentDecl();
+
+        // get attribute values
+        final XInt modeAttr = (XInt) attrValues[XSAttributeChecker.ATTIDX_MODE];
+        final short ocMode = modeAttr.shortValue();
+        
+        if (isDefault) {
+        	final Boolean appliesToEmptyAttr = ((Boolean) attrValues[XSAttributeChecker.ATTIDX_APPLIESTOEMPTY]);
+        	ocDecl.fAppliesToEmpty = appliesToEmptyAttr.booleanValue();
+        }
+        ocDecl.fMode = ocMode;
+
+        // ---------------------------------------------------------------
+        // First, handle any ANNOTATION declaration and get next child
+        // ---------------------------------------------------------------
+        Element child = DOMUtil.getFirstChildElement(elmNode);
+        if (child != null) {
+            if (DOMUtil.getLocalName(child).equals(SchemaSymbols.ELT_ANNOTATION)) {
+                addAnnotation(traverseAnnotationDecl(child, attrValues, false, schemaDoc));
+                child = DOMUtil.getNextSiblingElement(child);
+            }
+            else {
+                String text = DOMUtil.getSyntheticAnnotation(elmNode);
+                if (text != null) {
+                    addAnnotation(traverseSyntheticAnnotation(elmNode, text, attrValues, false, schemaDoc));
+                }
+            }
+            if (child !=null && DOMUtil.getLocalName(child).equals(SchemaSymbols.ELT_ANNOTATION)) {
+                reportSchemaError("s4s-elt-invalid-content.1",
+                        new Object[]{SchemaSymbols.ELT_OPENCONTENT,SchemaSymbols.ELT_ANNOTATION}, child);
+            }
+        }
+        else {
+            String text = DOMUtil.getSyntheticAnnotation(elmNode);
+            if (text != null) {
+                addAnnotation(traverseSyntheticAnnotation(elmNode, text, attrValues, false, schemaDoc));
+            }
+        }
+
+        // ---------------------------------------------------------------
+        // Process the wildcard
+        // ---------------------------------------------------------------
+        if (child == null) {
+            if (ocMode != XSOpenContentDecl.MODE_NONE) {
+                reportSchemaError("src-ct.6", new Object[]{fName}, elmNode);
+            }
+        }
+        else {
+            Object[] wcAttrValues = fAttrChecker.checkAttributes(child, false, schemaDoc);
+            ocDecl.fWildcard = fSchemaHandler.fWildCardTraverser.traverseWildcardDecl(child, wcAttrValues, schemaDoc, grammar);
+            fAttrChecker.returnAttrArray(wcAttrValues, schemaDoc);
+        }
+
+        fAttrChecker.returnAttrArray(attrValues, schemaDoc);
+
+        return ocDecl;
+    }
+
     private XSComplexTypeDecl traverseComplexTypeDecl(Element complexTypeDecl,
             String complexTypeName,
             Object[] attrValues,
@@ -200,6 +269,7 @@
         
         fIsAbstract = (abstractAtt != null && abstractAtt.booleanValue());
         fAnnotations = null;
+        fOpenContent = null;
         
         Element child = null;
         
@@ -297,7 +367,7 @@
         fComplexTypeDecl.setValues(fName, fTargetNamespace, fBaseType,
                 fDerivedBy, fFinal, fBlock, fContentType, fIsAbstract,
                 fAttrGrp, fXSSimpleType, fParticle, new XSObjectListImpl(fAnnotations, 
-                        fAnnotations == null? 0 : fAnnotations.length));
+                        fAnnotations == null? 0 : fAnnotations.length), fOpenContent);
         return fComplexTypeDecl;
     }
     
@@ -634,12 +704,10 @@
             boolean mixedOnType, XSDocumentInfo schemaDoc,
             SchemaGrammar grammar)
     throws ComplexTypeRecoverableError {
-        
-        
+
         Object[] complexContentAttrValues = fAttrChecker.checkAttributes(complexContentElement, false,
                 schemaDoc);
-        
-        
+
         // -----------------------------------------------------------------------
         // Determine if this is mixed content
         // -----------------------------------------------------------------------
@@ -647,15 +715,14 @@
         Boolean mixedAtt     = (Boolean) complexContentAttrValues[XSAttributeChecker.ATTIDX_MIXED];
         if (mixedAtt != null) {
             mixedContent = mixedAtt.booleanValue();
-        }
-        
-        
+        }        
+
         // -----------------------------------------------------------------------
         // Since the type must have complex content, set the simple type validators
         // to null
         // -----------------------------------------------------------------------
         fXSSimpleType = null;
-        
+
         Element complexContent = DOMUtil.getFirstChildElement(complexContentElement);
         if (complexContent != null && DOMUtil.getLocalName(complexContent).equals(SchemaSymbols.ELT_ANNOTATION)) {
             addAnnotation(traverseAnnotationDecl(complexContent, complexContentAttrValues, false, schemaDoc));
@@ -667,7 +734,7 @@
                 addAnnotation(traverseSyntheticAnnotation(complexContentElement, text, complexContentAttrValues, false, schemaDoc));
             }
         }
-        
+
         // If there are no children, return
         if (complexContent==null) {
             fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
@@ -675,7 +742,7 @@
                     new Object[]{fName,SchemaSymbols.ELT_COMPLEXCONTENT},
                     complexContentElement);
         }
-        
+
         // -----------------------------------------------------------------------
         // The content should be either "restriction" or "extension"
         // -----------------------------------------------------------------------
@@ -696,12 +763,11 @@
             throw new ComplexTypeRecoverableError("s4s-elt-invalid-content.1",
                     new Object[]{fName, siblingName}, elemTmp);
         }
-        
+
         Object[] derivationTypeAttrValues = fAttrChecker.checkAttributes(complexContent, false,
                 schemaDoc);
         QName baseTypeName = (QName)  derivationTypeAttrValues[XSAttributeChecker.ATTIDX_BASE];
-        
-        
+
         // -----------------------------------------------------------------------
         // Need a base type.  Check that it's a complex type
         // -----------------------------------------------------------------------
@@ -711,18 +777,18 @@
             throw new ComplexTypeRecoverableError("s4s-att-must-appear",
                     new Object[]{complexContentName, "base"}, complexContent);
         }
-        
+
         XSTypeDefinition type = (XSTypeDefinition)fSchemaHandler.getGlobalDecl(schemaDoc,
                 XSDHandler.TYPEDECL_TYPE,
                 baseTypeName,
                 complexContent);
-        
+
         if (type==null) {
             fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
             fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
             throw new ComplexTypeRecoverableError();
         }
-        
+
         if (! (type instanceof XSComplexTypeDecl)) {
             fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
             fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
@@ -731,7 +797,7 @@
         }
         XSComplexTypeDecl baseType = (XSComplexTypeDecl)type;
         fBaseType = baseType;
-        
+
         // -----------------------------------------------------------------------
         // Check that the base permits the derivation
         // -----------------------------------------------------------------------
@@ -743,12 +809,12 @@
             throw new ComplexTypeRecoverableError(errorKey,
                     new Object[]{fName, fBaseType.getName()}, complexContent);
         }
-        
+
         // -----------------------------------------------------------------------
         // Skip over any potential annotations
         // -----------------------------------------------------------------------
         complexContent = DOMUtil.getFirstChildElement(complexContent);
-        
+
         if (complexContent != null) {
             // traverse annotation if any
             if (DOMUtil.getLocalName(complexContent).equals(SchemaSymbols.ELT_ANNOTATION)) {
@@ -787,20 +853,21 @@
             fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
             throw e;
         }
-        
+
         // -----------------------------------------------------------------------
         // Compose the final content and attribute uses
         // -----------------------------------------------------------------------
         XSParticleDecl baseContent = (XSParticleDecl)baseType.getParticle();
+        // XML Schema 1.1
+        XSOpenContentDecl explicitOpenContent = null;
+
         if (fDerivedBy==XSConstants.DERIVATION_RESTRICTION) {
-            
+
             // This is an RESTRICTION
-            
+
             // N.B. derivation-ok-restriction.5.3 is checked under schema
             // full checking.   That's because we need to wait until locals are
             // traversed so that occurrence information is correct.
-            
-            
             if (fContentType == XSComplexTypeDecl.CONTENTTYPE_MIXED &&
                     baseType.getContentType() != XSComplexTypeDecl.CONTENTTYPE_MIXED) {
                 fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
@@ -809,7 +876,7 @@
                         new Object[]{fName, baseType.getName()},
                         complexContent);
             }
-            
+
             try {
                 mergeAttributes(baseType.getAttrGrp(), fAttrGrp, fName, false, complexContent);
             } catch (ComplexTypeRecoverableError e) {
@@ -819,7 +886,7 @@
             }
             // Remove prohibited uses.   Must be done after merge for RESTRICTION.
             fAttrGrp.removeProhibitedAttrs();
-            
+
             if (baseType != SchemaGrammar.fAnyType) {
                 Object[] errArgs = fAttrGrp.validRestrictionOf(fName, baseType.getAttrGrp());
                 if (errArgs != null) {
@@ -839,6 +906,9 @@
                 fContentType = baseType.getContentType();
                 fXSSimpleType = (XSSimpleType)baseType.getSimpleType();
                 fParticle = baseContent;
+                if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
+                    explicitOpenContent = (XSOpenContentDecl) baseType.getOpenContent();
+                }
             }
             else if (baseType.getContentType() == XSComplexTypeDecl.CONTENTTYPE_EMPTY) {
             }
@@ -886,6 +956,9 @@
                 particle.fAnnotations = XSObjectListImpl.EMPTY_LIST; 
                 
                 fParticle = particle;
+                if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
+                    explicitOpenContent = (XSOpenContentDecl) baseType.getOpenContent();
+                }
             }
             
             // Remove prohibited uses.   Must be done before merge for EXTENSION.
@@ -897,16 +970,108 @@
                 fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
                 throw e;
             }
-            
         }
-        
+
+        //------------------------------------------------------------------------
+        // XML Schema 1.1
+        // Applies open content, if present
+        //------------------------------------------------------------------------
+        if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1) {
+            XSOpenContentDecl baseOpenContent = (XSOpenContentDecl) baseType.getOpenContent();
+
+            // Let the wildcard element be  the appropriate case among the following:
+            //    5.1 If the <openContent> [child] is present , then the <openContent> [child].
+            //    5.2 If the <openContent> [child] is not present, the <schema> ancestor has an <defaultOpenContent> [child], and one of the following is true
+            //      5.2.1 the {variety} of the explicit content type is not empty
+            //      5.2.2 the {variety} of the explicit content type is empty and the actual value of the appliesToEmpty [attribute] is true
+            //      , then the <defaultOpenContent> [child] of the <schema>.
+            //    5.3 otherwise absent.
+            if (fOpenContent == null) {
+                if (schemaDoc.fDefaultOpenContent != null) {
+                    if (fContentType != XSComplexTypeDecl.CONTENTTYPE_EMPTY || schemaDoc.fDefaultOpenContent.fAppliesToEmpty) {
+                        fOpenContent = schemaDoc.fDefaultOpenContent;
+                    }
+                }
+            }
+
+            // If the wildcard element is not absent
+            if (fOpenContent != null) {
+                // 6.2 If the actual value of its mode [attribute] is 'none', then an absent {open content}
+                if (fOpenContent.fMode == XSOpenContentDecl.MODE_NONE) {
+                    fOpenContent = null;
+                }
+                // 6.3 If the {variety} is empty, then a Particle as follows:
+                //   {min occurs} 1
+                //   {max occurs} 1
+                //   {term}       a model group whose {compositor} is sequence and whose {particles} is empty.
+                else if (fContentType == XSComplexTypeDecl.CONTENTTYPE_EMPTY) {
+                    if (fEmptyParticle == null) {
+                        XSModelGroupImpl group = new XSModelGroupImpl();
+                        group.fCompositor = XSModelGroupImpl.MODELGROUP_SEQUENCE;
+                        group.fParticleCount = 0;
+                        group.fParticles = null;
+                        group.fAnnotations = XSObjectListImpl.EMPTY_LIST;
+                        fEmptyParticle = new XSParticleDecl();
+                        fEmptyParticle.fType = XSParticleDecl.PARTICLE_MODELGROUP;
+                        fEmptyParticle.fValue = group;
+                        fEmptyParticle.fAnnotations = XSObjectListImpl.EMPTY_LIST;
+                    }
+                    fParticle = fEmptyParticle;
+                    fContentType = XSComplexTypeDecl.CONTENTTYPE_ELEMENT;
+                }
+            }
+            // 6.1 If the wildcard element is absent, then the explicit open content.
+            else {
+                fOpenContent = explicitOpenContent;
+            }
+
+            if (fDerivedBy == XSConstants.DERIVATION_EXTENSION && baseType.getContentType() != XSComplexTypeDecl.CONTENTTYPE_EMPTY) {
+
+            	// 1.4.3.2.2.3  One or more of the following is true:
+                //    1.4.3.2.2.3.1 B.{content type}.{open content} (call it BOT) is absent.
+                //    1.4.3.2.2.3.2 T.{content type}.{open content} (call it EOT) has {mode} interleave.
+                //    1.4.3.2.2.3.3 Both BOT and EOT have {mode} suffix.
+                //    1.4.3.2.2.4 If neither BOT nor EOT is absent, then BOT.{wildcard}.{namespace constraint} is a subset
+                //                of EOT.{wildcard}.{namespace constraint}, as defined by Wildcard Subset (3.10.6.2).
+
+                if (baseOpenContent != null && fOpenContent != baseOpenContent) {
+                    // {open content} had a mode of 'none'
+                    if (fOpenContent == null) {
+                    	fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
+                        fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
+                    	throw new ComplexTypeRecoverableError("cos-ct-extends.1.4.3.2.2.3",
+                                new Object[]{fName}, complexContent);
+                    }
+                    else {
+                    	// 1.4.3.2.2.3.2
+                    	// 1.4.3.2.2.3.3
+                        if (fOpenContent.fMode == XSOpenContentDecl.MODE_SUFFIX) {
+                            if (baseOpenContent.fMode != XSOpenContentDecl.MODE_SUFFIX) {
+                            	fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
+                                fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
+                            	throw new ComplexTypeRecoverableError("cos-ct-extends.1.4.3.2.2.3.3",
+                                        new Object[]{fName}, complexContent);
+                            }
+                        }
+
+                        // 1.4.3.2.2.4
+                        if (!baseOpenContent.fWildcard.isSubsetOf(fOpenContent.fWildcard)) {
+                        	fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
+                            fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
+                        	throw new ComplexTypeRecoverableError("cos-ct-extends.1.4.3.2.2.3.4",
+                                    new Object[]{fName}, complexContent);
+                        }
+                    }
+                }
+            }
+        } // end of fSchema11Support
+
         // and *finally* we can legitimately return the attributes!
         fAttrChecker.returnAttrArray(complexContentAttrValues, schemaDoc);
         fAttrChecker.returnAttrArray(derivationTypeAttrValues, schemaDoc);
         
     } // end of traverseComplexContent
     
-    
     // This method merges attribute uses from the base, into the derived set.
     // The first duplicate attribute, if any, is returned.
     // LM: may want to merge with attributeGroup processing.
@@ -971,13 +1136,20 @@
         boolean emptyParticle = false;
         if (complexContentChild != null) {
             // -------------------------------------------------------------
-            // GROUP, ALL, SEQUENCE or CHOICE, followed by attributes, if specified.
+            // OPENCONTENT?, followed by GROUP, ALL, SEQUENCE or CHOICE, 
+            //   followed by attributes, if specified, followed by
+            //   assertions if specified.
             // Note that it's possible that only attributes are specified.
             // -------------------------------------------------------------
-            
-            
             String childName = DOMUtil.getLocalName(complexContentChild);
-            
+
+            // XML Schema 1.1
+            if (fSchemaHandler.fSchemaVersion == Constants.SCHEMA_VERSION_1_1 && childName.equals(SchemaSymbols.ELT_OPENCONTENT)) {
+                fOpenContent = traverseOpenContent(complexContentChild, schemaDoc, grammar, false);
+                complexContentChild = DOMUtil.getNextSiblingElement(complexContentChild);
+                childName = DOMUtil.getLocalName(complexContentChild);
+            }
+
             if (childName.equals(SchemaSymbols.ELT_GROUP)) {
                 
                 particle = fSchemaHandler.fGroupTraverser.traverseLocal(complexContentChild,
@@ -1199,9 +1371,11 @@
         fGlobalStore[fGlobalStorePos++] = fParticle;
         fGlobalStore[fGlobalStorePos++] = fXSSimpleType;
         fGlobalStore[fGlobalStorePos++] = fAnnotations;
+        fGlobalStore[fGlobalStorePos++] = fOpenContent;
     }
     
     private void contentRestore() {
+        fOpenContent = (XSOpenContentDecl)fGlobalStore[--fGlobalStorePos];
         fAnnotations = (XSAnnotationImpl [])fGlobalStore[--fGlobalStorePos];
         fXSSimpleType = (XSSimpleType)fGlobalStore[--fGlobalStorePos];
         fParticle = (XSParticleDecl)fGlobalStore[--fGlobalStorePos];

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=695518&r1=695517&r2=695518&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 Mon Sep 15 09:00:36 2008
@@ -45,6 +45,7 @@
 import org.apache.xerces.impl.xs.XSGroupDecl;
 import org.apache.xerces.impl.xs.XSMessageFormatter;
 import org.apache.xerces.impl.xs.XSModelGroupImpl;
+import org.apache.xerces.impl.xs.XSOpenContentDecl;
 import org.apache.xerces.impl.xs.XSParticleDecl;
 import org.apache.xerces.impl.xs.opti.ElementImpl;
 import org.apache.xerces.impl.xs.opti.SchemaDOMParser;
@@ -1194,14 +1195,25 @@
                     //DOMUtil.setHidden(globalComp);
                 }
                 else {
-                    dependenciesCanOccur = false;
                     String lName = DOMUtil.getAttrValue(globalComp, SchemaSymbols.ATT_NAME);
+                    String componentType = DOMUtil.getLocalName(globalComp);
+
+                    // In XML Schema 1.1, a defaultOpenContent element may occur
+                    if (componentType.equals(SchemaSymbols.ELT_DEFAULTOPENCONTENT)) {
+                        if (fSchemaVersion < Constants.SCHEMA_VERSION_1_1 || !dependenciesCanOccur) {
+                            reportSchemaError("s4s-elt-invalid-content.3", new Object [] {componentType}, globalComp);
+                        }
+                        // skip it; traverse it later
+                        dependenciesCanOccur = false;
+                        continue;
+                    }
+                    
+                    dependenciesCanOccur = false;
                     if (lName.length() == 0) // an error we'll catch later
                         continue;
                     String qName = currSchemaDoc.fTargetNamespace == null?
                             ","+lName:
                                 currSchemaDoc.fTargetNamespace +","+lName;
-                    String componentType = DOMUtil.getLocalName(globalComp);
                     if (componentType.equals(SchemaSymbols.ELT_ATTRIBUTE)) {
                         checkForDuplicateNames(qName, fUnparsedAttributeRegistry, fUnparsedAttributeRegistrySub, globalComp, currSchemaDoc);
                     }
@@ -1331,6 +1343,9 @@
                     currSG.addAnnotation(fElementTraverser.traverseAnnotationDecl(globalComp, currSchemaDoc.getSchemaAttrs(), true, currSchemaDoc));
                     sawAnnotation = true;
                 }
+                else if (fSchemaVersion == Constants.SCHEMA_VERSION_1_1 && componentType.equals(SchemaSymbols.ELT_DEFAULTOPENCONTENT)) {
+                    currSchemaDoc.fDefaultOpenContent = fComplexTypeTraverser.traverseOpenContent(globalComp, currSchemaDoc, currSG, true);
+                }
                 else {
                     reportSchemaError("s4s-elt-invalid-content.1", new Object [] {SchemaSymbols.ELT_SCHEMA, DOMUtil.getLocalName(globalComp)}, globalComp);
                 }

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDocumentInfo.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDocumentInfo.java?rev=695518&r1=695517&r2=695518&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDocumentInfo.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDocumentInfo.java Mon Sep 15 09:00:36 2008
@@ -24,6 +24,7 @@
 import org.apache.xerces.impl.xs.SchemaNamespaceSupport;
 import org.apache.xerces.impl.xs.SchemaSymbols;
 import org.apache.xerces.impl.xs.XMLSchemaException;
+import org.apache.xerces.impl.xs.XSOpenContentDecl;
 import org.apache.xerces.impl.xs.util.XInt;
 import org.apache.xerces.util.SymbolTable;
 import org.w3c.dom.Element;
@@ -84,6 +85,9 @@
     // once removeAnnotations has been called.
     protected XSAnnotationInfo fAnnotations = null;
 
+    // defaultOpenContent
+    XSOpenContentDecl fDefaultOpenContent = null;
+
     // note that the caller must ensure to call returnSchemaAttrs()
     // to avoid memory leaks!
     XSDocumentInfo (Element schemaRoot, XSAttributeChecker attrChecker, SymbolTable symbolTable)

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSComplexTypeDefinition.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSComplexTypeDefinition.java?rev=695518&r1=695517&r2=695518&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSComplexTypeDefinition.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSComplexTypeDefinition.java Mon Sep 15 09:00:36 2008
@@ -110,4 +110,9 @@
      */
     public XSObjectList getAnnotations();
 
+    /**
+     * An open content
+     */
+    public XSOpenContent getOpenContent();
+
 }

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSConstants.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSConstants.java?rev=695518&r1=695517&r2=695518&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSConstants.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSConstants.java Mon Sep 15 09:00:36 2008
@@ -90,6 +90,11 @@
      */
     public static final short ASSERTION                 = 16;
 
+    /**
+     * The object describes an openContent
+     */
+    public static final short OPEN_CONTENT              = 17;
+
     // Derivation constants
     /**
      * No constraint is available.

Added: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSOpenContent.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSOpenContent.java?rev=695518&view=auto
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSOpenContent.java (added)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSOpenContent.java Mon Sep 15 09:00:36 2008
@@ -0,0 +1,53 @@
+/*
+ * 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.xs;
+
+/**
+ * This interface represents an openContent.
+ * 
+ * @author Khaled Noaman, IBM
+ * @version $Id$
+ */
+public interface XSOpenContent extends XSObject {
+
+	/**
+     * Mode type
+     */
+    public static final short MODE_NONE       = 0;
+    public static final short MODE_INTERLEAVE = 1;
+    public static final short MODE_SUFFIX     = 2;
+
+    /**
+     * A mode type: none, interleave, suffix. 
+     */
+    public short getModeType();
+
+    /**
+     * A wildcard declaration
+     */
+    public XSWildcard getWildcard();
+    
+    /**
+     * A flag that indicates whether a default open content is applied
+     * when the content type of a complex type declaration is empty
+     */
+    // TODO: do we have two different implementations (i.e. XSOenContentDecl and XSDefaultOpenContentDecl)
+    //       and add that method only to XSDefaultOpenContentDecl
+    public boolean appliesToEmpty();
+
+}

Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSOpenContent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/xs/XSOpenContent.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org