Author: mukulg Date: Mon Jul 25 13:54:04 2011 New Revision: 1150701 URL: http://svn.apache.org/viewvc?rev=1150701&view=rev Log: improving XSSerializer utility. adding option to serialize <anyAttribute/> declaration on complexType definition, and improving serialization of <any/> wild-card.
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=1150701&r1=1150700&r2=1150701&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 Mon Jul 25 13:54:04 2011 @@ -187,8 +187,8 @@ public class XSSerializer { DocumentBuilder dBuilder = dbf.newDocumentBuilder(); Document document = dBuilder.newDocument(); - Element schemaDeclDomNode = document.createElementNS(XSD_LANGUAGE_URI, XSD_LANGUAGE_PREFIX + SchemaSymbols.ELT_SCHEMA); - + Element schemaDeclDomNode = document.createElementNS(XSD_LANGUAGE_URI, XSD_LANGUAGE_PREFIX + SchemaSymbols.ELT_SCHEMA); + document.appendChild(schemaDeclDomNode); // process global element declarations @@ -253,9 +253,10 @@ public class XSSerializer { addAttributeToSchemaComponent(document, attrGpDomNode, attrDecl, constraintName, constraintVal, requiredVal); } + // possible serialization of <anyAttribute/> XSWildcard attrWildCard = attrGpDecl.getAttributeWildcard(); if (attrWildCard != null) { - addWildcardToSchemaComponent(document, attrGpDomNode, (XSWildcardDecl) attrWildCard, SchemaSymbols.ELT_ANYATTRIBUTE); + addWildcardToSchemaComponent(document, attrGpDomNode, (XSWildcardDecl) attrWildCard, SchemaSymbols.ELT_ANYATTRIBUTE, null, null); } schemaDeclDomNode.appendChild(attrGpDomNode); @@ -446,7 +447,7 @@ public class XSSerializer { */ private void processGlobalComplexTypeDecl(XSNamedMap globalComplexTypeDecls, Document document, Element schemaDeclDomNode) throws DOMException { - // iterating global complex types in the Schema + // iterating global complex type definitions in the Schema. // leaving out built-in Schema type, "anyType" from iteration for (int ctIdx = 0; ctIdx < globalComplexTypeDecls.size() - 1; ctIdx++) { XSComplexTypeDecl complexTypeDecl = (XSComplexTypeDecl) globalComplexTypeDecls.item(ctIdx); @@ -701,7 +702,7 @@ public class XSSerializer { /* - * Add child content to complex type declaration. + * Add child content to complex type definition. */ private void addChildrenToComplexType(Document document, Element parentDomNode, XSComplexTypeDecl complexTypeDecl, Element complexTypeDomNode) throws DOMException { @@ -890,6 +891,12 @@ public class XSSerializer { addAttributeToSchemaComponent(document, parentDomNode, attrDecl, constraintName, constraintVal, requiredVal); } } + + // possible serialization of <anyAttribute/> + XSWildcard attrWildCard = complexTypeDecl.getAttributeWildcard(); + if (attrWildCard != null) { + addWildcardToSchemaComponent(document, parentDomNode, (XSWildcardDecl) attrWildCard, SchemaSymbols.ELT_ANYATTRIBUTE, null, null); + } } // addAttributesToComplexType @@ -955,7 +962,7 @@ public class XSSerializer { } } else if (partclTerm instanceof XSWildcard) { - addWildcardToSchemaComponent(document, compositorDomNode, (XSWildcardDecl) partclTerm, SchemaSymbols.ELT_ANY); + addWildcardToSchemaComponent(document, compositorDomNode, (XSWildcardDecl) partclTerm, SchemaSymbols.ELT_ANY, minOccursParticle, maxOccursParticle); } } @@ -989,7 +996,7 @@ public class XSSerializer { } else if (partclTerm instanceof XSWildcard) { XSWildcardDecl wildCardDecl = (XSWildcardDecl) partclTerm; - addWildcardToSchemaComponent(document, allDeclDomNode, wildCardDecl, SchemaSymbols.ELT_ANY); + addWildcardToSchemaComponent(document, allDeclDomNode, wildCardDecl, SchemaSymbols.ELT_ANY, minOccursParticle, maxOccursParticle); } } @@ -1001,12 +1008,18 @@ public class XSSerializer { /* * Adding wild-card to a Schema component. */ - private void addWildcardToSchemaComponent(Document document, Element parentNode, XSWildcardDecl wildCardDecl, String wildCardType) { + private void addWildcardToSchemaComponent(Document document, Element parentNode, XSWildcardDecl wildCardDecl, String wildCardType, String minOccurs, String maxOccurs) { Element wildCardDomNode = document.createElementNS(XSD_LANGUAGE_URI, XSD_LANGUAGE_PREFIX + wildCardType); String processContentsVal = wildCardDecl.getProcessContentsAsString(); if (!processContentsVal.equals(SchemaSymbols.ATTVAL_STRICT)) { wildCardDomNode.setAttributeNS(null, SchemaSymbols.ATT_PROCESSCONTENTS, processContentsVal); } + if (minOccurs != null) { + wildCardDomNode.setAttributeNS(null, SchemaSymbols.ATT_MINOCCURS, minOccurs); + } + if (maxOccurs != null) { + wildCardDomNode.setAttributeNS(null, SchemaSymbols.ATT_MAXOCCURS, maxOccurs); + } parentNode.appendChild(wildCardDomNode); } // addWildcardToSchemaComponent --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@xerces.apache.org For additional commands, e-mail: commits-h...@xerces.apache.org