You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mu...@apache.org on 2010/02/03 09:12:06 UTC

svn commit: r905928 - /xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java

Author: mukulg
Date: Wed Feb  3 08:12:05 2010
New Revision: 905928

URL: http://svn.apache.org/viewvc?rev=905928&view=rev
Log:
adding support for recursive model groups (like xs:choice & xs:sequence), during XSModel serialization

Modified:
    xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java

Modified: xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java?rev=905928&r1=905927&r2=905928&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/samples/xs/XSSerializer.java Wed Feb  3 08:12:05 2010
@@ -424,8 +424,8 @@
     } // end of, processGlobalAttrDecl
 
     /*
-     * Add attribute declaration to a Schema component (like, xs:schema or
-     * xs:complexType).
+     * Add attribute declaration to a Schema component (like xs:schema, 
+     * xs:complexType, ).
      */
     private void addAttributeToSchemaComponent(Document document,
                                                Element parentDomNode,
@@ -639,12 +639,12 @@
         if (particleTerm instanceof XSModelGroup) {
             XSModelGroup modelGroup = (XSModelGroup) particleTerm;
             if (modelGroup.getCompositor() == XSModelGroup.COMPOSITOR_SEQUENCE) {
-                addCompositorOnComplexType(document, complxTypeDomNode,
-                                           modelGroup, "sequence");
+                addCompositorOnSchemaComponent(document, complxTypeDomNode,
+                                               modelGroup, "sequence");
             }
             else if (modelGroup.getCompositor() == XSModelGroup.COMPOSITOR_CHOICE) {
-                addCompositorOnComplexType(document, complxTypeDomNode,
-                                           modelGroup, "choice");
+                addCompositorOnSchemaComponent(document, complxTypeDomNode,
+                                               modelGroup, "choice");
             }
             else if (modelGroup.getCompositor() == XSModelGroup.COMPOSITOR_ALL) {
                 addAllCompositorOnComplexType(document, complxTypeDomNode,
@@ -657,13 +657,13 @@
     /*
      * Adding a "sequence" or "choice" compositor on a complex type
      */
-    private void addCompositorOnComplexType(Document document,
-                                            Element complxTypeDomNode,
+    private void addCompositorOnSchemaComponent(Document document,
+                                            Element parentDomNode,
                                             XSModelGroup modelGroup,
                                             String compositor)
                                             throws DOMException {
         
-        Element sequenceDeclDomNode = document.createElementNS(
+        Element compositorDomNode = document.createElementNS(
                                                XSD_LANGUAGE_URI,
                                                XSD_LANGUAGE_PREFIX
                                                + compositor);
@@ -678,18 +678,37 @@
             if (partclTerm instanceof XSElementDeclaration) {
                XSElementDecl elemDecl = (XSElementDecl) partclTerm;
                addElementDeclToSchemaComponent(document,
-                                               sequenceDeclDomNode,
+                                               compositorDomNode,
                                                elemDecl,
                                                minOccurs,
                                                maxOccurs,
                                                false);
             }
+            else if (partclTerm instanceof XSModelGroup) {
+                // Recursively adding model groups
+                XSModelGroup partlModelGroup = (XSModelGroup) partclTerm;
+                if (modelGroup.getCompositor() == 
+                                XSModelGroup.COMPOSITOR_CHOICE) {
+                    addCompositorOnSchemaComponent(document, compositorDomNode,
+                                                   partlModelGroup, "choice"); 
+                }
+                else if (modelGroup.getCompositor() == 
+                                XSModelGroup.COMPOSITOR_SEQUENCE) {
+                    addCompositorOnSchemaComponent(document, compositorDomNode,
+                                                   partlModelGroup, "sequence");  
+                }
+            }
+            else if (partclTerm instanceof XSWildcard) {
+                addWildcardToSchemaComponent(document,
+                                             compositorDomNode,
+                                             (XSWildcardDecl) partclTerm,
+                                             "any");   
+            }
             
-            // handle more compositor children like, group | choice |
-            // sequence | any ... 
+            // handle more compositor children like, group ... 
         }
         
-        complxTypeDomNode.appendChild(sequenceDeclDomNode);
+        parentDomNode.appendChild(compositorDomNode);
         
     } // end of, addCompositorOnComplexType
     
@@ -834,7 +853,7 @@
     } // end of, addUnionDeclToSimpleType
     
     /*
-     * Find name of a facet given it's kind
+     * Get name of a facet given it's kind
      */
     private String getFacetName(short facetKind) {
       if (facetKind == XSSimpleTypeDefinition.FACET_MINEXCLUSIVE) {



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