You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by di...@apache.org on 2006/02/10 01:52:27 UTC

svn commit: r376517 [2/3] - in /webservices/commons/modules/XmlSchema: build.xml maven.xml project.xml src/org/apache/ws/commons/schema/XmlSchemaSerializer.java test/tests/TestElementRefs.java

Modified: webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java
URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java?rev=376517&r1=376516&r2=376517&view=diff
==============================================================================
--- webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java (original)
+++ webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java Thu Feb  9 16:52:26 2006
@@ -1,2551 +1,2552 @@
-/*
- * Copyright 2004,2005 The Apache Software Foundation.
- *
- * Licensed 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.ws.commons.schema;
-
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.namespace.QName;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-
-public class XmlSchemaSerializer {
-    private Hashtable schema_ns;
-
-    static String xsdPrefix = "xs";
-    public static final String xsdNamespace = "http://www.w3.org/2001/XMLSchema";
-    ArrayList docs;
-    Element schemaElement;
-
-    private XmlSchemaSerializer() {
-        docs = new ArrayList();
-        schema_ns = new Hashtable();
-    }
-
-    /**
-     * *********************************************************************
-     * Document[]  serializeSchema(XmlSchema schemaObj,
-     * boolean serializeIncluded)
-     * <p/>
-     * Serialize XmlSchema object pass back the document containing a schema
-     * element as its root.
-     * <p/>
-     * Parameter:
-     * schemaObj - Schema object to serialize.
-     * serialzeIncluded - whether to serialize the included(imported)
-     * schema or not. pass true for serialize all included
-     * schema.
-     * <p/>
-     * Return:
-     * Array of Documents that include/imported.
-     * **********************************************************************
-     */
-    public static Document[] serializeSchema(XmlSchema schemaObj,
-                                             boolean serializeIncluded) throws XmlSchemaSerializerException {
-        return new XmlSchemaSerializer().serializeSchemaElement(schemaObj,
-                                                                serializeIncluded);
-    }
-
-    Document[] serializeSchemaElement(XmlSchema schemaObj,
-                                      boolean serializeIncluded) throws XmlSchemaSerializerException {
-
-        XmlSchemaObjectCollection items = schemaObj.getItems();
-        Document serializedSchemaDocs = null;
-        try {
-            DocumentBuilderFactory docFac = DocumentBuilderFactory.newInstance();
-            docFac.setNamespaceAware(true);
-            DocumentBuilder builder = docFac.newDocumentBuilder();
-            serializedSchemaDocs = builder.newDocument();
-        } catch (ParserConfigurationException e) {
-            throw new XmlSchemaException(e.getMessage());
-        }
-
-        Element serializedSchema;
-
-        serializedSchema = setupNamespaces(serializedSchemaDocs, schemaObj);
-        schemaElement = serializedSchema;
-
-        if (schemaObj.targetNamespace != null) {
-            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                            "targetNamespace", schemaObj.targetNamespace);
-
-            Object targetNS =
-                    schema_ns.get(schemaObj.targetNamespace);
-            
-            //if the namespace is not entered then add 
-            //the targetNamespace as its
-            if (targetNS == null) {
-                serializedSchema.setAttributeNS("http://www.w3.org/2000/xmlns/",
-                                                "xmlns", schemaObj.targetNamespace);
-                schema_ns.put(schemaObj.targetNamespace.toString(), "");
-            }
-        }
-        
-        
-        //todo: implement xml:lang, 
-        if (schemaObj.attributeFormDefault != null) {
-            String formQualified = schemaObj.attributeFormDefault.getValue();
-
-            if (!formQualified.equals(XmlSchemaForm.NONE))
-                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                "attributeFormDefault", convertString(formQualified));
-        }
-
-        if (schemaObj.elementFormDefault != null) {
-            String formQualified = schemaObj.elementFormDefault.getValue();
-
-            if (!formQualified.equals(XmlSchemaForm.NONE))
-                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                "elementFormDefault", convertString(formQualified));
-        }
-
-
-        if (schemaObj.annotation != null) {
-            Element annotation = serializeAnnotation(serializedSchemaDocs,
-                                                     schemaObj.annotation, schemaObj);
-            serializedSchema.appendChild(annotation);
-        }
-        if (schemaObj.id != null) {
-            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
-                                            schemaObj.id);
-        }
-        if (schemaObj.blockDefault != null) {
-            String blockDefault = schemaObj.blockDefault.getValue();
-            if (!blockDefault.equals("None")) {
-                blockDefault = convertString(blockDefault);
-                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                "blockDefault", blockDefault);
-            }
-        }
-        if (schemaObj.finalDefault != null) {
-            String finalDefault = schemaObj.finalDefault.getValue();
-            if (!finalDefault.equals("None")) {
-                finalDefault = convertString(finalDefault);
-                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                "finalDefault", finalDefault);
-            }
-        }
-
-        if (schemaObj.version != null) {
-            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                            "version", schemaObj.version);
-        }
-        
-        //after serialize the schema add into documentation 
-        //and add to document collection array  which at the end 
-        //returned
-        serializeSchemaChild(items, serializedSchema, serializedSchemaDocs,
-                             schemaObj, serializeIncluded);
-
-        serializedSchemaDocs.appendChild(serializedSchema);
-        docs.add(serializedSchemaDocs);
-
-
-        Document[] serializedDocs = new Document[docs.size()];
-        docs.toArray(serializedDocs);
-
-        return serializedDocs;
-    }
-
-    private void serializeSchemaChild(XmlSchemaObjectCollection items,
-                                      Element serializedSchema, Document serializedSchemaDocs,
-                                      XmlSchema schemaObj, boolean serializeIncluded)
-            throws XmlSchemaSerializerException {
-
-        int itemsLength = items.getCount();
-        /**
-         * For each of the items that belong to this schema, 
-         * serialize each member found.  
-         * Permittable member is: element, simpleType, complexType,
-         * group, attrributeGroup, Attribute, include, import and redefine.
-         * if any of the member found then serialize the component.
-         */
-        for (int i = 0; i < itemsLength; i++) {
-            XmlSchemaObject obj = items.getItem(i);
-
-            if (obj instanceof XmlSchemaElement) {
-                Element e = serializeElement(serializedSchemaDocs,
-                                             (XmlSchemaElement) obj, schemaObj);
-                serializedSchema.appendChild(e);
-
-            } else if (obj instanceof XmlSchemaSimpleType) {
-                Element e = serializeSimpleType(serializedSchemaDocs,
-                                                (XmlSchemaSimpleType) obj, schemaObj);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaComplexType) {
-                Element e = serializeComplexType(serializedSchemaDocs,
-                                                 (XmlSchemaComplexType) obj, schemaObj);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaGroup) {
-                Element e = serializeGroup(serializedSchemaDocs,
-                                           (XmlSchemaGroup) obj, schemaObj);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaAttributeGroup) {
-                Element e = serializeAttributeGroup(serializedSchemaDocs,
-                                                    (XmlSchemaAttributeGroup) obj, schemaObj);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaAttribute) {
-                Element e = serializeAttribute(serializedSchemaDocs,
-                                               (XmlSchemaAttribute) obj, schemaObj);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaRedefine) {
-                Element e = serializeRedefine(serializedSchemaDocs,
-                                              (XmlSchemaRedefine) obj, schemaObj);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaInclude) {
-                Element e = serializeInclude(serializedSchemaDocs,
-                                             (XmlSchemaInclude) obj, schemaObj, serializeIncluded);
-                serializedSchema.appendChild(e);
-            } else if (obj instanceof XmlSchemaImport) {
-                Element e = serializeImport(serializedSchemaDocs,
-                                            (XmlSchemaImport) obj, schemaObj, serializeIncluded);
-                serializedSchema.appendChild(e);
-            }
-        }
-    }
-
-    /**
-     * Set up <schema> namespaces appropriately and append that attr
-     * into specified element
-     */
-    private Element setupNamespaces(Document schemaDocs, XmlSchema schemaObj) {
-        Enumeration prefixs = schemaObj.namespaces.keys();
-        Enumeration values = schemaObj.namespaces.elements();
-
-        /**
-         * check all namespace added and register all namespace in 
-         * hashtable.  When finish then set namespace to schema 
-         * element appropriatelly.
-         */
-        for (; prefixs.hasMoreElements() && values.hasMoreElements();) {
-            String namespace = values.nextElement().toString();
-            String prefix = prefixs.nextElement().toString();
-            /*
-             * if the prefix is there 
-             * check whether it is an xsd schema namespace
-             * set prefix and namespace to the default attribute
-             * then register the prefix on hashtable
-             */
-            if (/*prefix.trim().length()<1 &&*/ namespace.equals(xsdNamespace)) {
-                xsdPrefix = prefix;
-                schemaObj.schema_ns_prefix = xsdPrefix;
-            }
-
-            schema_ns.put(namespace, prefix);
-        }
-        //for schema that not set the xmlns attrib member
-        if (schema_ns.get(xsdNamespace) == null) {
-            schema_ns.put(xsdNamespace, xsdPrefix);
-            schemaObj.schema_ns_prefix = xsdPrefix;
-        }
-
-        Element schemaEl = createNewElement(schemaDocs, "schema",
-                                            schemaObj.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        Enumeration keys = schema_ns.keys();
-
-        while (keys.hasMoreElements()) {
-            //let it crash for null pointer because then either the schema
-            //is wrong(namespace not set properly or bug in setting ns)
-            String key = keys.nextElement().toString();
-            String value = schema_ns.get(key).toString();
-            value = (value.length() > 1) ? "xmlns:" + value : "xmlns";
-            schemaEl.setAttributeNS("http://www.w3.org/2000/xmlns/",
-                                    value, key);
-        }
-        return schemaEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
-     * XmlSchema schema)throws XmlSchemaSerializerException
-     * <p/>
-     * set appropriate attribute as per this object attribute availability.
-     * Call included schema to append to this schema document collection.
-     * Then add the document created into document pool.
-     * <p/>
-     * Parameter:
-     * doc          - Document the parent use.
-     * includeObj   - XmlSchemaInclude that will be serialized.
-     * schema       - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element object representation of XmlSchemaInclude
-     * **********************************************************************
-     */
-    Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
-                             XmlSchema schema, boolean serializeIncluded)
-            throws XmlSchemaSerializerException {
-
-        Element includeEl = createNewElement(doc, "include",
-                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (includeObj.schemaLocation != null) {
-            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
-                                     includeObj.schemaLocation);
-        }
-
-        if (includeObj.id != null)
-            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", includeObj.id);
-
-        if (includeObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     includeObj.annotation, schema);
-            includeEl.appendChild(annotation);
-        }
-
-        //Get the XmlSchema obj and append that to the content
-        XmlSchema includedSchemaObj = includeObj.getSchema();
-        if (includedSchemaObj != null && serializeIncluded) {
-            XmlSchemaSerializer includeSeri = new XmlSchemaSerializer();
-            includeSeri.serializeSchemaElement(includedSchemaObj, true);
-//            XmlSchemaObjectCollection ii = includedSchemaObj.getItems();
-            docs.addAll(includeSeri.docs);
-        }
-
-        return includeEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeImport(Document doc, XmlSchemaImport importObj,
-     * XmlSchema schema)throws XmlSchemaSerializerException
-     * <p/>
-     * Add each of the attribute of XmlSchemaImport obj into import Element
-     * Then serialize schema that is included by this import.  Include the
-     * serialized schema into document pool.
-     * <p/>
-     * Parameter:
-     * doc          - Document the parent use.
-     * includeObj   - XmlSchemaInclude that will be serialized.
-     * schema       - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element object representation of XmlSchemaImport
-     * **********************************************************************
-     */
-    Element serializeImport(Document doc, XmlSchemaImport importObj,
-                            XmlSchema schema, boolean serializeIncluded)
-            throws XmlSchemaSerializerException {
-
-        Element importEl = createNewElement(doc, "import",
-                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (importObj.namespace != null)
-            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
-                                    importObj.namespace);
-
-        if (importObj.schemaLocation != null && !importObj.schemaLocation.trim().equals(""))
-            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
-                                    importObj.schemaLocation);
-
-        if (importObj.id != null)
-            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", importObj.id);
-
-        if (importObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     importObj.annotation, schema);
-
-            importEl.appendChild(annotation);
-        }
-
-        if (importObj.schema != null && serializeIncluded) {
-
-
-            XmlSchemaSerializer importSeri = new XmlSchemaSerializer();
-            importSeri.serializeSchemaElement(importObj.schema, serializeIncluded);
-            docs.addAll(importSeri.docs);
-        }
-
-        return importEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
-     * XmlSchema schema)throws XmlSchemaSerializerException
-     * <p/>
-     * Add each of the attribute of XmlSchemaImport obj into import Element
-     * Then serialize schema that is included by this import.  Include the
-     * serialized schema into document pool.
-     * <p/>
-     * Parameter:
-     * doc           - Document the parent use.
-     * redefineObj   - XmlSchemaInclude that will be serialized.
-     * schema        - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element object representation of XmlSchemaRedefine
-     * **********************************************************************
-     */
-    Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
-                              XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element redefine = createNewElement(doc, "redefine",
-                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (redefineObj.schemaLocation != null)
-            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
-                                    redefineObj.schemaLocation);
-        else
-            throw new XmlSchemaSerializerException("redefine must have "
-                                                   + "schemaLocation fields fill");
-
-        if (redefineObj.id != null)
-            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "id", redefineObj.id);
-
-        if (redefineObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     redefineObj.annotation, schema);
-            redefine.appendChild(annotation);
-        }
-        int itemsLength = redefineObj.items.getCount();
-        for (int i = 0; i < itemsLength; i++) {
-            XmlSchemaObject obj = redefineObj.items.getItem(i);
-            if (obj instanceof XmlSchemaSimpleType) {
-                Element simpleType = serializeSimpleType(doc,
-                                                         (XmlSchemaSimpleType) obj, schema);
-                redefine.appendChild(simpleType);
-            } else if (obj instanceof XmlSchemaComplexType) {
-                Element complexType = serializeComplexType(doc,
-                                                           (XmlSchemaComplexType) obj, schema);
-                redefine.appendChild(complexType);
-            } else if (obj instanceof XmlSchemaGroupRef) {
-                Element groupRef = serializeGroupRef(doc,
-                                                     (XmlSchemaGroupRef) obj, schema);
-                redefine.appendChild(groupRef);
-            } else if (obj instanceof XmlSchemaGroup) {
-                Element group = serializeGroup(doc,
-                                               (XmlSchemaGroup) obj, schema);
-                redefine.appendChild(group);
-            } else if (obj instanceof XmlSchemaAttributeGroup) {
-                Element attributeGroup = serializeAttributeGroup(doc,
-                                                                 (XmlSchemaAttributeGroup) obj, schema);
-                redefine.appendChild(attributeGroup);
-            } else if (obj instanceof XmlSchemaAttributeGroupRef) {
-                Element attributeGroupRef = serializeAttributeGroupRef(doc,
-                                                                       (XmlSchemaAttributeGroupRef) obj, schema);
-                redefine.appendChild(attributeGroupRef);
-            }
-        }
-        return redefine;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeElement(Document doc, XmlSchemaElement elementObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException
-     * <p/>
-     * Each member of Element will be appended and pass the element
-     * created.  Element processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc           - Document the parent use.
-     * elementObj   - XmlSchemaInclude that will be serialized.
-     * schema        - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element object of element.
-     * **********************************************************************
-     */
-    Element serializeElement(Document doc, XmlSchemaElement elementObj,
-                             XmlSchema schema) throws XmlSchemaSerializerException {
-        Element serializedEl = createNewElement(doc, "element",
-                                                schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-
-        if (elementObj.refName != null) {
-
-            String resolvedName = resolveQName(elementObj.refName, schema);
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", resolvedName);
-        } else if (elementObj.name != null && elementObj.name.length() > 0) {
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
-                                        elementObj.name);
-        }
-
-        if (elementObj.isAbstract)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "abstract", "true");
-
-        String block = elementObj.block.getValue();
-        if (!block.equals("None")) {
-            block = convertString(block);
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "block", block);
-        }
-        if (elementObj.defaultValue != null)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
-                                        elementObj.defaultValue);
-
-        String finalDerivation = elementObj.finalDerivation.getValue();
-        if (!finalDerivation.equals("None")) {
-            finalDerivation = convertString(finalDerivation);
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
-                                        finalDerivation);
-        }
-        if (elementObj.fixedValue != null)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
-                                        elementObj.fixedValue);
-
-        String formDef = elementObj.form.getValue();
-        if (!formDef.equals(XmlSchemaForm.NONE)) {
-            formDef = convertString(formDef);
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formDef);
-        }
-        if (elementObj.id != null)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", elementObj.id);
-
-        if (elementObj.maxOccurs < Long.MAX_VALUE && elementObj.maxOccurs > 1)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                        elementObj.maxOccurs + "");
-        else if (elementObj.maxOccurs == Long.MAX_VALUE)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                        "unbounded");
-        //else not serialized
-        
-        /*if(elementObj.minOccurs >1)
-		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-		  elementObj.minOccurs + "");*/
-        
-        //Change - SK and Ragu cos it wasnt picking up
-        // minOccurs = 0
-        if (elementObj.minOccurs < Long.MAX_VALUE && elementObj.minOccurs != 1)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-                                        elementObj.minOccurs + "");
-        else if (elementObj.minOccurs == Long.MAX_VALUE)
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-                                        "unbounded");
-            
-        /*
-		  if(elementObj.maxOccursString != null)
-		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-		  elementObj.maxOccursString);
-		  else if(elementObj.maxOccurs > 1)
-		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-		  elementObj.maxOccurs + "");
-
-		  if(elementObj.minOccurs > 1)
-		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-		  elementObj.minOccurs + "");
-		*/
-        if (elementObj.substitutionGroup != null) {
-            String resolvedQName = resolveQName(elementObj.substitutionGroup, schema);
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "substitutionGroup",
-                                        resolvedQName);
-        }
-        if (elementObj.schemaTypeName != null) {
-            String resolvedName = resolveQName(elementObj.schemaTypeName, schema);
-            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "type", resolvedName);
-        }
-        if (elementObj.annotation != null) {
-            Element annotationEl = serializeAnnotation(doc,
-                                                       elementObj.annotation, schema);
-            serializedEl.appendChild(annotationEl);
-        }
-        if (elementObj.schemaType != null) {
-            if (elementObj.schemaType instanceof XmlSchemaComplexType) {
-                Element complexType = serializeComplexType(doc,
-                                                           (XmlSchemaComplexType) elementObj.schemaType, schema);
-                serializedEl.appendChild(complexType);
-            } else if (elementObj.schemaType instanceof XmlSchemaSimpleType) {
-                Element simpleType = serializeSimpleType(doc,
-                                                         (XmlSchemaSimpleType) elementObj.schemaType, schema);
-                serializedEl.appendChild(simpleType);
-            }
-        }
-        if (elementObj.constraints.getCount() > 0) {
-            for (int i = 0; i < elementObj.constraints.getCount(); i++) {
-                Element constraint = serializeIdentityConstraint(doc,
-                                                                 (XmlSchemaIdentityConstraint) elementObj.constraints.getItem(i),
-                                                                 schema);
-                serializedEl.appendChild(constraint);
-            }
-        }
-
-        return serializedEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSimpleType(Document doc,
-     * XmlSchemaSimpleType simpleTypeObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of simple type will be appended and pass the element
-     * created.  Simple type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * simpleTypeObj     - XmlSchemaSimpleType that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element object of SimpleType
-     * **********************************************************************
-     */
-    Element serializeSimpleType(Document doc, XmlSchemaSimpleType simpleTypeObj,
-                                XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element serializedSimpleType = createNewElement(doc, "simpleType",
-                                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-
-        String tmp;
-        tmp = simpleTypeObj.finalDerivation.getValue();
-        if (!tmp.equals("None")) {
-
-            tmp = convertString(tmp);
-            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "final", tmp);
-        }
-        if (simpleTypeObj.id != null)
-            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
-                                                simpleTypeObj.id);
-        if ((simpleTypeObj.name != null) && (!simpleTypeObj.name.equals("")))
-            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
-                                                simpleTypeObj.name);
-        if (simpleTypeObj.annotation != null) {
-            Element annotationEl = serializeAnnotation(doc,
-                                                       simpleTypeObj.annotation, schema);
-            serializedSimpleType.appendChild(annotationEl);
-        }
-        if (simpleTypeObj.content != null) {
-            if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeRestriction) {
-                Element restEl = serializeSimpleTypeRestriction(doc,
-                                                                (XmlSchemaSimpleTypeRestriction) simpleTypeObj.content,
-                                                                schema);
-                serializedSimpleType.appendChild(restEl);
-            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeList) {
-                Element listEl = serializeSimpleTypeList(doc,
-                                                         (XmlSchemaSimpleTypeList) simpleTypeObj.content, schema);
-                serializedSimpleType.appendChild(listEl);
-            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeUnion) {
-                Element unionEl = serializeSimpleTypeUnion(doc,
-                                                           (XmlSchemaSimpleTypeUnion) simpleTypeObj.content, schema);
-                serializedSimpleType.appendChild(unionEl);
-            }/*else 
-			   throw new XmlSchemaSerializerException("Invalid type inserted "
-			   + "in simpleType content, the content is: " 
-			   + simpleTypeObj.content.getClass().getName()
-			   + " valid content should be XmlSchemaSimpleTypeunion, "
-			   + "XmlSchemaSimpleTyperestriction or list");*/
-        }/*else
-		   throw new XmlSchemaSerializerException("simple type must be set "
-		   + "with content, either union, restriction or list");*/
-        
-        return serializedSimpleType;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSimpleTypeRestriction(Document doc,
-     * XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of simple type will be appended and pass the element
-     * created.  Simple type's <restriction> processed according to w3c
-     * Recommendation May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * restrictionObj    - XmlSchemaRestriction that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of simple type restriction and its child.
-     * **********************************************************************
-     */
-    Element serializeSimpleTypeRestriction(Document doc,
-                                           XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-        //todo: need to implement any attribute that related to non schema namespace
-        Element serializedRestriction = createNewElement(doc, "restriction",
-                                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (schema.schema_ns_prefix.length() > 0)
-            serializedRestriction.setPrefix(schema.schema_ns_prefix);
-        if (restrictionObj.baseTypeName != null) {
-            String baseType = resolveQName(restrictionObj.baseTypeName, schema);
-            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "base", baseType);
-        } else if (restrictionObj.baseType != null && restrictionObj.baseType
-                instanceof XmlSchemaSimpleType) {
-            Element inlineSimpleType = serializeSimpleType(doc,
-                                                           restrictionObj.baseType, schema);
-            serializedRestriction.appendChild(inlineSimpleType);
-        } else
-            throw new XmlSchemaSerializerException("restriction must be define "
-                                                   + "with specifying base or inline simpleType");
-
-        if (restrictionObj.id != null)
-            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
-                                                 restrictionObj.id);
-
-        if (restrictionObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     restrictionObj.annotation, schema);
-            serializedRestriction.appendChild(annotation);
-        }
-        if (restrictionObj.facets.getCount() > 0) {
-            int facetsNum = restrictionObj.facets.getCount();
-            for (int i = 0; i < facetsNum; i++) {
-                Element facetEl = serializeFacet(doc,
-                                                 (XmlSchemaFacet) restrictionObj.facets.getItem(i), schema);
-                serializedRestriction.appendChild(facetEl);
-            }
-        }
-        return serializedRestriction;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException{
-     * <p/>
-     * detect what type of facet and cass appropriatelly,
-     * construct the element and pass it.
-     * <p/>
-     * Parameter:
-     * doc       - Document the parent use.
-     * facetObj  - XmlSchemaFacet that will be serialized.
-     * schema    - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of simple type with facet.
-     * **********************************************************************
-     */
-    Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
-                           XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element serializedFacet;
-        String facetName = facetObj.getClass().getName();
-
-        if (facetObj instanceof XmlSchemaMinExclusiveFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "minExclusive");
-        else if (facetObj instanceof XmlSchemaMinInclusiveFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "minInclusive");
-        else if (facetObj instanceof XmlSchemaMaxExclusiveFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "maxExclusive");
-        else if (facetObj instanceof XmlSchemaMaxInclusiveFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "maxInclusive");
-        else if (facetObj instanceof XmlSchemaTotalDigitsFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "totalDigits");
-        else if (facetObj instanceof XmlSchemaFractionDigitsFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "fractionDigits");
-        else if (facetObj instanceof XmlSchemaLengthFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "length");
-        else if (facetObj instanceof XmlSchemaMinLengthFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "minLength");
-        else if (facetObj instanceof XmlSchemaMaxLengthFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "maxLength");
-        else if (facetObj instanceof XmlSchemaEnumerationFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "enumeration");
-        else if (facetObj instanceof XmlSchemaWhiteSpaceFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "whiteSpace");
-        else if (facetObj instanceof XmlSchemaPatternFacet)
-            serializedFacet = constructFacet(facetObj, doc, schema,
-                                             "pattern");
-        else
-            throw new XmlSchemaSerializerException("facet not exist "
-                                                   + facetObj.getClass().getName());
-
-        if (facetObj.id != null)
-            serializedFacet.setAttributeNS(XmlSchema.SCHEMA_NS, "id", facetObj.id);
-        if (facetObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc, facetObj.annotation,
-                                                     schema);
-            serializedFacet.appendChild(annotation);
-        }
-
-        return serializedFacet;
-    }
-
-    private Element constructFacet(XmlSchemaFacet facetObj, Document doc,
-                                   XmlSchema schema, String tagName) {
-
-        Element facetEl = createNewElement(doc, tagName,
-                                           schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "value",
-                               facetObj.value.toString());
-        if (facetObj.fixed)
-            facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed", "true");
-
-        if (facetObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     facetObj.annotation, schema);
-            facetEl.appendChild(annotation);
-        }
-        return facetEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeComplexType(Document doc,
-     * XmlSchemaComplexType complexTypeObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc             - Document the parent use.
-     * complexTypeObj  - XmlSchemaFacet that will be serialized.
-     * schema          - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of complexType.
-     * **********************************************************************
-     */
-    Element serializeComplexType(Document doc,
-                                 XmlSchemaComplexType complexTypeObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-
-        //todo: need to implement abstract, id, mixed
-        Element serializedComplexType = createNewElement(doc,
-                                                         "complexType", schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if ((complexTypeObj.name != null) && (!complexTypeObj.name.equals("")))
-            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
-                                                 complexTypeObj.name);
-        /*if(complexTypeObj.annotation != null){
-		  Element annotationEl = serializeAnnotation(doc, 
-		  complexTypeObj.annotation, schema);
-		  serializedComplexType.appendChild(annotationEl);
-		  }*/
-        
-        if (complexTypeObj.isMixed)
-            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                 "mixed", "true");
-        if (complexTypeObj.isAbstract)
-            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                 "abstract", "true");
-        if (complexTypeObj.id != null)
-            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
-                                                 complexTypeObj.id);
-
-        if (complexTypeObj.contentModel instanceof XmlSchemaSimpleContent) {
-            Element simpleContent = serializeSimpleContent(doc,
-                                                           (XmlSchemaSimpleContent) complexTypeObj.contentModel, schema);
-            serializedComplexType.appendChild(simpleContent);
-        } else if (complexTypeObj.contentModel instanceof
-                XmlSchemaComplexContent) {
-
-            Element complexContent = serializeComplexContent(doc,
-                                                             (XmlSchemaComplexContent) complexTypeObj.contentModel, schema);
-            serializedComplexType.appendChild(complexContent);
-        }
-
-        if (complexTypeObj.particle instanceof XmlSchemaSequence) {
-            Element sequence = serializeSequence(doc,
-                                                 (XmlSchemaSequence) complexTypeObj.particle, schema);
-            serializedComplexType.appendChild(sequence);
-        } else if (complexTypeObj.particle instanceof XmlSchemaChoice) {
-            Element choice = serializeChoice(doc,
-                                             (XmlSchemaChoice) complexTypeObj.particle, schema);
-            serializedComplexType.appendChild(choice);
-        } else if (complexTypeObj.particle instanceof XmlSchemaAll) {
-            Element all = serializeAll(doc,
-                                       (XmlSchemaAll) complexTypeObj.particle, schema);
-            serializedComplexType.appendChild(all);
-        } else if (complexTypeObj.particle instanceof XmlSchemaGroupRef) {
-            Element group = serializeGroupRef(doc,
-                                              (XmlSchemaGroupRef) complexTypeObj.particle, schema);
-            serializedComplexType.appendChild(group);
-        }
-
-        String block = complexTypeObj.block.getValue();
-        if (!block.equals("None")) {
-            block = convertString(block);
-            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                                 "block", block);
-        }
-        String finalDerivation = complexTypeObj.finalDerivation.getValue();
-        if (!finalDerivation.equals("None")) {
-            finalDerivation = convertString(finalDerivation);
-            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
-                                                 finalDerivation);
-        }
-
-        XmlSchemaObjectCollection attrColl = complexTypeObj.attributes;
-        if (attrColl.getCount() > 0)
-            setupAttr(doc, attrColl, schema, serializedComplexType);
-
-        return serializedComplexType;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
-     * XmlSchema schema)throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  `Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc             - Document the parent use.
-     * sequenceObj  - XmlSchemaFacet that will be serialized.
-     * schema          - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of sequence particle.
-     * **********************************************************************
-     */
-    Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
-                              XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element sequence = createNewElement(doc, "sequence",
-                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-
-        if (sequenceObj.id != null)
-            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "id", sequenceObj.id);
-
-
-        if (sequenceObj.maxOccurs < Long.MAX_VALUE && sequenceObj.maxOccurs > 1)
-            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                    sequenceObj.maxOccurs + "");
-        else if (sequenceObj.maxOccurs == Long.MAX_VALUE)
-            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                    "unbounded");
-        //else not serialized
-        
-            
-        if (sequenceObj.minOccurs > 1)
-            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-                                    sequenceObj.minOccurs + "");
-
-        XmlSchemaObjectCollection seqColl = sequenceObj.items;
-        int containLength = seqColl.getCount();
-        for (int i = 0; i < containLength; i++) {
-            XmlSchemaObject obj = seqColl.getItem(i);
-            if (obj instanceof XmlSchemaElement) {
-                Element el = serializeElement(doc,
-                                              (XmlSchemaElement) obj, schema);
-                sequence.appendChild(el);
-            } else if (obj instanceof XmlSchemaGroupRef) {
-                Element group = serializeGroupRef(doc,
-                                                  (XmlSchemaGroupRef) obj, schema);
-                sequence.appendChild(group);
-            } else if (obj instanceof XmlSchemaChoice) {
-                Element choice = serializeChoice(doc,
-                                                 (XmlSchemaChoice) obj, schema);
-                sequence.appendChild(choice);
-            } else if (obj instanceof XmlSchemaSequence) {
-                Element sequenceChild = serializeSequence(doc,
-                                                          (XmlSchemaSequence) obj, schema);
-                sequence.appendChild(sequenceChild);
-            } else if (obj instanceof XmlSchemaAny) {
-                Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
-                sequence.appendChild(any);
-            }
-        }
-        return sequence;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  `Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc             - Document the parent use.
-     * attributeObj    - XmlSchemaAttribute that will be serialized.
-     * schema          - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of attribute.
-     * **********************************************************************
-     */
-    Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
-                               XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element attribute = createNewElement(doc, "attribute",
-                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-        if (attributeObj.refName != null) {
-            String refName =
-                    resolveQName(attributeObj.refName, schema);
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", refName);
-        } else if (attributeObj.name != null)
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
-                                     attributeObj.name);
-
-        if (attributeObj.schemaTypeName != null) {
-            String typeName =
-                    resolveQName(attributeObj.schemaTypeName, schema);
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "type", typeName);
-        }
-
-        if (attributeObj.defaultValue != null)
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
-                                     attributeObj.defaultValue);
-        if (attributeObj.fixedValue != null)
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
-                                     attributeObj.fixedValue);
-
-        String formType = attributeObj.form.getValue();
-        if (!formType.equals(XmlSchemaForm.NONE)) {
-            formType = convertString(formType);
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formType);
-        }
-        if (attributeObj.id != null)
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "id", attributeObj.id);
-
-        String useType = attributeObj.use.getValue();
-        if (!useType.equals("None")) {
-            useType = convertString(useType);
-            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "use", useType);
-        }
-        if (attributeObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     attributeObj.annotation, schema);
-            attribute.appendChild(annotation);
-        }
-
-
-        if (attributeObj.schemaType != null) {
-            try {
-                XmlSchemaSimpleType simpleType =
-                        attributeObj.schemaType;
-                Element simpleTypeEl = serializeSimpleType(doc,
-                                                           simpleType, schema);
-                attribute.appendChild(simpleTypeEl);
-            } catch (ClassCastException e) {
-                throw new XmlSchemaSerializerException("only inline simple type allow as attribute's inline type");
-            }
-        }
-
-        Attr[] unhandled = attributeObj.getUnhandledAttributes();
-
-        Hashtable namespaces = new Hashtable();
-
-        if (unhandled != null) {
-
-            // this is to make the wsdl:arrayType work 
-            // since unhandles attributes are not handled this is a special case
-            // but the basic idea is to see if there is any attibute whose value has ":"
-            // if it is present then it is likely that it is a namespace prefix
-            // do what is neccesary to get the real namespace for it and make 
-            // required changes to the prefix 
-			
-            for (int i = 0; i < unhandled.length; i++) {
-                String name = unhandled[i].getNodeName();
-                String value = unhandled[i].getNodeValue();
-                if (name.equals("xmlns")) {
-                    namespaces.put("", value);
-                } else if (name.startsWith("xmlns")) {
-                    namespaces.put(name.substring(name.indexOf(":") + 1), value);
-                }
-            }
-
-            for (int i = 0; i < unhandled.length; i++) {
-                String value = unhandled[i].getNodeValue();
-                String nodeName = unhandled[i].getNodeName();
-                if (value.indexOf(":") > -1 && !nodeName.startsWith("xmlns")) {
-                    String prefix = value.substring(0, value.indexOf(":"));
-                    String oldNamespace = null;
-                    if ((oldNamespace = (String) namespaces.get(prefix)) != null) {
-                        value = value.substring(value.indexOf(":") + 1);
-                        Hashtable realNamespaces = schema.getPrefixToNamespaceMap();
-                        java.util.Iterator iter = realNamespaces.keySet().iterator();
-                        while (iter.hasNext()) {
-                            prefix = (String) iter.next();
-                            String namespace = (String) realNamespaces.get(prefix);
-                            if (namespace.equals(oldNamespace))
-                                value = prefix + ":" + value;
-                        }
-                    }
-
-                }
-                if (unhandled[i].getNamespaceURI() != null)
-                    attribute.setAttributeNS(unhandled[i].getNamespaceURI(), nodeName, value);
-                else
-                    attribute.setAttribute(nodeName, value);
-            }
-        }
-        return attribute;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc             - Document the parent use.
-     * choiceObj       - XmlSchemaChoice that will be serialized.
-     * schema          - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of choice schema object.
-     * **********************************************************************
-     */
-    Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
-                            XmlSchema schema) throws XmlSchemaSerializerException {
-        //todo: handle any non schema attri ?
-        
-        Element choice = createNewElement(doc, "choice",
-                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-        if (choiceObj.id != null)
-            if (choiceObj.id.length() > 0)
-                choice.setAttributeNS(XmlSchema.SCHEMA_NS, "id", choiceObj.id);
-
-
-        if (choiceObj.maxOccurs < Long.MAX_VALUE && choiceObj.maxOccurs > 1)
-            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                  choiceObj.maxOccurs + "");
-        else if (choiceObj.maxOccurs == Long.MAX_VALUE)
-            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                  "unbounded");
-        //else not serialized
-        
-        if (choiceObj.minOccurs > 1)
-            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-                                  choiceObj.minOccurs + "");
-               
-
-        /*
-		  if(choiceObj.maxOccursString != null)
-		  choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-		  choiceObj.maxOccursString);
-		  else if(choiceObj.maxOccurs > 1)
-		  choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-		  choiceObj.maxOccurs +"");
-		*/  
-            
-        
-        if (choiceObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     choiceObj.annotation, schema);
-            choice.appendChild(annotation);
-        }
-
-
-        XmlSchemaObjectCollection itemColl = choiceObj.items;
-
-        if (itemColl != null) {
-            int itemLength = itemColl.getCount();
-
-            for (int i = 0; i < itemLength; i++) {
-                XmlSchemaObject obj = itemColl.getItem(i);
-
-                if (obj instanceof XmlSchemaElement) {
-                    Element el = serializeElement(doc,
-                                                  (XmlSchemaElement) obj, schema);
-                    choice.appendChild(el);
-                } else if (obj instanceof XmlSchemaGroupRef) {
-                    Element group = serializeGroupRef(doc,
-                                                      (XmlSchemaGroupRef) obj, schema);
-                    choice.appendChild(group);
-                } else if (obj instanceof XmlSchemaChoice) {
-                    Element inlineChoice = serializeChoice(doc,
-                                                           (XmlSchemaChoice) obj, schema);
-                    choice.appendChild(inlineChoice);
-                } else if (obj instanceof XmlSchemaSequence) {
-                    Element inlineSequence = serializeSequence(doc,
-                                                               (XmlSchemaSequence) obj, schema);
-                    choice.appendChild(inlineSequence);
-                } else if (obj instanceof XmlSchemaAny) {
-                    Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
-                    choice.appendChild(any);
-                }
-            }
-        }
-        return choice;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc             - Document the parent use.
-     * allObj          - XmlSchemaAll that will be serialized.
-     * schema          - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of particle all.
-     * **********************************************************************
-     */
-    Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-        Element allEl = createNewElement(doc, "all", schema.schema_ns_prefix,
-                                         XmlSchema.SCHEMA_NS);
-
-        if (allObj.minOccurs == 0)
-            allEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs", "0");
-
-
-        if (allObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc, allObj.annotation,
-                                                     schema);
-            allEl.appendChild(annotation);
-        }
-
-        XmlSchemaObjectCollection itemColl = allObj.items;
-
-        if (itemColl != null) {
-            int itemLength = itemColl.getCount();
-
-            for (int i = 0; i < itemLength; i++) {
-                XmlSchemaObject obj = itemColl.getItem(i);
-                if (obj instanceof XmlSchemaElement) {
-                    Element el = serializeElement(doc, (XmlSchemaElement) obj,
-                                                  schema);
-                    allEl.appendChild(el);
-                } else
-                    throw new XmlSchemaSerializerException("Only element "
-                                                           + "allowed as child of all model type");
-            }
-        }
-
-        return allEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSimpleTypeList(Document doc,
-     * XmlSchemaSimpleTypeList listObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc             - Document the parent use.
-     * listObj         - XmlSchemaSimpleTypeList that will be serialized.
-     * schema          - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of simple type with list method.
-     * **********************************************************************
-     */
-    Element serializeSimpleTypeList(Document doc,
-                                    XmlSchemaSimpleTypeList listObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-
-        Element list = createNewElement(doc, "list",
-                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (listObj.itemTypeName != null) {
-            String listItemType = resolveQName(listObj.itemTypeName,
-                                               schema);
-            list.setAttributeNS(XmlSchema.SCHEMA_NS, "itemType", listItemType);
-        }
-        if (listObj.id != null)
-            list.setAttributeNS(XmlSchema.SCHEMA_NS, "id", listObj.id);
-
-        else if (listObj.itemType != null) {
-            Element inlineSimpleEl = serializeSimpleType(doc, listObj.itemType,
-                                                         schema);
-            list.appendChild(inlineSimpleEl);
-        }
-        if (listObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc, listObj.annotation, schema);
-            list.appendChild(annotation);
-        }
-        return list;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSimpleTypeUnion(Document doc,
-     * XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc              - Document the parent use.
-     * unionObj         - XmlSchemaSimpleTypeUnion that will be serialized.
-     * schema           - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of simple type with union method.
-     * **********************************************************************
-     */
-    Element serializeSimpleTypeUnion(Document doc,
-                                     XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-
-
-        Element union = createNewElement(doc, "union",
-                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-        if (unionObj.id != null)
-            union.setAttributeNS(XmlSchema.SCHEMA_NS, "id", unionObj.id);
-
-        if (unionObj.memberTypesSource != null)
-            union.setAttributeNS(XmlSchema.SCHEMA_NS, "memberTypes",
-                                 unionObj.memberTypesSource);
-        else if (unionObj.baseTypes.getCount() > 0) {
-            int baseTypesLength = unionObj.baseTypes.getCount();
-            Element baseType;
-            for (int i = 0; i < baseTypesLength; i++) {
-                try {
-                    baseType = serializeSimpleType(doc,
-                                                   (XmlSchemaSimpleType) unionObj.baseTypes.getItem(i),
-                                                   schema);
-                    union.appendChild(baseType);
-                } catch (ClassCastException e) {
-                    throw new XmlSchemaSerializerException("only inline simple type allow as attribute's "
-                                                           + "inline type");
-                }
-            }
-        }
-        if (unionObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc, unionObj.annotation,
-                                                     schema);
-            union.appendChild(annotation);
-        }
-        return union;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema)
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc              - Document the parent use.
-     * anyObj           - XmlSchemaAny that will be serialized.
-     * schema           - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of any that is part of its parent.
-     * **********************************************************************
-     */
-    Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema) {
-        Element anyEl = createNewElement(doc, "any", schema.schema_ns_prefix,
-                                         XmlSchema.SCHEMA_NS);
-        if (anyObj.id != null)
-            if (anyObj.id.length() > 0)
-                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", anyObj.id);
-
-
-        if (anyObj.maxOccurs < Long.MAX_VALUE && anyObj.maxOccurs > 1)
-            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                 anyObj.maxOccurs + "");
-        else if (anyObj.maxOccurs == Long.MAX_VALUE)
-            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                 "unbounded");
-        //else not serialized
-        
-        if (anyObj.minOccurs > 1)
-            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-                                 anyObj.minOccurs + "");
-
-        if (anyObj.namespace != null)
-            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
-                                 anyObj.namespace);
-
-        if (anyObj.processContent != null) {
-            String value = anyObj.processContent.getValue();
-            if (!value.equals("None")) {
-                String processContent = convertString(value);
-                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "processContents",
-                                     processContent);
-            }
-        }
-        if (anyObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     anyObj.annotation, schema);
-            anyEl.appendChild(annotation);
-        }
-
-        return anyEl;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc                - Document the parent use.
-     * groupObj           - XmlSchemaGroup that will be serialized.
-     * schema             - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of group elements.
-     * **********************************************************************
-     */
-    Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
-                           XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element group = createNewElement(doc, "group",
-                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (groupObj.name != null) {
-            if (groupObj.name.length() > 0) {
-                group.setAttributeNS(XmlSchema.SCHEMA_NS, "name", groupObj.name);
-            }
-        } else
-            throw new XmlSchemaSerializerException("Group must have " +
-                                                   "name or ref");
-
-
-        if (groupObj.particle instanceof XmlSchemaSequence) {
-            Element sequence = serializeSequence(doc,
-                                                 (XmlSchemaSequence) groupObj.particle, schema);
-            group.appendChild(sequence);
-        } else if (groupObj.particle instanceof XmlSchemaChoice) {
-            Element choice = serializeChoice(doc,
-                                             (XmlSchemaChoice) groupObj.particle, schema);
-            group.appendChild(choice);
-        } else if (groupObj.particle instanceof XmlSchemaAll) {
-            Element all = serializeAll(doc,
-                                       (XmlSchemaAll) groupObj.particle, schema);
-            group.appendChild(all);
-        }
-        if (groupObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     groupObj.annotation, schema);
-            group.appendChild(annotation);
-        }
-        return group;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc                   - Document the parent use.
-     * groupRefObj           - XmlSchemaGroupRef that will be serialized.
-     * schema                - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of group elements ref inside its parent.
-     * **********************************************************************
-     */
-    Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
-                              XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element groupRef = createNewElement(doc, "group",
-                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (groupRefObj.refName != null) {
-            String groupRefName = resolveQName(groupRefObj.refName,
-                                               schema);
-            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", groupRefName);
-        } else
-            throw new XmlSchemaSerializerException("Group must have name or ref");
-
-        if (groupRefObj.maxOccurs < Long.MAX_VALUE && groupRefObj.maxOccurs > 1)
-            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                    groupRefObj.maxOccurs + "");
-        else if (groupRefObj.maxOccurs == Long.MAX_VALUE)
-            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
-                                    "unbounded");
-        //else not serialized
-        
-        if (groupRefObj.minOccurs > 1)
-            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
-                                    groupRefObj.minOccurs + "");
-
-        
-        /*
-		  if(groupRefObj.maxOccursString != null)
-		  groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
-		  "maxOccurs", groupRefObj.maxOccursString);
-		  else if(groupRefObj.maxOccurs > 1)
-		  groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
-		  "maxOccurs", groupRefObj.maxOccurs + "");
-		*/
-        
-        if (groupRefObj.particle != null) {
-            Element particleEl;
-            if (groupRefObj.particle instanceof XmlSchemaChoice)
-                particleEl = serializeChoice(doc,
-                                             (XmlSchemaChoice) groupRefObj.particle, schema);
-            else if (groupRefObj.particle instanceof XmlSchemaSequence)
-                particleEl = serializeSequence(doc,
-                                               (XmlSchemaSequence) groupRefObj.particle, schema);
-            else if (groupRefObj.particle instanceof XmlSchemaAll)
-                particleEl = serializeAll(doc,
-                                          (XmlSchemaAll) groupRefObj.particle, schema);
-            else
-                throw new XmlSchemaSerializerException("The content of group "
-                                                       + "ref particle should be"
-                                                       + " sequence, choice or all reference:  "
-                                                       + "www.w3.org/TR/xmlschema-1#element-group-3.7.2");
-        }
-        if (groupRefObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     groupRefObj.annotation, schema);
-            groupRef.appendChild(annotation);
-        }
-
-        return groupRef;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSimpleContent(Document doc,
-     * XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * simpleContentObj  - XmlSchemaSimpleContent that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of complex type simple content.
-     * **********************************************************************
-     */
-    Element serializeSimpleContent(Document doc,
-                                   XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-        Element simpleContent = createNewElement(doc, "simpleContent",
-                                                 schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        Element content;
-        if (simpleContentObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     simpleContentObj.annotation, schema);
-            simpleContent.appendChild(annotation);
-        }
-        if (simpleContentObj.content instanceof
-                XmlSchemaSimpleContentRestriction)
-            content = serializeSimpleContentRestriction(doc,
-                                                        (XmlSchemaSimpleContentRestriction) simpleContentObj.content,
-                                                        schema);
-        else if (simpleContentObj.content instanceof
-                XmlSchemaSimpleContentExtension)
-            content = serializeSimpleContentExtension(doc,
-                                                      (XmlSchemaSimpleContentExtension) simpleContentObj.content,
-                                                      schema);
-        else
-            throw new XmlSchemaSerializerException("content of simple content "
-                                                   + "must be restriction or extension");
-
-        simpleContent.appendChild(content);
-        return simpleContent;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeComplexContent(Document doc,
-     * XmlSchemaComplexContent complexContentObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc                - Document the parent use.
-     * complexContentObj  - XmlSchemaComplexContent that will be serialized.
-     * schema             - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of complex type complex content.
-     * **********************************************************************
-     */
-    Element serializeComplexContent(Document doc,
-                                    XmlSchemaComplexContent complexContentObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-
-        Element complexContent = createNewElement(doc, "complexContent",
-                                                  schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-
-        if (complexContentObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     complexContentObj.annotation, schema);
-            complexContent.appendChild(annotation);
-        }
-
-        if (complexContentObj.mixed)
-            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "mixed", "true");
-        if (complexContentObj.id != null)
-            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
-                                          complexContentObj.id);
-
-        Element content;
-        if (complexContentObj.content instanceof
-                XmlSchemaComplexContentRestriction)
-
-            content = serializeComplexContentRestriction(doc,
-                                                         (XmlSchemaComplexContentRestriction) complexContentObj.content,
-                                                         schema);
-        else if (complexContentObj.content instanceof
-                XmlSchemaComplexContentExtension)
-            content = serializeComplexContentExtension(doc,
-                                                       (XmlSchemaComplexContentExtension) complexContentObj.content,
-                                                       schema);
-        else
-            throw new XmlSchemaSerializerException("content of complexContent "
-                                                   + "must be restriction or extension");
-
-        complexContent.appendChild(content);
-
-        return complexContent;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeIdentityConstraint(Document doc,
-     * XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
-     * throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * constraintObj     - XmlSchemaIdentityConstraint that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of key, keyref or unique that part of its parent.
-     * **********************************************************************
-     */
-    Element serializeIdentityConstraint(Document doc,
-                                        XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
-            throws XmlSchemaSerializerException {
-
-        Element constraint;
-
-        if (constraintObj instanceof XmlSchemaUnique)
-            constraint = createNewElement(doc, "unique",
-                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-        else if (constraintObj instanceof XmlSchemaKey)
-            constraint = createNewElement(doc, "key",
-                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-        else if (constraintObj instanceof XmlSchemaKeyref) {
-            constraint = createNewElement(doc, "keyref",
-                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-            XmlSchemaKeyref keyref = (XmlSchemaKeyref) constraintObj;
-            if (keyref.refer != null) {
-                String keyrefStr = resolveQName(keyref.refer, schema);
-                constraint.setAttributeNS(XmlSchema.SCHEMA_NS,
-                                          "refer", keyrefStr);
-            }
-        } else
-            throw new XmlSchemaSerializerException("not valid identity "
-                                                   + "constraint");
-
-        if (constraintObj.name != null)
-            constraint.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
-                                      constraintObj.name);
-        if (constraintObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     constraintObj.annotation, schema);
-            constraint.appendChild(annotation);
-        }
-
-        if (constraintObj.selector != null) {
-            Element selector = serializeSelector(doc,
-                                                 constraintObj.selector, schema);
-            constraint.appendChild(selector);
-        }
-        XmlSchemaObjectCollection fieldColl = constraintObj.fields;
-        if (fieldColl != null) {
-            int fieldLength = fieldColl.getCount();
-            for (int i = 0; i < fieldLength; i++) {
-                Element field = serializeField(doc,
-                                               (XmlSchemaXPath) fieldColl.getItem(i), schema);
-                constraint.appendChild(field);
-            }
-        }
-        return constraint;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException{
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * selectorObj      - XmlSchemaXPath that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * Element of selector with collection of xpath as its attrib.  The selector
-     * itself is the part of identity type.  eg <key><selector xpath="..."
-     * **********************************************************************
-     */
-    Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
-                              XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element selector = createNewElement(doc, "selector",
-                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        if (selectorObj.xpath != null)
-            selector.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath",
-                                    selectorObj.xpath);
-        else
-            throw new XmlSchemaSerializerException("xpath can't be null");
-
-        if (selectorObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     selectorObj.annotation, schema);
-            selector.appendChild(annotation);
-        }
-        return selector;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeField(Document doc, XmlSchemaXPath fieldObj,
-     * XmlSchema schema) throws XmlSchemaSerializerException
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc           - Document the parent use.
-     * fieldObj      - XmlSchemaXPath that will be serialized.
-     * schema        - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * field element that part of constraint.
-     * **********************************************************************
-     */
-    Element serializeField(Document doc, XmlSchemaXPath fieldObj,
-                           XmlSchema schema) throws XmlSchemaSerializerException {
-
-        Element field = createNewElement(doc, "field", schema.schema_ns_prefix,
-                                         XmlSchema.SCHEMA_NS);
-
-        if (fieldObj.xpath != null)
-            field.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath", fieldObj.xpath);
-        else
-            throw new XmlSchemaSerializerException("xpath can't be null");
-
-        if (fieldObj.annotation != null) {
-            Element annotation = serializeAnnotation(doc,
-                                                     fieldObj.annotation, schema);
-            field.appendChild(annotation);
-        }
-
-        return field;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeAnnotation(Document doc, XmlSchemaAnnotation
-     * annotationObj, XmlSchema schema)
-     * <p/>
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * annotationObj      - XmlSchemaAnnotation that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * annotation element that part of any type. will contain document and
-     * appinfo for child.
-     * **********************************************************************
-     */
-    Element serializeAnnotation(Document doc, XmlSchemaAnnotation annotationObj,
-                                XmlSchema schema) {
-
-        Element annotation = createNewElement(doc, "annotation",
-                                              schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-
-        XmlSchemaObjectCollection contents = annotationObj.items;
-        int contentLength = contents.getCount();
-
-        for (int i = 0; i < contentLength; i++) {
-            XmlSchemaObject obj = contents.getItem(i);
-
-            if (obj instanceof XmlSchemaAppInfo) {
-                XmlSchemaAppInfo appinfo = (XmlSchemaAppInfo) obj;
-                Element appInfoEl = serializeAppInfo(doc, appinfo, schema);
-                annotation.appendChild(appInfoEl);
-            } else if (obj instanceof XmlSchemaDocumentation) {
-                XmlSchemaDocumentation documentation =
-                        (XmlSchemaDocumentation) obj;
-
-                Element documentationEl = serializeDocumentation(doc,
-                                                                 documentation, schema);
-
-
-                annotation.appendChild(documentationEl);
-            }
-        }
-
-        return annotation;
-    }
-
-    /**
-     * *********************************************************************
-     * Element serializeAppInfo(Document doc,XmlSchemaAppInfo appInfoObj,
-     * XmlSchema schema)
-     * <p/>
-     * <p/>
-     * Each member of complex type will be appended and pass the element
-     * created.  Complex type processed according to w3c Recommendation
-     * May 2 2001.
-     * <p/>
-     * Parameter:
-     * doc               - Document the parent use.
-     * appInfoObj        - XmlSchemaAppInfo that will be serialized.
-     * schema            - Schema Document object of the parent.
-     * <p/>
-     * Return:
-     * App info element that is part of the annotation.
-     * **********************************************************************
-     */
-    Element serializeAppInfo(Document doc, XmlSchemaAppInfo appInfoObj,
-                             XmlSchema schema) {
-
-        Element appInfoEl = createNewElement(doc, "appinfo",
-                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
-        if (appInfoObj.source != null)

[... 3227 lines stripped ...]


Re: svn commit: r376517 [2/3] - in /webservices/commons/modules/XmlSchema: build.xml maven.xml project.xml src/org/apache/ws/commons/schema/XmlSchemaSerializer.java test/tests/TestElementRefs.java

Posted by Dan Diephouse <da...@envoisolutions.com>.
Do I have messed up line endings or something in my IDE (I'm on 
windows)? Or is this an svn thing?

- Dan

dims@apache.org wrote:
> Modified: webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java
> URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java?rev=376517&r1=376516&r2=376517&view=diff
> ==============================================================================
> --- webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java (original)
> +++ webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java Thu Feb  9 16:52:26 2006
> @@ -1,2551 +1,2552 @@
> -/*
> - * Copyright 2004,2005 The Apache Software Foundation.
> - *
> - * Licensed 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.ws.commons.schema;
> -
> -import org.w3c.dom.Attr;
> -import org.w3c.dom.Document;
> -import org.w3c.dom.Element;
> -import org.w3c.dom.NamedNodeMap;
> -import org.w3c.dom.Node;
> -import org.w3c.dom.NodeList;
> -import org.w3c.dom.Text;
> -
> -import javax.xml.parsers.DocumentBuilder;
> -import javax.xml.parsers.DocumentBuilderFactory;
> -import javax.xml.parsers.ParserConfigurationException;
> -import javax.xml.namespace.QName;
> -import java.util.ArrayList;
> -import java.util.Enumeration;
> -import java.util.Hashtable;
> -
> -
> -public class XmlSchemaSerializer {
> -    private Hashtable schema_ns;
> -
> -    static String xsdPrefix = "xs";
> -    public static final String xsdNamespace = "http://www.w3.org/2001/XMLSchema";
> -    ArrayList docs;
> -    Element schemaElement;
> -
> -    private XmlSchemaSerializer() {
> -        docs = new ArrayList();
> -        schema_ns = new Hashtable();
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Document[]  serializeSchema(XmlSchema schemaObj,
> -     * boolean serializeIncluded)
> -     * <p/>
> -     * Serialize XmlSchema object pass back the document containing a schema
> -     * element as its root.
> -     * <p/>
> -     * Parameter:
> -     * schemaObj - Schema object to serialize.
> -     * serialzeIncluded - whether to serialize the included(imported)
> -     * schema or not. pass true for serialize all included
> -     * schema.
> -     * <p/>
> -     * Return:
> -     * Array of Documents that include/imported.
> -     * **********************************************************************
> -     */
> -    public static Document[] serializeSchema(XmlSchema schemaObj,
> -                                             boolean serializeIncluded) throws XmlSchemaSerializerException {
> -        return new XmlSchemaSerializer().serializeSchemaElement(schemaObj,
> -                                                                serializeIncluded);
> -    }
> -
> -    Document[] serializeSchemaElement(XmlSchema schemaObj,
> -                                      boolean serializeIncluded) throws XmlSchemaSerializerException {
> -
> -        XmlSchemaObjectCollection items = schemaObj.getItems();
> -        Document serializedSchemaDocs = null;
> -        try {
> -            DocumentBuilderFactory docFac = DocumentBuilderFactory.newInstance();
> -            docFac.setNamespaceAware(true);
> -            DocumentBuilder builder = docFac.newDocumentBuilder();
> -            serializedSchemaDocs = builder.newDocument();
> -        } catch (ParserConfigurationException e) {
> -            throw new XmlSchemaException(e.getMessage());
> -        }
> -
> -        Element serializedSchema;
> -
> -        serializedSchema = setupNamespaces(serializedSchemaDocs, schemaObj);
> -        schemaElement = serializedSchema;
> -
> -        if (schemaObj.targetNamespace != null) {
> -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                            "targetNamespace", schemaObj.targetNamespace);
> -
> -            Object targetNS =
> -                    schema_ns.get(schemaObj.targetNamespace);
> -            
> -            //if the namespace is not entered then add 
> -            //the targetNamespace as its
> -            if (targetNS == null) {
> -                serializedSchema.setAttributeNS("http://www.w3.org/2000/xmlns/",
> -                                                "xmlns", schemaObj.targetNamespace);
> -                schema_ns.put(schemaObj.targetNamespace.toString(), "");
> -            }
> -        }
> -        
> -        
> -        //todo: implement xml:lang, 
> -        if (schemaObj.attributeFormDefault != null) {
> -            String formQualified = schemaObj.attributeFormDefault.getValue();
> -
> -            if (!formQualified.equals(XmlSchemaForm.NONE))
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "attributeFormDefault", convertString(formQualified));
> -        }
> -
> -        if (schemaObj.elementFormDefault != null) {
> -            String formQualified = schemaObj.elementFormDefault.getValue();
> -
> -            if (!formQualified.equals(XmlSchemaForm.NONE))
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "elementFormDefault", convertString(formQualified));
> -        }
> -
> -
> -        if (schemaObj.annotation != null) {
> -            Element annotation = serializeAnnotation(serializedSchemaDocs,
> -                                                     schemaObj.annotation, schemaObj);
> -            serializedSchema.appendChild(annotation);
> -        }
> -        if (schemaObj.id != null) {
> -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                            schemaObj.id);
> -        }
> -        if (schemaObj.blockDefault != null) {
> -            String blockDefault = schemaObj.blockDefault.getValue();
> -            if (!blockDefault.equals("None")) {
> -                blockDefault = convertString(blockDefault);
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "blockDefault", blockDefault);
> -            }
> -        }
> -        if (schemaObj.finalDefault != null) {
> -            String finalDefault = schemaObj.finalDefault.getValue();
> -            if (!finalDefault.equals("None")) {
> -                finalDefault = convertString(finalDefault);
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "finalDefault", finalDefault);
> -            }
> -        }
> -
> -        if (schemaObj.version != null) {
> -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                            "version", schemaObj.version);
> -        }
> -        
> -        //after serialize the schema add into documentation 
> -        //and add to document collection array  which at the end 
> -        //returned
> -        serializeSchemaChild(items, serializedSchema, serializedSchemaDocs,
> -                             schemaObj, serializeIncluded);
> -
> -        serializedSchemaDocs.appendChild(serializedSchema);
> -        docs.add(serializedSchemaDocs);
> -
> -
> -        Document[] serializedDocs = new Document[docs.size()];
> -        docs.toArray(serializedDocs);
> -
> -        return serializedDocs;
> -    }
> -
> -    private void serializeSchemaChild(XmlSchemaObjectCollection items,
> -                                      Element serializedSchema, Document serializedSchemaDocs,
> -                                      XmlSchema schemaObj, boolean serializeIncluded)
> -            throws XmlSchemaSerializerException {
> -
> -        int itemsLength = items.getCount();
> -        /**
> -         * For each of the items that belong to this schema, 
> -         * serialize each member found.  
> -         * Permittable member is: element, simpleType, complexType,
> -         * group, attrributeGroup, Attribute, include, import and redefine.
> -         * if any of the member found then serialize the component.
> -         */
> -        for (int i = 0; i < itemsLength; i++) {
> -            XmlSchemaObject obj = items.getItem(i);
> -
> -            if (obj instanceof XmlSchemaElement) {
> -                Element e = serializeElement(serializedSchemaDocs,
> -                                             (XmlSchemaElement) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -
> -            } else if (obj instanceof XmlSchemaSimpleType) {
> -                Element e = serializeSimpleType(serializedSchemaDocs,
> -                                                (XmlSchemaSimpleType) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaComplexType) {
> -                Element e = serializeComplexType(serializedSchemaDocs,
> -                                                 (XmlSchemaComplexType) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaGroup) {
> -                Element e = serializeGroup(serializedSchemaDocs,
> -                                           (XmlSchemaGroup) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaAttributeGroup) {
> -                Element e = serializeAttributeGroup(serializedSchemaDocs,
> -                                                    (XmlSchemaAttributeGroup) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaAttribute) {
> -                Element e = serializeAttribute(serializedSchemaDocs,
> -                                               (XmlSchemaAttribute) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaRedefine) {
> -                Element e = serializeRedefine(serializedSchemaDocs,
> -                                              (XmlSchemaRedefine) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaInclude) {
> -                Element e = serializeInclude(serializedSchemaDocs,
> -                                             (XmlSchemaInclude) obj, schemaObj, serializeIncluded);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaImport) {
> -                Element e = serializeImport(serializedSchemaDocs,
> -                                            (XmlSchemaImport) obj, schemaObj, serializeIncluded);
> -                serializedSchema.appendChild(e);
> -            }
> -        }
> -    }
> -
> -    /**
> -     * Set up <schema> namespaces appropriately and append that attr
> -     * into specified element
> -     */
> -    private Element setupNamespaces(Document schemaDocs, XmlSchema schemaObj) {
> -        Enumeration prefixs = schemaObj.namespaces.keys();
> -        Enumeration values = schemaObj.namespaces.elements();
> -
> -        /**
> -         * check all namespace added and register all namespace in 
> -         * hashtable.  When finish then set namespace to schema 
> -         * element appropriatelly.
> -         */
> -        for (; prefixs.hasMoreElements() && values.hasMoreElements();) {
> -            String namespace = values.nextElement().toString();
> -            String prefix = prefixs.nextElement().toString();
> -            /*
> -             * if the prefix is there 
> -             * check whether it is an xsd schema namespace
> -             * set prefix and namespace to the default attribute
> -             * then register the prefix on hashtable
> -             */
> -            if (/*prefix.trim().length()<1 &&*/ namespace.equals(xsdNamespace)) {
> -                xsdPrefix = prefix;
> -                schemaObj.schema_ns_prefix = xsdPrefix;
> -            }
> -
> -            schema_ns.put(namespace, prefix);
> -        }
> -        //for schema that not set the xmlns attrib member
> -        if (schema_ns.get(xsdNamespace) == null) {
> -            schema_ns.put(xsdNamespace, xsdPrefix);
> -            schemaObj.schema_ns_prefix = xsdPrefix;
> -        }
> -
> -        Element schemaEl = createNewElement(schemaDocs, "schema",
> -                                            schemaObj.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        Enumeration keys = schema_ns.keys();
> -
> -        while (keys.hasMoreElements()) {
> -            //let it crash for null pointer because then either the schema
> -            //is wrong(namespace not set properly or bug in setting ns)
> -            String key = keys.nextElement().toString();
> -            String value = schema_ns.get(key).toString();
> -            value = (value.length() > 1) ? "xmlns:" + value : "xmlns";
> -            schemaEl.setAttributeNS("http://www.w3.org/2000/xmlns/",
> -                                    value, key);
> -        }
> -        return schemaEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException
> -     * <p/>
> -     * set appropriate attribute as per this object attribute availability.
> -     * Call included schema to append to this schema document collection.
> -     * Then add the document created into document pool.
> -     * <p/>
> -     * Parameter:
> -     * doc          - Document the parent use.
> -     * includeObj   - XmlSchemaInclude that will be serialized.
> -     * schema       - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object representation of XmlSchemaInclude
> -     * **********************************************************************
> -     */
> -    Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
> -                             XmlSchema schema, boolean serializeIncluded)
> -            throws XmlSchemaSerializerException {
> -
> -        Element includeEl = createNewElement(doc, "include",
> -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (includeObj.schemaLocation != null) {
> -            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> -                                     includeObj.schemaLocation);
> -        }
> -
> -        if (includeObj.id != null)
> -            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", includeObj.id);
> -
> -        if (includeObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     includeObj.annotation, schema);
> -            includeEl.appendChild(annotation);
> -        }
> -
> -        //Get the XmlSchema obj and append that to the content
> -        XmlSchema includedSchemaObj = includeObj.getSchema();
> -        if (includedSchemaObj != null && serializeIncluded) {
> -            XmlSchemaSerializer includeSeri = new XmlSchemaSerializer();
> -            includeSeri.serializeSchemaElement(includedSchemaObj, true);
> -//            XmlSchemaObjectCollection ii = includedSchemaObj.getItems();
> -            docs.addAll(includeSeri.docs);
> -        }
> -
> -        return includeEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeImport(Document doc, XmlSchemaImport importObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException
> -     * <p/>
> -     * Add each of the attribute of XmlSchemaImport obj into import Element
> -     * Then serialize schema that is included by this import.  Include the
> -     * serialized schema into document pool.
> -     * <p/>
> -     * Parameter:
> -     * doc          - Document the parent use.
> -     * includeObj   - XmlSchemaInclude that will be serialized.
> -     * schema       - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object representation of XmlSchemaImport
> -     * **********************************************************************
> -     */
> -    Element serializeImport(Document doc, XmlSchemaImport importObj,
> -                            XmlSchema schema, boolean serializeIncluded)
> -            throws XmlSchemaSerializerException {
> -
> -        Element importEl = createNewElement(doc, "import",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (importObj.namespace != null)
> -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
> -                                    importObj.namespace);
> -
> -        if (importObj.schemaLocation != null && !importObj.schemaLocation.trim().equals(""))
> -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> -                                    importObj.schemaLocation);
> -
> -        if (importObj.id != null)
> -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", importObj.id);
> -
> -        if (importObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     importObj.annotation, schema);
> -
> -            importEl.appendChild(annotation);
> -        }
> -
> -        if (importObj.schema != null && serializeIncluded) {
> -
> -
> -            XmlSchemaSerializer importSeri = new XmlSchemaSerializer();
> -            importSeri.serializeSchemaElement(importObj.schema, serializeIncluded);
> -            docs.addAll(importSeri.docs);
> -        }
> -
> -        return importEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException
> -     * <p/>
> -     * Add each of the attribute of XmlSchemaImport obj into import Element
> -     * Then serialize schema that is included by this import.  Include the
> -     * serialized schema into document pool.
> -     * <p/>
> -     * Parameter:
> -     * doc           - Document the parent use.
> -     * redefineObj   - XmlSchemaInclude that will be serialized.
> -     * schema        - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object representation of XmlSchemaRedefine
> -     * **********************************************************************
> -     */
> -    Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element redefine = createNewElement(doc, "redefine",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (redefineObj.schemaLocation != null)
> -            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> -                                    redefineObj.schemaLocation);
> -        else
> -            throw new XmlSchemaSerializerException("redefine must have "
> -                                                   + "schemaLocation fields fill");
> -
> -        if (redefineObj.id != null)
> -            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "id", redefineObj.id);
> -
> -        if (redefineObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     redefineObj.annotation, schema);
> -            redefine.appendChild(annotation);
> -        }
> -        int itemsLength = redefineObj.items.getCount();
> -        for (int i = 0; i < itemsLength; i++) {
> -            XmlSchemaObject obj = redefineObj.items.getItem(i);
> -            if (obj instanceof XmlSchemaSimpleType) {
> -                Element simpleType = serializeSimpleType(doc,
> -                                                         (XmlSchemaSimpleType) obj, schema);
> -                redefine.appendChild(simpleType);
> -            } else if (obj instanceof XmlSchemaComplexType) {
> -                Element complexType = serializeComplexType(doc,
> -                                                           (XmlSchemaComplexType) obj, schema);
> -                redefine.appendChild(complexType);
> -            } else if (obj instanceof XmlSchemaGroupRef) {
> -                Element groupRef = serializeGroupRef(doc,
> -                                                     (XmlSchemaGroupRef) obj, schema);
> -                redefine.appendChild(groupRef);
> -            } else if (obj instanceof XmlSchemaGroup) {
> -                Element group = serializeGroup(doc,
> -                                               (XmlSchemaGroup) obj, schema);
> -                redefine.appendChild(group);
> -            } else if (obj instanceof XmlSchemaAttributeGroup) {
> -                Element attributeGroup = serializeAttributeGroup(doc,
> -                                                                 (XmlSchemaAttributeGroup) obj, schema);
> -                redefine.appendChild(attributeGroup);
> -            } else if (obj instanceof XmlSchemaAttributeGroupRef) {
> -                Element attributeGroupRef = serializeAttributeGroupRef(doc,
> -                                                                       (XmlSchemaAttributeGroupRef) obj, schema);
> -                redefine.appendChild(attributeGroupRef);
> -            }
> -        }
> -        return redefine;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeElement(Document doc, XmlSchemaElement elementObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException
> -     * <p/>
> -     * Each member of Element will be appended and pass the element
> -     * created.  Element processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc           - Document the parent use.
> -     * elementObj   - XmlSchemaInclude that will be serialized.
> -     * schema        - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object of element.
> -     * **********************************************************************
> -     */
> -    Element serializeElement(Document doc, XmlSchemaElement elementObj,
> -                             XmlSchema schema) throws XmlSchemaSerializerException {
> -        Element serializedEl = createNewElement(doc, "element",
> -                                                schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        if (elementObj.refName != null) {
> -
> -            String resolvedName = resolveQName(elementObj.refName, schema);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", resolvedName);
> -        } else if (elementObj.name != null && elementObj.name.length() > 0) {
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                        elementObj.name);
> -        }
> -
> -        if (elementObj.isAbstract)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "abstract", "true");
> -
> -        String block = elementObj.block.getValue();
> -        if (!block.equals("None")) {
> -            block = convertString(block);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "block", block);
> -        }
> -        if (elementObj.defaultValue != null)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
> -                                        elementObj.defaultValue);
> -
> -        String finalDerivation = elementObj.finalDerivation.getValue();
> -        if (!finalDerivation.equals("None")) {
> -            finalDerivation = convertString(finalDerivation);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
> -                                        finalDerivation);
> -        }
> -        if (elementObj.fixedValue != null)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
> -                                        elementObj.fixedValue);
> -
> -        String formDef = elementObj.form.getValue();
> -        if (!formDef.equals(XmlSchemaForm.NONE)) {
> -            formDef = convertString(formDef);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formDef);
> -        }
> -        if (elementObj.id != null)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", elementObj.id);
> -
> -        if (elementObj.maxOccurs < Long.MAX_VALUE && elementObj.maxOccurs > 1)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                        elementObj.maxOccurs + "");
> -        else if (elementObj.maxOccurs == Long.MAX_VALUE)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                        "unbounded");
> -        //else not serialized
> -        
> -        /*if(elementObj.minOccurs >1)
> -		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -		  elementObj.minOccurs + "");*/
> -        
> -        //Change - SK and Ragu cos it wasnt picking up
> -        // minOccurs = 0
> -        if (elementObj.minOccurs < Long.MAX_VALUE && elementObj.minOccurs != 1)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                        elementObj.minOccurs + "");
> -        else if (elementObj.minOccurs == Long.MAX_VALUE)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                        "unbounded");
> -            
> -        /*
> -		  if(elementObj.maxOccursString != null)
> -		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -		  elementObj.maxOccursString);
> -		  else if(elementObj.maxOccurs > 1)
> -		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -		  elementObj.maxOccurs + "");
> -
> -		  if(elementObj.minOccurs > 1)
> -		  serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -		  elementObj.minOccurs + "");
> -		*/
> -        if (elementObj.substitutionGroup != null) {
> -            String resolvedQName = resolveQName(elementObj.substitutionGroup, schema);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "substitutionGroup",
> -                                        resolvedQName);
> -        }
> -        if (elementObj.schemaTypeName != null) {
> -            String resolvedName = resolveQName(elementObj.schemaTypeName, schema);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "type", resolvedName);
> -        }
> -        if (elementObj.annotation != null) {
> -            Element annotationEl = serializeAnnotation(doc,
> -                                                       elementObj.annotation, schema);
> -            serializedEl.appendChild(annotationEl);
> -        }
> -        if (elementObj.schemaType != null) {
> -            if (elementObj.schemaType instanceof XmlSchemaComplexType) {
> -                Element complexType = serializeComplexType(doc,
> -                                                           (XmlSchemaComplexType) elementObj.schemaType, schema);
> -                serializedEl.appendChild(complexType);
> -            } else if (elementObj.schemaType instanceof XmlSchemaSimpleType) {
> -                Element simpleType = serializeSimpleType(doc,
> -                                                         (XmlSchemaSimpleType) elementObj.schemaType, schema);
> -                serializedEl.appendChild(simpleType);
> -            }
> -        }
> -        if (elementObj.constraints.getCount() > 0) {
> -            for (int i = 0; i < elementObj.constraints.getCount(); i++) {
> -                Element constraint = serializeIdentityConstraint(doc,
> -                                                                 (XmlSchemaIdentityConstraint) elementObj.constraints.getItem(i),
> -                                                                 schema);
> -                serializedEl.appendChild(constraint);
> -            }
> -        }
> -
> -        return serializedEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleType(Document doc,
> -     * XmlSchemaSimpleType simpleTypeObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of simple type will be appended and pass the element
> -     * created.  Simple type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * simpleTypeObj     - XmlSchemaSimpleType that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object of SimpleType
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleType(Document doc, XmlSchemaSimpleType simpleTypeObj,
> -                                XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element serializedSimpleType = createNewElement(doc, "simpleType",
> -                                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        String tmp;
> -        tmp = simpleTypeObj.finalDerivation.getValue();
> -        if (!tmp.equals("None")) {
> -
> -            tmp = convertString(tmp);
> -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "final", tmp);
> -        }
> -        if (simpleTypeObj.id != null)
> -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                                simpleTypeObj.id);
> -        if ((simpleTypeObj.name != null) && (!simpleTypeObj.name.equals("")))
> -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                                simpleTypeObj.name);
> -        if (simpleTypeObj.annotation != null) {
> -            Element annotationEl = serializeAnnotation(doc,
> -                                                       simpleTypeObj.annotation, schema);
> -            serializedSimpleType.appendChild(annotationEl);
> -        }
> -        if (simpleTypeObj.content != null) {
> -            if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeRestriction) {
> -                Element restEl = serializeSimpleTypeRestriction(doc,
> -                                                                (XmlSchemaSimpleTypeRestriction) simpleTypeObj.content,
> -                                                                schema);
> -                serializedSimpleType.appendChild(restEl);
> -            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeList) {
> -                Element listEl = serializeSimpleTypeList(doc,
> -                                                         (XmlSchemaSimpleTypeList) simpleTypeObj.content, schema);
> -                serializedSimpleType.appendChild(listEl);
> -            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeUnion) {
> -                Element unionEl = serializeSimpleTypeUnion(doc,
> -                                                           (XmlSchemaSimpleTypeUnion) simpleTypeObj.content, schema);
> -                serializedSimpleType.appendChild(unionEl);
> -            }/*else 
> -			   throw new XmlSchemaSerializerException("Invalid type inserted "
> -			   + "in simpleType content, the content is: " 
> -			   + simpleTypeObj.content.getClass().getName()
> -			   + " valid content should be XmlSchemaSimpleTypeunion, "
> -			   + "XmlSchemaSimpleTyperestriction or list");*/
> -        }/*else
> -		   throw new XmlSchemaSerializerException("simple type must be set "
> -		   + "with content, either union, restriction or list");*/
> -        
> -        return serializedSimpleType;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleTypeRestriction(Document doc,
> -     * XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of simple type will be appended and pass the element
> -     * created.  Simple type's <restriction> processed according to w3c
> -     * Recommendation May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * restrictionObj    - XmlSchemaRestriction that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type restriction and its child.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleTypeRestriction(Document doc,
> -                                           XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -        //todo: need to implement any attribute that related to non schema namespace
> -        Element serializedRestriction = createNewElement(doc, "restriction",
> -                                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (schema.schema_ns_prefix.length() > 0)
> -            serializedRestriction.setPrefix(schema.schema_ns_prefix);
> -        if (restrictionObj.baseTypeName != null) {
> -            String baseType = resolveQName(restrictionObj.baseTypeName, schema);
> -            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "base", baseType);
> -        } else if (restrictionObj.baseType != null && restrictionObj.baseType
> -                instanceof XmlSchemaSimpleType) {
> -            Element inlineSimpleType = serializeSimpleType(doc,
> -                                                           restrictionObj.baseType, schema);
> -            serializedRestriction.appendChild(inlineSimpleType);
> -        } else
> -            throw new XmlSchemaSerializerException("restriction must be define "
> -                                                   + "with specifying base or inline simpleType");
> -
> -        if (restrictionObj.id != null)
> -            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                                 restrictionObj.id);
> -
> -        if (restrictionObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     restrictionObj.annotation, schema);
> -            serializedRestriction.appendChild(annotation);
> -        }
> -        if (restrictionObj.facets.getCount() > 0) {
> -            int facetsNum = restrictionObj.facets.getCount();
> -            for (int i = 0; i < facetsNum; i++) {
> -                Element facetEl = serializeFacet(doc,
> -                                                 (XmlSchemaFacet) restrictionObj.facets.getItem(i), schema);
> -                serializedRestriction.appendChild(facetEl);
> -            }
> -        }
> -        return serializedRestriction;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * detect what type of facet and cass appropriatelly,
> -     * construct the element and pass it.
> -     * <p/>
> -     * Parameter:
> -     * doc       - Document the parent use.
> -     * facetObj  - XmlSchemaFacet that will be serialized.
> -     * schema    - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type with facet.
> -     * **********************************************************************
> -     */
> -    Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
> -                           XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element serializedFacet;
> -        String facetName = facetObj.getClass().getName();
> -
> -        if (facetObj instanceof XmlSchemaMinExclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "minExclusive");
> -        else if (facetObj instanceof XmlSchemaMinInclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "minInclusive");
> -        else if (facetObj instanceof XmlSchemaMaxExclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "maxExclusive");
> -        else if (facetObj instanceof XmlSchemaMaxInclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "maxInclusive");
> -        else if (facetObj instanceof XmlSchemaTotalDigitsFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "totalDigits");
> -        else if (facetObj instanceof XmlSchemaFractionDigitsFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "fractionDigits");
> -        else if (facetObj instanceof XmlSchemaLengthFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "length");
> -        else if (facetObj instanceof XmlSchemaMinLengthFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "minLength");
> -        else if (facetObj instanceof XmlSchemaMaxLengthFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "maxLength");
> -        else if (facetObj instanceof XmlSchemaEnumerationFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "enumeration");
> -        else if (facetObj instanceof XmlSchemaWhiteSpaceFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "whiteSpace");
> -        else if (facetObj instanceof XmlSchemaPatternFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "pattern");
> -        else
> -            throw new XmlSchemaSerializerException("facet not exist "
> -                                                   + facetObj.getClass().getName());
> -
> -        if (facetObj.id != null)
> -            serializedFacet.setAttributeNS(XmlSchema.SCHEMA_NS, "id", facetObj.id);
> -        if (facetObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, facetObj.annotation,
> -                                                     schema);
> -            serializedFacet.appendChild(annotation);
> -        }
> -
> -        return serializedFacet;
> -    }
> -
> -    private Element constructFacet(XmlSchemaFacet facetObj, Document doc,
> -                                   XmlSchema schema, String tagName) {
> -
> -        Element facetEl = createNewElement(doc, tagName,
> -                                           schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "value",
> -                               facetObj.value.toString());
> -        if (facetObj.fixed)
> -            facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed", "true");
> -
> -        if (facetObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     facetObj.annotation, schema);
> -            facetEl.appendChild(annotation);
> -        }
> -        return facetEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeComplexType(Document doc,
> -     * XmlSchemaComplexType complexTypeObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * complexTypeObj  - XmlSchemaFacet that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of complexType.
> -     * **********************************************************************
> -     */
> -    Element serializeComplexType(Document doc,
> -                                 XmlSchemaComplexType complexTypeObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        //todo: need to implement abstract, id, mixed
> -        Element serializedComplexType = createNewElement(doc,
> -                                                         "complexType", schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if ((complexTypeObj.name != null) && (!complexTypeObj.name.equals("")))
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                                 complexTypeObj.name);
> -        /*if(complexTypeObj.annotation != null){
> -		  Element annotationEl = serializeAnnotation(doc, 
> -		  complexTypeObj.annotation, schema);
> -		  serializedComplexType.appendChild(annotationEl);
> -		  }*/
> -        
> -        if (complexTypeObj.isMixed)
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                 "mixed", "true");
> -        if (complexTypeObj.isAbstract)
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                 "abstract", "true");
> -        if (complexTypeObj.id != null)
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                                 complexTypeObj.id);
> -
> -        if (complexTypeObj.contentModel instanceof XmlSchemaSimpleContent) {
> -            Element simpleContent = serializeSimpleContent(doc,
> -                                                           (XmlSchemaSimpleContent) complexTypeObj.contentModel, schema);
> -            serializedComplexType.appendChild(simpleContent);
> -        } else if (complexTypeObj.contentModel instanceof
> -                XmlSchemaComplexContent) {
> -
> -            Element complexContent = serializeComplexContent(doc,
> -                                                             (XmlSchemaComplexContent) complexTypeObj.contentModel, schema);
> -            serializedComplexType.appendChild(complexContent);
> -        }
> -
> -        if (complexTypeObj.particle instanceof XmlSchemaSequence) {
> -            Element sequence = serializeSequence(doc,
> -                                                 (XmlSchemaSequence) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(sequence);
> -        } else if (complexTypeObj.particle instanceof XmlSchemaChoice) {
> -            Element choice = serializeChoice(doc,
> -                                             (XmlSchemaChoice) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(choice);
> -        } else if (complexTypeObj.particle instanceof XmlSchemaAll) {
> -            Element all = serializeAll(doc,
> -                                       (XmlSchemaAll) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(all);
> -        } else if (complexTypeObj.particle instanceof XmlSchemaGroupRef) {
> -            Element group = serializeGroupRef(doc,
> -                                              (XmlSchemaGroupRef) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(group);
> -        }
> -
> -        String block = complexTypeObj.block.getValue();
> -        if (!block.equals("None")) {
> -            block = convertString(block);
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                 "block", block);
> -        }
> -        String finalDerivation = complexTypeObj.finalDerivation.getValue();
> -        if (!finalDerivation.equals("None")) {
> -            finalDerivation = convertString(finalDerivation);
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
> -                                                 finalDerivation);
> -        }
> -
> -        XmlSchemaObjectCollection attrColl = complexTypeObj.attributes;
> -        if (attrColl.getCount() > 0)
> -            setupAttr(doc, attrColl, schema, serializedComplexType);
> -
> -        return serializedComplexType;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  `Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * sequenceObj  - XmlSchemaFacet that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of sequence particle.
> -     * **********************************************************************
> -     */
> -    Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element sequence = createNewElement(doc, "sequence",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        if (sequenceObj.id != null)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "id", sequenceObj.id);
> -
> -
> -        if (sequenceObj.maxOccurs < Long.MAX_VALUE && sequenceObj.maxOccurs > 1)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    sequenceObj.maxOccurs + "");
> -        else if (sequenceObj.maxOccurs == Long.MAX_VALUE)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    "unbounded");
> -        //else not serialized
> -        
> -            
> -        if (sequenceObj.minOccurs > 1)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                    sequenceObj.minOccurs + "");
> -
> -        XmlSchemaObjectCollection seqColl = sequenceObj.items;
> -        int containLength = seqColl.getCount();
> -        for (int i = 0; i < containLength; i++) {
> -            XmlSchemaObject obj = seqColl.getItem(i);
> -            if (obj instanceof XmlSchemaElement) {
> -                Element el = serializeElement(doc,
> -                                              (XmlSchemaElement) obj, schema);
> -                sequence.appendChild(el);
> -            } else if (obj instanceof XmlSchemaGroupRef) {
> -                Element group = serializeGroupRef(doc,
> -                                                  (XmlSchemaGroupRef) obj, schema);
> -                sequence.appendChild(group);
> -            } else if (obj instanceof XmlSchemaChoice) {
> -                Element choice = serializeChoice(doc,
> -                                                 (XmlSchemaChoice) obj, schema);
> -                sequence.appendChild(choice);
> -            } else if (obj instanceof XmlSchemaSequence) {
> -                Element sequenceChild = serializeSequence(doc,
> -                                                          (XmlSchemaSequence) obj, schema);
> -                sequence.appendChild(sequenceChild);
> -            } else if (obj instanceof XmlSchemaAny) {
> -                Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
> -                sequence.appendChild(any);
> -            }
> -        }
> -        return sequence;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  `Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * attributeObj    - XmlSchemaAttribute that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of attribute.
> -     * **********************************************************************
> -     */
> -    Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
> -                               XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element attribute = createNewElement(doc, "attribute",
> -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (attributeObj.refName != null) {
> -            String refName =
> -                    resolveQName(attributeObj.refName, schema);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", refName);
> -        } else if (attributeObj.name != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                     attributeObj.name);
> -
> -        if (attributeObj.schemaTypeName != null) {
> -            String typeName =
> -                    resolveQName(attributeObj.schemaTypeName, schema);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "type", typeName);
> -        }
> -
> -        if (attributeObj.defaultValue != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
> -                                     attributeObj.defaultValue);
> -        if (attributeObj.fixedValue != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
> -                                     attributeObj.fixedValue);
> -
> -        String formType = attributeObj.form.getValue();
> -        if (!formType.equals(XmlSchemaForm.NONE)) {
> -            formType = convertString(formType);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formType);
> -        }
> -        if (attributeObj.id != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "id", attributeObj.id);
> -
> -        String useType = attributeObj.use.getValue();
> -        if (!useType.equals("None")) {
> -            useType = convertString(useType);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "use", useType);
> -        }
> -        if (attributeObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     attributeObj.annotation, schema);
> -            attribute.appendChild(annotation);
> -        }
> -
> -
> -        if (attributeObj.schemaType != null) {
> -            try {
> -                XmlSchemaSimpleType simpleType =
> -                        attributeObj.schemaType;
> -                Element simpleTypeEl = serializeSimpleType(doc,
> -                                                           simpleType, schema);
> -                attribute.appendChild(simpleTypeEl);
> -            } catch (ClassCastException e) {
> -                throw new XmlSchemaSerializerException("only inline simple type allow as attribute's inline type");
> -            }
> -        }
> -
> -        Attr[] unhandled = attributeObj.getUnhandledAttributes();
> -
> -        Hashtable namespaces = new Hashtable();
> -
> -        if (unhandled != null) {
> -
> -            // this is to make the wsdl:arrayType work 
> -            // since unhandles attributes are not handled this is a special case
> -            // but the basic idea is to see if there is any attibute whose value has ":"
> -            // if it is present then it is likely that it is a namespace prefix
> -            // do what is neccesary to get the real namespace for it and make 
> -            // required changes to the prefix 
> -			
> -            for (int i = 0; i < unhandled.length; i++) {
> -                String name = unhandled[i].getNodeName();
> -                String value = unhandled[i].getNodeValue();
> -                if (name.equals("xmlns")) {
> -                    namespaces.put("", value);
> -                } else if (name.startsWith("xmlns")) {
> -                    namespaces.put(name.substring(name.indexOf(":") + 1), value);
> -                }
> -            }
> -
> -            for (int i = 0; i < unhandled.length; i++) {
> -                String value = unhandled[i].getNodeValue();
> -                String nodeName = unhandled[i].getNodeName();
> -                if (value.indexOf(":") > -1 && !nodeName.startsWith("xmlns")) {
> -                    String prefix = value.substring(0, value.indexOf(":"));
> -                    String oldNamespace = null;
> -                    if ((oldNamespace = (String) namespaces.get(prefix)) != null) {
> -                        value = value.substring(value.indexOf(":") + 1);
> -                        Hashtable realNamespaces = schema.getPrefixToNamespaceMap();
> -                        java.util.Iterator iter = realNamespaces.keySet().iterator();
> -                        while (iter.hasNext()) {
> -                            prefix = (String) iter.next();
> -                            String namespace = (String) realNamespaces.get(prefix);
> -                            if (namespace.equals(oldNamespace))
> -                                value = prefix + ":" + value;
> -                        }
> -                    }
> -
> -                }
> -                if (unhandled[i].getNamespaceURI() != null)
> -                    attribute.setAttributeNS(unhandled[i].getNamespaceURI(), nodeName, value);
> -                else
> -                    attribute.setAttribute(nodeName, value);
> -            }
> -        }
> -        return attribute;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * choiceObj       - XmlSchemaChoice that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of choice schema object.
> -     * **********************************************************************
> -     */
> -    Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
> -                            XmlSchema schema) throws XmlSchemaSerializerException {
> -        //todo: handle any non schema attri ?
> -        
> -        Element choice = createNewElement(doc, "choice",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (choiceObj.id != null)
> -            if (choiceObj.id.length() > 0)
> -                choice.setAttributeNS(XmlSchema.SCHEMA_NS, "id", choiceObj.id);
> -
> -
> -        if (choiceObj.maxOccurs < Long.MAX_VALUE && choiceObj.maxOccurs > 1)
> -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                  choiceObj.maxOccurs + "");
> -        else if (choiceObj.maxOccurs == Long.MAX_VALUE)
> -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                  "unbounded");
> -        //else not serialized
> -        
> -        if (choiceObj.minOccurs > 1)
> -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                  choiceObj.minOccurs + "");
> -               
> -
> -        /*
> -		  if(choiceObj.maxOccursString != null)
> -		  choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -		  choiceObj.maxOccursString);
> -		  else if(choiceObj.maxOccurs > 1)
> -		  choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -		  choiceObj.maxOccurs +"");
> -		*/  
> -            
> -        
> -        if (choiceObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     choiceObj.annotation, schema);
> -            choice.appendChild(annotation);
> -        }
> -
> -
> -        XmlSchemaObjectCollection itemColl = choiceObj.items;
> -
> -        if (itemColl != null) {
> -            int itemLength = itemColl.getCount();
> -
> -            for (int i = 0; i < itemLength; i++) {
> -                XmlSchemaObject obj = itemColl.getItem(i);
> -
> -                if (obj instanceof XmlSchemaElement) {
> -                    Element el = serializeElement(doc,
> -                                                  (XmlSchemaElement) obj, schema);
> -                    choice.appendChild(el);
> -                } else if (obj instanceof XmlSchemaGroupRef) {
> -                    Element group = serializeGroupRef(doc,
> -                                                      (XmlSchemaGroupRef) obj, schema);
> -                    choice.appendChild(group);
> -                } else if (obj instanceof XmlSchemaChoice) {
> -                    Element inlineChoice = serializeChoice(doc,
> -                                                           (XmlSchemaChoice) obj, schema);
> -                    choice.appendChild(inlineChoice);
> -                } else if (obj instanceof XmlSchemaSequence) {
> -                    Element inlineSequence = serializeSequence(doc,
> -                                                               (XmlSchemaSequence) obj, schema);
> -                    choice.appendChild(inlineSequence);
> -                } else if (obj instanceof XmlSchemaAny) {
> -                    Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
> -                    choice.appendChild(any);
> -                }
> -            }
> -        }
> -        return choice;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * allObj          - XmlSchemaAll that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of particle all.
> -     * **********************************************************************
> -     */
> -    Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -        Element allEl = createNewElement(doc, "all", schema.schema_ns_prefix,
> -                                         XmlSchema.SCHEMA_NS);
> -
> -        if (allObj.minOccurs == 0)
> -            allEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs", "0");
> -
> -
> -        if (allObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, allObj.annotation,
> -                                                     schema);
> -            allEl.appendChild(annotation);
> -        }
> -
> -        XmlSchemaObjectCollection itemColl = allObj.items;
> -
> -        if (itemColl != null) {
> -            int itemLength = itemColl.getCount();
> -
> -            for (int i = 0; i < itemLength; i++) {
> -                XmlSchemaObject obj = itemColl.getItem(i);
> -                if (obj instanceof XmlSchemaElement) {
> -                    Element el = serializeElement(doc, (XmlSchemaElement) obj,
> -                                                  schema);
> -                    allEl.appendChild(el);
> -                } else
> -                    throw new XmlSchemaSerializerException("Only element "
> -                                                           + "allowed as child of all model type");
> -            }
> -        }
> -
> -        return allEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleTypeList(Document doc,
> -     * XmlSchemaSimpleTypeList listObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * listObj         - XmlSchemaSimpleTypeList that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type with list method.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleTypeList(Document doc,
> -                                    XmlSchemaSimpleTypeList listObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        Element list = createNewElement(doc, "list",
> -                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (listObj.itemTypeName != null) {
> -            String listItemType = resolveQName(listObj.itemTypeName,
> -                                               schema);
> -            list.setAttributeNS(XmlSchema.SCHEMA_NS, "itemType", listItemType);
> -        }
> -        if (listObj.id != null)
> -            list.setAttributeNS(XmlSchema.SCHEMA_NS, "id", listObj.id);
> -
> -        else if (listObj.itemType != null) {
> -            Element inlineSimpleEl = serializeSimpleType(doc, listObj.itemType,
> -                                                         schema);
> -            list.appendChild(inlineSimpleEl);
> -        }
> -        if (listObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, listObj.annotation, schema);
> -            list.appendChild(annotation);
> -        }
> -        return list;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleTypeUnion(Document doc,
> -     * XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc              - Document the parent use.
> -     * unionObj         - XmlSchemaSimpleTypeUnion that will be serialized.
> -     * schema           - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type with union method.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleTypeUnion(Document doc,
> -                                     XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -
> -        Element union = createNewElement(doc, "union",
> -                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (unionObj.id != null)
> -            union.setAttributeNS(XmlSchema.SCHEMA_NS, "id", unionObj.id);
> -
> -        if (unionObj.memberTypesSource != null)
> -            union.setAttributeNS(XmlSchema.SCHEMA_NS, "memberTypes",
> -                                 unionObj.memberTypesSource);
> -        else if (unionObj.baseTypes.getCount() > 0) {
> -            int baseTypesLength = unionObj.baseTypes.getCount();
> -            Element baseType;
> -            for (int i = 0; i < baseTypesLength; i++) {
> -                try {
> -                    baseType = serializeSimpleType(doc,
> -                                                   (XmlSchemaSimpleType) unionObj.baseTypes.getItem(i),
> -                                                   schema);
> -                    union.appendChild(baseType);
> -                } catch (ClassCastException e) {
> -                    throw new XmlSchemaSerializerException("only inline simple type allow as attribute's "
> -                                                           + "inline type");
> -                }
> -            }
> -        }
> -        if (unionObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, unionObj.annotation,
> -                                                     schema);
> -            union.appendChild(annotation);
> -        }
> -        return union;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema)
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc              - Document the parent use.
> -     * anyObj           - XmlSchemaAny that will be serialized.
> -     * schema           - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of any that is part of its parent.
> -     * **********************************************************************
> -     */
> -    Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema) {
> -        Element anyEl = createNewElement(doc, "any", schema.schema_ns_prefix,
> -                                         XmlSchema.SCHEMA_NS);
> -        if (anyObj.id != null)
> -            if (anyObj.id.length() > 0)
> -                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", anyObj.id);
> -
> -
> -        if (anyObj.maxOccurs < Long.MAX_VALUE && anyObj.maxOccurs > 1)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                 anyObj.maxOccurs + "");
> -        else if (anyObj.maxOccurs == Long.MAX_VALUE)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                 "unbounded");
> -        //else not serialized
> -        
> -        if (anyObj.minOccurs > 1)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                 anyObj.minOccurs + "");
> -
> -        if (anyObj.namespace != null)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
> -                                 anyObj.namespace);
> -
> -        if (anyObj.processContent != null) {
> -            String value = anyObj.processContent.getValue();
> -            if (!value.equals("None")) {
> -                String processContent = convertString(value);
> -                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "processContents",
> -                                     processContent);
> -            }
> -        }
> -        if (anyObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     anyObj.annotation, schema);
> -            anyEl.appendChild(annotation);
> -        }
> -
> -        return anyEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc                - Document the parent use.
> -     * groupObj           - XmlSchemaGroup that will be serialized.
> -     * schema             - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of group elements.
> -     * **********************************************************************
> -     */
> -    Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
> -                           XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element group = createNewElement(doc, "group",
> -                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (groupObj.name != null) {
> -            if (groupObj.name.length() > 0) {
> -                group.setAttributeNS(XmlSchema.SCHEMA_NS, "name", groupObj.name);
> -            }
> -        } else
> -            throw new XmlSchemaSerializerException("Group must have " +
> -                                                   "name or ref");
> -
> -
> -        if (groupObj.particle instanceof XmlSchemaSequence) {
> -            Element sequence = serializeSequence(doc,
> -                                                 (XmlSchemaSequence) groupObj.particle, schema);
> -            group.appendChild(sequence);
> -        } else if (groupObj.particle instanceof XmlSchemaChoice) {
> -            Element choice = serializeChoice(doc,
> -                                             (XmlSchemaChoice) groupObj.particle, schema);
> -            group.appendChild(choice);
> -        } else if (groupObj.particle instanceof XmlSchemaAll) {
> -            Element all = serializeAll(doc,
> -                                       (XmlSchemaAll) groupObj.particle, schema);
> -            group.appendChild(all);
> -        }
> -        if (groupObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     groupObj.annotation, schema);
> -            group.appendChild(annotation);
> -        }
> -        return group;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc                   - Document the parent use.
> -     * groupRefObj           - XmlSchemaGroupRef that will be serialized.
> -     * schema                - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of group elements ref inside its parent.
> -     * **********************************************************************
> -     */
> -    Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element groupRef = createNewElement(doc, "group",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (groupRefObj.refName != null) {
> -            String groupRefName = resolveQName(groupRefObj.refName,
> -                                               schema);
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", groupRefName);
> -        } else
> -            throw new XmlSchemaSerializerException("Group must have name or ref");
> -
> -        if (groupRefObj.maxOccurs < Long.MAX_VALUE && groupRefObj.maxOccurs > 1)
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    groupRefObj.maxOccurs + "");
> -        else if (groupRefObj.maxOccurs == Long.MAX_VALUE)
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    "unbounded");
> -        //else not serialized
> -        
> -        if (groupRefObj.minOccurs > 1)
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                    groupRefObj.minOccurs + "");
> -
> -        
> -        /*
> -		  if(groupRefObj.maxOccursString != null)
> -		  groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
> -		  "maxOccurs", groupRefObj.maxOccursString);
> -		  else if(groupRefObj.maxOccurs > 1)
> -		  groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
> -		  "maxOccurs", groupRefObj.maxOccurs + "");
> -		*/
> -        
> -        if (groupRefObj.particle != null) {
> -            Element particleEl;
> -            if (groupRefObj.particle instanceof XmlSchemaChoice)
> -                particleEl = serializeChoice(doc,
> -                                             (XmlSchemaChoice) groupRefObj.particle, schema);
> -            else if (groupRefObj.particle instanceof XmlSchemaSequence)
> -                particleEl = serializeSequence(doc,
> -                                               (XmlSchemaSequence) groupRefObj.particle, schema);
> -            else if (groupRefObj.particle instanceof XmlSchemaAll)
> -                particleEl = serializeAll(doc,
> -                                          (XmlSchemaAll) groupRefObj.particle, schema);
> -            else
> -                throw new XmlSchemaSerializerException("The content of group "
> -                                                       + "ref particle should be"
> -                                                       + " sequence, choice or all reference:  "
> -                                                       + "www.w3.org/TR/xmlschema-1#element-group-3.7.2");
> -        }
> -        if (groupRefObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     groupRefObj.annotation, schema);
> -            groupRef.appendChild(annotation);
> -        }
> -
> -        return groupRef;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleContent(Document doc,
> -     * XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * simpleContentObj  - XmlSchemaSimpleContent that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of complex type simple content.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleContent(Document doc,
> -                                   XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -        Element simpleContent = createNewElement(doc, "simpleContent",
> -                                                 schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        Element content;
> -        if (simpleContentObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     simpleContentObj.annotation, schema);
> -            simpleContent.appendChild(annotation);
> -        }
> -        if (simpleContentObj.content instanceof
> -                XmlSchemaSimpleContentRestriction)
> -            content = serializeSimpleContentRestriction(doc,
> -                                                        (XmlSchemaSimpleContentRestriction) simpleContentObj.content,
> -                                                        schema);
> -        else if (simpleContentObj.content instanceof
> -                XmlSchemaSimpleContentExtension)
> -            content = serializeSimpleContentExtension(doc,
> -                                                      (XmlSchemaSimpleContentExtension) simpleContentObj.content,
> -                                                      schema);
> -        else
> -            throw new XmlSchemaSerializerException("content of simple content "
> -                                                   + "must be restriction or extension");
> -
> -        simpleContent.appendChild(content);
> -        return simpleContent;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeComplexContent(Document doc,
> -     * XmlSchemaComplexContent complexContentObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc                - Document the parent use.
> -     * complexContentObj  - XmlSchemaComplexContent that will be serialized.
> -     * schema             - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of complex type complex content.
> -     * **********************************************************************
> -     */
> -    Element serializeComplexContent(Document doc,
> -                                    XmlSchemaComplexContent complexContentObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        Element complexContent = createNewElement(doc, "complexContent",
> -                                                  schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        if (complexContentObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     complexContentObj.annotation, schema);
> -            complexContent.appendChild(annotation);
> -        }
> -
> -        if (complexContentObj.mixed)
> -            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "mixed", "true");
> -        if (complexContentObj.id != null)
> -            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                          complexContentObj.id);
> -
> -        Element content;
> -        if (complexContentObj.content instanceof
> -                XmlSchemaComplexContentRestriction)
> -
> -            content = serializeComplexContentRestriction(doc,
> -                                                         (XmlSchemaComplexContentRestriction) complexContentObj.content,
> -                                                         schema);
> -        else if (complexContentObj.content instanceof
> -                XmlSchemaComplexContentExtension)
> -            content = serializeComplexContentExtension(doc,
> -                                                       (XmlSchemaComplexContentExtension) complexContentObj.content,
> -                                                       schema);
> -        else
> -            throw new XmlSchemaSerializerException("content of complexContent "
> -                                                   + "must be restriction or extension");
> -
> -        complexContent.appendChild(content);
> -
> -        return complexContent;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeIdentityConstraint(Document doc,
> -     * XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * constraintObj     - XmlSchemaIdentityConstraint that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of key, keyref or unique that part of its parent.
> -     * **********************************************************************
> -     */
> -    Element serializeIdentityConstraint(Document doc,
> -                                        XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        Element constraint;
> -
> -        if (constraintObj instanceof XmlSchemaUnique)
> -            constraint = createNewElement(doc, "unique",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        else if (constraintObj instanceof XmlSchemaKey)
> -            constraint = createNewElement(doc, "key",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        else if (constraintObj instanceof XmlSchemaKeyref) {
> -            constraint = createNewElement(doc, "keyref",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -            XmlSchemaKeyref keyref = (XmlSchemaKeyref) constraintObj;
> -            if (keyref.refer != null) {
> -                String keyrefStr = resolveQName(keyref.refer, schema);
> -                constraint.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                          "refer", keyrefStr);
> -            }
> -        } else
> -            throw new XmlSchemaSerializerException("not valid identity "
> -                                                   + "constraint");
> -
> -        if (constraintObj.name != null)
> -            constraint.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                      constraintObj.name);
> -        if (constraintObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     constraintObj.annotation, schema);
> -            constraint.appendChild(annotation);
> -        }
> -
> -        if (constraintObj.selector != null) {
> -            Element selector = serializeSelector(doc,
> -                                                 constraintObj.selector, schema);
> -            constraint.appendChild(selector);
> -        }
> -        XmlSchemaObjectCollection fieldColl = constraintObj.fields;
> -        if (fieldColl != null) {
> -            int fieldLength = fieldColl.getCount();
> -            for (int i = 0; i < fieldLength; i++) {
> -                Element field = serializeField(doc,
> -                                               (XmlSchemaXPath) fieldColl.getItem(i), schema);
> -                constraint.appendChild(field);
> -            }
> -        }
> -        return constraint;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * selectorObj      - XmlSchemaXPath that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of selector with collection of xpath as its attrib.  The selector
> -     * itself is the part of identity type.  eg <key><selector xpath="..."
> -     * **********************************************************************
> -     */
> -    Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element selector = createNewElement(doc, "selector",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (selectorObj.xpath != null)
> -            selector.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath",
> -                                    selectorObj.xpath);
> -        else
> -            throw new XmlSchemaSerializerException("xpath can't be null");
> -
> -        if (selectorObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     selectorObj.annotation, schema);
> -            selector.appendChild(annotation);
> -        }
> -        return selector;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeField(Document doc, XmlSchemaXPath fieldObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc           - Document the parent use.
> -     * fieldObj      - XmlSchemaXPath that will be serialized.
> -     * schema        - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * field element that part of constraint.
> -     * **********************************************************************
> -     */
> -    Element serializeField(Document doc, XmlSchemaXPath fieldObj,
> -                           XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element field = createNewElement(doc, "field", schema.schema_ns_prefix,
> -                                         XmlSchema.SCHEMA_NS);
> -
> -        if (fieldObj.xpath != null)
> -            field.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath", fieldObj.xpath);
> -        else
> -            throw new XmlSchemaSerializerException("xpath can't be null");
> -
> -        if (fieldObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     fieldObj.annotation, schema);
> -            field.appendChild(annotation);
> -        }
> -
> -        return field;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAnnotation(Document doc, XmlSchemaAnnotation
> -     * annotationObj, XmlSchema schema)
> -     * <p/>
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * annotationObj      - XmlSchemaAnnotation that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * annotation element that part of any type. will contain document and
> -     * appinfo for child.
> -     * **********************************************************************
> -     */
> -    Element serializeAnnotation(Document doc, XmlSchemaAnnotation annotationObj,
> -                                XmlSchema schema) {
> -
> -        Element annotation = createNewElement(doc, "annotation",
> -                                              schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        XmlSchemaObjectCollection contents = annotationObj.items;
> -        int contentLength = contents.getCount();
> -
> -        for (int i = 0; i < contentLength; i++) {
> -            XmlSchemaObject obj = contents.getItem(i);
> -
> -            if (obj instanceof XmlSchemaAppInfo) {
> -                XmlSchemaAppInfo appinfo = (XmlSchemaAppInfo) obj;
> -                Element appInfoEl = serializeAppInfo(doc, appinfo, schema);
> -                annotation.appendChild(appInfoEl);
> -            } else if (obj instanceof XmlSchemaDocumentation) {
> -                XmlSchemaDocumentation documentation =
> -                        (XmlSchemaDocumentation) obj;
> -
> -                Element documentationEl = serializeDocumentation(doc,
> -                                                                 documentation, schema);
> -
> -
> -                annotation.appendChild(documentationEl);
> -            }
> -        }
> -
> -        return annotation;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAppInfo(Document doc,XmlSchemaAppInfo appInfoObj,
> -     * XmlSchema schema)
> -     * <p/>
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * appInfoObj        - XmlSchemaAppInfo that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * App info element that is part of the annotation.
> -     * **********************************************************************
> -     */
> -    Element serializeAppInfo(Document doc, XmlSchemaAppInfo appInfoObj,
> -                             XmlSchema schema) {
> -
> -        Element appInfoEl = createNewElement(doc, "appinfo",
> -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (appInfoObj.source != null)
>
> [... 3227 lines stripped ...]
>
>   


-- 
Dan Diephouse
Envoi Solutions LLC
http://envoisolutions.com
http://netzooid.com/blog


Re: svn commit: r376517 [2/3] - in /webservices/commons/modules/XmlSchema: build.xml maven.xml project.xml src/org/apache/ws/commons/schema/XmlSchemaSerializer.java test/tests/TestElementRefs.java

Posted by Davanum Srinivas <da...@gmail.com>.
Sorry!!! my bad.

-- dims

On 2/16/06, Jeremy Hughes <hu...@apache.org> wrote:
> Dims,
> I think you forgot to commit NISTSchemaTest.java to SVN.
>
> Jeremy
>
>
> On 2/10/06, dims@apache.org <di...@apache.org> wrote:
> > Modified: webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java
> > URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java?rev=376517&r1=376516&r2=376517&view=diff
> > ==============================================================================
> > --- webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java (original)
> > +++ webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java Thu Feb  9 16:52:26 2006
> > @@ -1,2551 +1,2552 @@
> > -/*
> > - * Copyright 2004,2005 The Apache Software Foundation.
> > - *
> > - * Licensed 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.ws.commons.schema;
> > -
> > -import org.w3c.dom.Attr;
> > -import org.w3c.dom.Document;
> > -import org.w3c.dom.Element;
> > -import org.w3c.dom.NamedNodeMap;
> > -import org.w3c.dom.Node;
> > -import org.w3c.dom.NodeList;
> > -import org.w3c.dom.Text;
> > -
> > -import javax.xml.parsers.DocumentBuilder;
> > -import javax.xml.parsers.DocumentBuilderFactory;
> > -import javax.xml.parsers.ParserConfigurationException;
> > -import javax.xml.namespace.QName;
> > -import java.util.ArrayList;
> > -import java.util.Enumeration;
> > -import java.util.Hashtable;
> > -
> > -
> > -public class XmlSchemaSerializer {
> > -    private Hashtable schema_ns;
> > -
> > -    static String xsdPrefix = "xs";
> > -    public static final String xsdNamespace = "http://www.w3.org/2001/XMLSchema";
> > -    ArrayList docs;
> > -    Element schemaElement;
> > -
> > -    private XmlSchemaSerializer() {
> > -        docs = new ArrayList();
> > -        schema_ns = new Hashtable();
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Document[]  serializeSchema(XmlSchema schemaObj,
> > -     * boolean serializeIncluded)
> > -     * <p/>
> > -     * Serialize XmlSchema object pass back the document containing a schema
> > -     * element as its root.
> > -     * <p/>
> > -     * Parameter:
> > -     * schemaObj - Schema object to serialize.
> > -     * serialzeIncluded - whether to serialize the included(imported)
> > -     * schema or not. pass true for serialize all included
> > -     * schema.
> > -     * <p/>
> > -     * Return:
> > -     * Array of Documents that include/imported.
> > -     * **********************************************************************
> > -     */
> > -    public static Document[] serializeSchema(XmlSchema schemaObj,
> > -                                             boolean serializeIncluded) throws XmlSchemaSerializerException {
> > -        return new XmlSchemaSerializer().serializeSchemaElement(schemaObj,
> > -                                                                serializeIncluded);
> > -    }
> > -
> > -    Document[] serializeSchemaElement(XmlSchema schemaObj,
> > -                                      boolean serializeIncluded) throws XmlSchemaSerializerException {
> > -
> > -        XmlSchemaObjectCollection items = schemaObj.getItems();
> > -        Document serializedSchemaDocs = null;
> > -        try {
> > -            DocumentBuilderFactory docFac = DocumentBuilderFactory.newInstance();
> > -            docFac.setNamespaceAware(true);
> > -            DocumentBuilder builder = docFac.newDocumentBuilder();
> > -            serializedSchemaDocs = builder.newDocument();
> > -        } catch (ParserConfigurationException e) {
> > -            throw new XmlSchemaException(e.getMessage());
> > -        }
> > -
> > -        Element serializedSchema;
> > -
> > -        serializedSchema = setupNamespaces(serializedSchemaDocs, schemaObj);
> > -        schemaElement = serializedSchema;
> > -
> > -        if (schemaObj.targetNamespace != null) {
> > -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                            "targetNamespace", schemaObj.targetNamespace);
> > -
> > -            Object targetNS =
> > -                    schema_ns.get(schemaObj.targetNamespace);
> > -
> > -            //if the namespace is not entered then add
> > -            //the targetNamespace as its
> > -            if (targetNS == null) {
> > -                serializedSchema.setAttributeNS("http://www.w3.org/2000/xmlns/",
> > -                                                "xmlns", schemaObj.targetNamespace);
> > -                schema_ns.put(schemaObj.targetNamespace.toString(), "");
> > -            }
> > -        }
> > -
> > -
> > -        //todo: implement xml:lang,
> > -        if (schemaObj.attributeFormDefault != null) {
> > -            String formQualified = schemaObj.attributeFormDefault.getValue();
> > -
> > -            if (!formQualified.equals(XmlSchemaForm.NONE))
> > -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                "attributeFormDefault", convertString(formQualified));
> > -        }
> > -
> > -        if (schemaObj.elementFormDefault != null) {
> > -            String formQualified = schemaObj.elementFormDefault.getValue();
> > -
> > -            if (!formQualified.equals(XmlSchemaForm.NONE))
> > -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                "elementFormDefault", convertString(formQualified));
> > -        }
> > -
> > -
> > -        if (schemaObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(serializedSchemaDocs,
> > -                                                     schemaObj.annotation, schemaObj);
> > -            serializedSchema.appendChild(annotation);
> > -        }
> > -        if (schemaObj.id != null) {
> > -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> > -                                            schemaObj.id);
> > -        }
> > -        if (schemaObj.blockDefault != null) {
> > -            String blockDefault = schemaObj.blockDefault.getValue();
> > -            if (!blockDefault.equals("None")) {
> > -                blockDefault = convertString(blockDefault);
> > -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                "blockDefault", blockDefault);
> > -            }
> > -        }
> > -        if (schemaObj.finalDefault != null) {
> > -            String finalDefault = schemaObj.finalDefault.getValue();
> > -            if (!finalDefault.equals("None")) {
> > -                finalDefault = convertString(finalDefault);
> > -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                "finalDefault", finalDefault);
> > -            }
> > -        }
> > -
> > -        if (schemaObj.version != null) {
> > -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                            "version", schemaObj.version);
> > -        }
> > -
> > -        //after serialize the schema add into documentation
> > -        //and add to document collection array  which at the end
> > -        //returned
> > -        serializeSchemaChild(items, serializedSchema, serializedSchemaDocs,
> > -                             schemaObj, serializeIncluded);
> > -
> > -        serializedSchemaDocs.appendChild(serializedSchema);
> > -        docs.add(serializedSchemaDocs);
> > -
> > -
> > -        Document[] serializedDocs = new Document[docs.size()];
> > -        docs.toArray(serializedDocs);
> > -
> > -        return serializedDocs;
> > -    }
> > -
> > -    private void serializeSchemaChild(XmlSchemaObjectCollection items,
> > -                                      Element serializedSchema, Document serializedSchemaDocs,
> > -                                      XmlSchema schemaObj, boolean serializeIncluded)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        int itemsLength = items.getCount();
> > -        /**
> > -         * For each of the items that belong to this schema,
> > -         * serialize each member found.
> > -         * Permittable member is: element, simpleType, complexType,
> > -         * group, attrributeGroup, Attribute, include, import and redefine.
> > -         * if any of the member found then serialize the component.
> > -         */
> > -        for (int i = 0; i < itemsLength; i++) {
> > -            XmlSchemaObject obj = items.getItem(i);
> > -
> > -            if (obj instanceof XmlSchemaElement) {
> > -                Element e = serializeElement(serializedSchemaDocs,
> > -                                             (XmlSchemaElement) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -
> > -            } else if (obj instanceof XmlSchemaSimpleType) {
> > -                Element e = serializeSimpleType(serializedSchemaDocs,
> > -                                                (XmlSchemaSimpleType) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaComplexType) {
> > -                Element e = serializeComplexType(serializedSchemaDocs,
> > -                                                 (XmlSchemaComplexType) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaGroup) {
> > -                Element e = serializeGroup(serializedSchemaDocs,
> > -                                           (XmlSchemaGroup) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaAttributeGroup) {
> > -                Element e = serializeAttributeGroup(serializedSchemaDocs,
> > -                                                    (XmlSchemaAttributeGroup) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaAttribute) {
> > -                Element e = serializeAttribute(serializedSchemaDocs,
> > -                                               (XmlSchemaAttribute) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaRedefine) {
> > -                Element e = serializeRedefine(serializedSchemaDocs,
> > -                                              (XmlSchemaRedefine) obj, schemaObj);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaInclude) {
> > -                Element e = serializeInclude(serializedSchemaDocs,
> > -                                             (XmlSchemaInclude) obj, schemaObj, serializeIncluded);
> > -                serializedSchema.appendChild(e);
> > -            } else if (obj instanceof XmlSchemaImport) {
> > -                Element e = serializeImport(serializedSchemaDocs,
> > -                                            (XmlSchemaImport) obj, schemaObj, serializeIncluded);
> > -                serializedSchema.appendChild(e);
> > -            }
> > -        }
> > -    }
> > -
> > -    /**
> > -     * Set up <schema> namespaces appropriately and append that attr
> > -     * into specified element
> > -     */
> > -    private Element setupNamespaces(Document schemaDocs, XmlSchema schemaObj) {
> > -        Enumeration prefixs = schemaObj.namespaces.keys();
> > -        Enumeration values = schemaObj.namespaces.elements();
> > -
> > -        /**
> > -         * check all namespace added and register all namespace in
> > -         * hashtable.  When finish then set namespace to schema
> > -         * element appropriatelly.
> > -         */
> > -        for (; prefixs.hasMoreElements() && values.hasMoreElements();) {
> > -            String namespace = values.nextElement().toString();
> > -            String prefix = prefixs.nextElement().toString();
> > -            /*
> > -             * if the prefix is there
> > -             * check whether it is an xsd schema namespace
> > -             * set prefix and namespace to the default attribute
> > -             * then register the prefix on hashtable
> > -             */
> > -            if (/*prefix.trim().length()<1 &&*/ namespace.equals(xsdNamespace)) {
> > -                xsdPrefix = prefix;
> > -                schemaObj.schema_ns_prefix = xsdPrefix;
> > -            }
> > -
> > -            schema_ns.put(namespace, prefix);
> > -        }
> > -        //for schema that not set the xmlns attrib member
> > -        if (schema_ns.get(xsdNamespace) == null) {
> > -            schema_ns.put(xsdNamespace, xsdPrefix);
> > -            schemaObj.schema_ns_prefix = xsdPrefix;
> > -        }
> > -
> > -        Element schemaEl = createNewElement(schemaDocs, "schema",
> > -                                            schemaObj.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        Enumeration keys = schema_ns.keys();
> > -
> > -        while (keys.hasMoreElements()) {
> > -            //let it crash for null pointer because then either the schema
> > -            //is wrong(namespace not set properly or bug in setting ns)
> > -            String key = keys.nextElement().toString();
> > -            String value = schema_ns.get(key).toString();
> > -            value = (value.length() > 1) ? "xmlns:" + value : "xmlns";
> > -            schemaEl.setAttributeNS("http://www.w3.org/2000/xmlns/",
> > -                                    value, key);
> > -        }
> > -        return schemaEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
> > -     * XmlSchema schema)throws XmlSchemaSerializerException
> > -     * <p/>
> > -     * set appropriate attribute as per this object attribute availability.
> > -     * Call included schema to append to this schema document collection.
> > -     * Then add the document created into document pool.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc          - Document the parent use.
> > -     * includeObj   - XmlSchemaInclude that will be serialized.
> > -     * schema       - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element object representation of XmlSchemaInclude
> > -     * **********************************************************************
> > -     */
> > -    Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
> > -                             XmlSchema schema, boolean serializeIncluded)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        Element includeEl = createNewElement(doc, "include",
> > -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (includeObj.schemaLocation != null) {
> > -            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> > -                                     includeObj.schemaLocation);
> > -        }
> > -
> > -        if (includeObj.id != null)
> > -            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", includeObj.id);
> > -
> > -        if (includeObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     includeObj.annotation, schema);
> > -            includeEl.appendChild(annotation);
> > -        }
> > -
> > -        //Get the XmlSchema obj and append that to the content
> > -        XmlSchema includedSchemaObj = includeObj.getSchema();
> > -        if (includedSchemaObj != null && serializeIncluded) {
> > -            XmlSchemaSerializer includeSeri = new XmlSchemaSerializer();
> > -            includeSeri.serializeSchemaElement(includedSchemaObj, true);
> > -//            XmlSchemaObjectCollection ii = includedSchemaObj.getItems();
> > -            docs.addAll(includeSeri.docs);
> > -        }
> > -
> > -        return includeEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeImport(Document doc, XmlSchemaImport importObj,
> > -     * XmlSchema schema)throws XmlSchemaSerializerException
> > -     * <p/>
> > -     * Add each of the attribute of XmlSchemaImport obj into import Element
> > -     * Then serialize schema that is included by this import.  Include the
> > -     * serialized schema into document pool.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc          - Document the parent use.
> > -     * includeObj   - XmlSchemaInclude that will be serialized.
> > -     * schema       - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element object representation of XmlSchemaImport
> > -     * **********************************************************************
> > -     */
> > -    Element serializeImport(Document doc, XmlSchemaImport importObj,
> > -                            XmlSchema schema, boolean serializeIncluded)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        Element importEl = createNewElement(doc, "import",
> > -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (importObj.namespace != null)
> > -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
> > -                                    importObj.namespace);
> > -
> > -        if (importObj.schemaLocation != null && !importObj.schemaLocation.trim().equals(""))
> > -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> > -                                    importObj.schemaLocation);
> > -
> > -        if (importObj.id != null)
> > -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", importObj.id);
> > -
> > -        if (importObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     importObj.annotation, schema);
> > -
> > -            importEl.appendChild(annotation);
> > -        }
> > -
> > -        if (importObj.schema != null && serializeIncluded) {
> > -
> > -
> > -            XmlSchemaSerializer importSeri = new XmlSchemaSerializer();
> > -            importSeri.serializeSchemaElement(importObj.schema, serializeIncluded);
> > -            docs.addAll(importSeri.docs);
> > -        }
> > -
> > -        return importEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
> > -     * XmlSchema schema)throws XmlSchemaSerializerException
> > -     * <p/>
> > -     * Add each of the attribute of XmlSchemaImport obj into import Element
> > -     * Then serialize schema that is included by this import.  Include the
> > -     * serialized schema into document pool.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc           - Document the parent use.
> > -     * redefineObj   - XmlSchemaInclude that will be serialized.
> > -     * schema        - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element object representation of XmlSchemaRedefine
> > -     * **********************************************************************
> > -     */
> > -    Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
> > -                              XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element redefine = createNewElement(doc, "redefine",
> > -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (redefineObj.schemaLocation != null)
> > -            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> > -                                    redefineObj.schemaLocation);
> > -        else
> > -            throw new XmlSchemaSerializerException("redefine must have "
> > -                                                   + "schemaLocation fields fill");
> > -
> > -        if (redefineObj.id != null)
> > -            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "id", redefineObj.id);
> > -
> > -        if (redefineObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     redefineObj.annotation, schema);
> > -            redefine.appendChild(annotation);
> > -        }
> > -        int itemsLength = redefineObj.items.getCount();
> > -        for (int i = 0; i < itemsLength; i++) {
> > -            XmlSchemaObject obj = redefineObj.items.getItem(i);
> > -            if (obj instanceof XmlSchemaSimpleType) {
> > -                Element simpleType = serializeSimpleType(doc,
> > -                                                         (XmlSchemaSimpleType) obj, schema);
> > -                redefine.appendChild(simpleType);
> > -            } else if (obj instanceof XmlSchemaComplexType) {
> > -                Element complexType = serializeComplexType(doc,
> > -                                                           (XmlSchemaComplexType) obj, schema);
> > -                redefine.appendChild(complexType);
> > -            } else if (obj instanceof XmlSchemaGroupRef) {
> > -                Element groupRef = serializeGroupRef(doc,
> > -                                                     (XmlSchemaGroupRef) obj, schema);
> > -                redefine.appendChild(groupRef);
> > -            } else if (obj instanceof XmlSchemaGroup) {
> > -                Element group = serializeGroup(doc,
> > -                                               (XmlSchemaGroup) obj, schema);
> > -                redefine.appendChild(group);
> > -            } else if (obj instanceof XmlSchemaAttributeGroup) {
> > -                Element attributeGroup = serializeAttributeGroup(doc,
> > -                                                                 (XmlSchemaAttributeGroup) obj, schema);
> > -                redefine.appendChild(attributeGroup);
> > -            } else if (obj instanceof XmlSchemaAttributeGroupRef) {
> > -                Element attributeGroupRef = serializeAttributeGroupRef(doc,
> > -                                                                       (XmlSchemaAttributeGroupRef) obj, schema);
> > -                redefine.appendChild(attributeGroupRef);
> > -            }
> > -        }
> > -        return redefine;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeElement(Document doc, XmlSchemaElement elementObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException
> > -     * <p/>
> > -     * Each member of Element will be appended and pass the element
> > -     * created.  Element processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc           - Document the parent use.
> > -     * elementObj   - XmlSchemaInclude that will be serialized.
> > -     * schema        - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element object of element.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeElement(Document doc, XmlSchemaElement elementObj,
> > -                             XmlSchema schema) throws XmlSchemaSerializerException {
> > -        Element serializedEl = createNewElement(doc, "element",
> > -                                                schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -
> > -        if (elementObj.refName != null) {
> > -
> > -            String resolvedName = resolveQName(elementObj.refName, schema);
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", resolvedName);
> > -        } else if (elementObj.name != null && elementObj.name.length() > 0) {
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> > -                                        elementObj.name);
> > -        }
> > -
> > -        if (elementObj.isAbstract)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "abstract", "true");
> > -
> > -        String block = elementObj.block.getValue();
> > -        if (!block.equals("None")) {
> > -            block = convertString(block);
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "block", block);
> > -        }
> > -        if (elementObj.defaultValue != null)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
> > -                                        elementObj.defaultValue);
> > -
> > -        String finalDerivation = elementObj.finalDerivation.getValue();
> > -        if (!finalDerivation.equals("None")) {
> > -            finalDerivation = convertString(finalDerivation);
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
> > -                                        finalDerivation);
> > -        }
> > -        if (elementObj.fixedValue != null)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
> > -                                        elementObj.fixedValue);
> > -
> > -        String formDef = elementObj.form.getValue();
> > -        if (!formDef.equals(XmlSchemaForm.NONE)) {
> > -            formDef = convertString(formDef);
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formDef);
> > -        }
> > -        if (elementObj.id != null)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", elementObj.id);
> > -
> > -        if (elementObj.maxOccurs < Long.MAX_VALUE && elementObj.maxOccurs > 1)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                        elementObj.maxOccurs + "");
> > -        else if (elementObj.maxOccurs == Long.MAX_VALUE)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                        "unbounded");
> > -        //else not serialized
> > -
> > -        /*if(elementObj.minOccurs >1)
> > -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                 elementObj.minOccurs + "");*/
> > -
> > -        //Change - SK and Ragu cos it wasnt picking up
> > -        // minOccurs = 0
> > -        if (elementObj.minOccurs < Long.MAX_VALUE && elementObj.minOccurs != 1)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                                        elementObj.minOccurs + "");
> > -        else if (elementObj.minOccurs == Long.MAX_VALUE)
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                                        "unbounded");
> > -
> > -        /*
> > -                 if(elementObj.maxOccursString != null)
> > -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                 elementObj.maxOccursString);
> > -                 else if(elementObj.maxOccurs > 1)
> > -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                 elementObj.maxOccurs + "");
> > -
> > -                 if(elementObj.minOccurs > 1)
> > -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                 elementObj.minOccurs + "");
> > -               */
> > -        if (elementObj.substitutionGroup != null) {
> > -            String resolvedQName = resolveQName(elementObj.substitutionGroup, schema);
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "substitutionGroup",
> > -                                        resolvedQName);
> > -        }
> > -        if (elementObj.schemaTypeName != null) {
> > -            String resolvedName = resolveQName(elementObj.schemaTypeName, schema);
> > -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "type", resolvedName);
> > -        }
> > -        if (elementObj.annotation != null) {
> > -            Element annotationEl = serializeAnnotation(doc,
> > -                                                       elementObj.annotation, schema);
> > -            serializedEl.appendChild(annotationEl);
> > -        }
> > -        if (elementObj.schemaType != null) {
> > -            if (elementObj.schemaType instanceof XmlSchemaComplexType) {
> > -                Element complexType = serializeComplexType(doc,
> > -                                                           (XmlSchemaComplexType) elementObj.schemaType, schema);
> > -                serializedEl.appendChild(complexType);
> > -            } else if (elementObj.schemaType instanceof XmlSchemaSimpleType) {
> > -                Element simpleType = serializeSimpleType(doc,
> > -                                                         (XmlSchemaSimpleType) elementObj.schemaType, schema);
> > -                serializedEl.appendChild(simpleType);
> > -            }
> > -        }
> > -        if (elementObj.constraints.getCount() > 0) {
> > -            for (int i = 0; i < elementObj.constraints.getCount(); i++) {
> > -                Element constraint = serializeIdentityConstraint(doc,
> > -                                                                 (XmlSchemaIdentityConstraint) elementObj.constraints.getItem(i),
> > -                                                                 schema);
> > -                serializedEl.appendChild(constraint);
> > -            }
> > -        }
> > -
> > -        return serializedEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSimpleType(Document doc,
> > -     * XmlSchemaSimpleType simpleTypeObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of simple type will be appended and pass the element
> > -     * created.  Simple type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * simpleTypeObj     - XmlSchemaSimpleType that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element object of SimpleType
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSimpleType(Document doc, XmlSchemaSimpleType simpleTypeObj,
> > -                                XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element serializedSimpleType = createNewElement(doc, "simpleType",
> > -                                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -
> > -        String tmp;
> > -        tmp = simpleTypeObj.finalDerivation.getValue();
> > -        if (!tmp.equals("None")) {
> > -
> > -            tmp = convertString(tmp);
> > -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "final", tmp);
> > -        }
> > -        if (simpleTypeObj.id != null)
> > -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> > -                                                simpleTypeObj.id);
> > -        if ((simpleTypeObj.name != null) && (!simpleTypeObj.name.equals("")))
> > -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> > -                                                simpleTypeObj.name);
> > -        if (simpleTypeObj.annotation != null) {
> > -            Element annotationEl = serializeAnnotation(doc,
> > -                                                       simpleTypeObj.annotation, schema);
> > -            serializedSimpleType.appendChild(annotationEl);
> > -        }
> > -        if (simpleTypeObj.content != null) {
> > -            if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeRestriction) {
> > -                Element restEl = serializeSimpleTypeRestriction(doc,
> > -                                                                (XmlSchemaSimpleTypeRestriction) simpleTypeObj.content,
> > -                                                                schema);
> > -                serializedSimpleType.appendChild(restEl);
> > -            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeList) {
> > -                Element listEl = serializeSimpleTypeList(doc,
> > -                                                         (XmlSchemaSimpleTypeList) simpleTypeObj.content, schema);
> > -                serializedSimpleType.appendChild(listEl);
> > -            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeUnion) {
> > -                Element unionEl = serializeSimpleTypeUnion(doc,
> > -                                                           (XmlSchemaSimpleTypeUnion) simpleTypeObj.content, schema);
> > -                serializedSimpleType.appendChild(unionEl);
> > -            }/*else
> > -                          throw new XmlSchemaSerializerException("Invalid type inserted "
> > -                          + "in simpleType content, the content is: "
> > -                          + simpleTypeObj.content.getClass().getName()
> > -                          + " valid content should be XmlSchemaSimpleTypeunion, "
> > -                          + "XmlSchemaSimpleTyperestriction or list");*/
> > -        }/*else
> > -                  throw new XmlSchemaSerializerException("simple type must be set "
> > -                  + "with content, either union, restriction or list");*/
> > -
> > -        return serializedSimpleType;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSimpleTypeRestriction(Document doc,
> > -     * XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of simple type will be appended and pass the element
> > -     * created.  Simple type's <restriction> processed according to w3c
> > -     * Recommendation May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * restrictionObj    - XmlSchemaRestriction that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of simple type restriction and its child.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSimpleTypeRestriction(Document doc,
> > -                                           XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -        //todo: need to implement any attribute that related to non schema namespace
> > -        Element serializedRestriction = createNewElement(doc, "restriction",
> > -                                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (schema.schema_ns_prefix.length() > 0)
> > -            serializedRestriction.setPrefix(schema.schema_ns_prefix);
> > -        if (restrictionObj.baseTypeName != null) {
> > -            String baseType = resolveQName(restrictionObj.baseTypeName, schema);
> > -            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "base", baseType);
> > -        } else if (restrictionObj.baseType != null && restrictionObj.baseType
> > -                instanceof XmlSchemaSimpleType) {
> > -            Element inlineSimpleType = serializeSimpleType(doc,
> > -                                                           restrictionObj.baseType, schema);
> > -            serializedRestriction.appendChild(inlineSimpleType);
> > -        } else
> > -            throw new XmlSchemaSerializerException("restriction must be define "
> > -                                                   + "with specifying base or inline simpleType");
> > -
> > -        if (restrictionObj.id != null)
> > -            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> > -                                                 restrictionObj.id);
> > -
> > -        if (restrictionObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     restrictionObj.annotation, schema);
> > -            serializedRestriction.appendChild(annotation);
> > -        }
> > -        if (restrictionObj.facets.getCount() > 0) {
> > -            int facetsNum = restrictionObj.facets.getCount();
> > -            for (int i = 0; i < facetsNum; i++) {
> > -                Element facetEl = serializeFacet(doc,
> > -                                                 (XmlSchemaFacet) restrictionObj.facets.getItem(i), schema);
> > -                serializedRestriction.appendChild(facetEl);
> > -            }
> > -        }
> > -        return serializedRestriction;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * detect what type of facet and cass appropriatelly,
> > -     * construct the element and pass it.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc       - Document the parent use.
> > -     * facetObj  - XmlSchemaFacet that will be serialized.
> > -     * schema    - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of simple type with facet.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
> > -                           XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element serializedFacet;
> > -        String facetName = facetObj.getClass().getName();
> > -
> > -        if (facetObj instanceof XmlSchemaMinExclusiveFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "minExclusive");
> > -        else if (facetObj instanceof XmlSchemaMinInclusiveFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "minInclusive");
> > -        else if (facetObj instanceof XmlSchemaMaxExclusiveFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "maxExclusive");
> > -        else if (facetObj instanceof XmlSchemaMaxInclusiveFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "maxInclusive");
> > -        else if (facetObj instanceof XmlSchemaTotalDigitsFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "totalDigits");
> > -        else if (facetObj instanceof XmlSchemaFractionDigitsFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "fractionDigits");
> > -        else if (facetObj instanceof XmlSchemaLengthFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "length");
> > -        else if (facetObj instanceof XmlSchemaMinLengthFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "minLength");
> > -        else if (facetObj instanceof XmlSchemaMaxLengthFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "maxLength");
> > -        else if (facetObj instanceof XmlSchemaEnumerationFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "enumeration");
> > -        else if (facetObj instanceof XmlSchemaWhiteSpaceFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "whiteSpace");
> > -        else if (facetObj instanceof XmlSchemaPatternFacet)
> > -            serializedFacet = constructFacet(facetObj, doc, schema,
> > -                                             "pattern");
> > -        else
> > -            throw new XmlSchemaSerializerException("facet not exist "
> > -                                                   + facetObj.getClass().getName());
> > -
> > -        if (facetObj.id != null)
> > -            serializedFacet.setAttributeNS(XmlSchema.SCHEMA_NS, "id", facetObj.id);
> > -        if (facetObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc, facetObj.annotation,
> > -                                                     schema);
> > -            serializedFacet.appendChild(annotation);
> > -        }
> > -
> > -        return serializedFacet;
> > -    }
> > -
> > -    private Element constructFacet(XmlSchemaFacet facetObj, Document doc,
> > -                                   XmlSchema schema, String tagName) {
> > -
> > -        Element facetEl = createNewElement(doc, tagName,
> > -                                           schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "value",
> > -                               facetObj.value.toString());
> > -        if (facetObj.fixed)
> > -            facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed", "true");
> > -
> > -        if (facetObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     facetObj.annotation, schema);
> > -            facetEl.appendChild(annotation);
> > -        }
> > -        return facetEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeComplexType(Document doc,
> > -     * XmlSchemaComplexType complexTypeObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc             - Document the parent use.
> > -     * complexTypeObj  - XmlSchemaFacet that will be serialized.
> > -     * schema          - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of complexType.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeComplexType(Document doc,
> > -                                 XmlSchemaComplexType complexTypeObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        //todo: need to implement abstract, id, mixed
> > -        Element serializedComplexType = createNewElement(doc,
> > -                                                         "complexType", schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if ((complexTypeObj.name != null) && (!complexTypeObj.name.equals("")))
> > -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> > -                                                 complexTypeObj.name);
> > -        /*if(complexTypeObj.annotation != null){
> > -                 Element annotationEl = serializeAnnotation(doc,
> > -                 complexTypeObj.annotation, schema);
> > -                 serializedComplexType.appendChild(annotationEl);
> > -                 }*/
> > -
> > -        if (complexTypeObj.isMixed)
> > -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                 "mixed", "true");
> > -        if (complexTypeObj.isAbstract)
> > -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                 "abstract", "true");
> > -        if (complexTypeObj.id != null)
> > -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> > -                                                 complexTypeObj.id);
> > -
> > -        if (complexTypeObj.contentModel instanceof XmlSchemaSimpleContent) {
> > -            Element simpleContent = serializeSimpleContent(doc,
> > -                                                           (XmlSchemaSimpleContent) complexTypeObj.contentModel, schema);
> > -            serializedComplexType.appendChild(simpleContent);
> > -        } else if (complexTypeObj.contentModel instanceof
> > -                XmlSchemaComplexContent) {
> > -
> > -            Element complexContent = serializeComplexContent(doc,
> > -                                                             (XmlSchemaComplexContent) complexTypeObj.contentModel, schema);
> > -            serializedComplexType.appendChild(complexContent);
> > -        }
> > -
> > -        if (complexTypeObj.particle instanceof XmlSchemaSequence) {
> > -            Element sequence = serializeSequence(doc,
> > -                                                 (XmlSchemaSequence) complexTypeObj.particle, schema);
> > -            serializedComplexType.appendChild(sequence);
> > -        } else if (complexTypeObj.particle instanceof XmlSchemaChoice) {
> > -            Element choice = serializeChoice(doc,
> > -                                             (XmlSchemaChoice) complexTypeObj.particle, schema);
> > -            serializedComplexType.appendChild(choice);
> > -        } else if (complexTypeObj.particle instanceof XmlSchemaAll) {
> > -            Element all = serializeAll(doc,
> > -                                       (XmlSchemaAll) complexTypeObj.particle, schema);
> > -            serializedComplexType.appendChild(all);
> > -        } else if (complexTypeObj.particle instanceof XmlSchemaGroupRef) {
> > -            Element group = serializeGroupRef(doc,
> > -                                              (XmlSchemaGroupRef) complexTypeObj.particle, schema);
> > -            serializedComplexType.appendChild(group);
> > -        }
> > -
> > -        String block = complexTypeObj.block.getValue();
> > -        if (!block.equals("None")) {
> > -            block = convertString(block);
> > -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                                 "block", block);
> > -        }
> > -        String finalDerivation = complexTypeObj.finalDerivation.getValue();
> > -        if (!finalDerivation.equals("None")) {
> > -            finalDerivation = convertString(finalDerivation);
> > -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
> > -                                                 finalDerivation);
> > -        }
> > -
> > -        XmlSchemaObjectCollection attrColl = complexTypeObj.attributes;
> > -        if (attrColl.getCount() > 0)
> > -            setupAttr(doc, attrColl, schema, serializedComplexType);
> > -
> > -        return serializedComplexType;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
> > -     * XmlSchema schema)throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  `Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc             - Document the parent use.
> > -     * sequenceObj  - XmlSchemaFacet that will be serialized.
> > -     * schema          - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of sequence particle.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
> > -                              XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element sequence = createNewElement(doc, "sequence",
> > -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -
> > -        if (sequenceObj.id != null)
> > -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "id", sequenceObj.id);
> > -
> > -
> > -        if (sequenceObj.maxOccurs < Long.MAX_VALUE && sequenceObj.maxOccurs > 1)
> > -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                    sequenceObj.maxOccurs + "");
> > -        else if (sequenceObj.maxOccurs == Long.MAX_VALUE)
> > -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                    "unbounded");
> > -        //else not serialized
> > -
> > -
> > -        if (sequenceObj.minOccurs > 1)
> > -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                                    sequenceObj.minOccurs + "");
> > -
> > -        XmlSchemaObjectCollection seqColl = sequenceObj.items;
> > -        int containLength = seqColl.getCount();
> > -        for (int i = 0; i < containLength; i++) {
> > -            XmlSchemaObject obj = seqColl.getItem(i);
> > -            if (obj instanceof XmlSchemaElement) {
> > -                Element el = serializeElement(doc,
> > -                                              (XmlSchemaElement) obj, schema);
> > -                sequence.appendChild(el);
> > -            } else if (obj instanceof XmlSchemaGroupRef) {
> > -                Element group = serializeGroupRef(doc,
> > -                                                  (XmlSchemaGroupRef) obj, schema);
> > -                sequence.appendChild(group);
> > -            } else if (obj instanceof XmlSchemaChoice) {
> > -                Element choice = serializeChoice(doc,
> > -                                                 (XmlSchemaChoice) obj, schema);
> > -                sequence.appendChild(choice);
> > -            } else if (obj instanceof XmlSchemaSequence) {
> > -                Element sequenceChild = serializeSequence(doc,
> > -                                                          (XmlSchemaSequence) obj, schema);
> > -                sequence.appendChild(sequenceChild);
> > -            } else if (obj instanceof XmlSchemaAny) {
> > -                Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
> > -                sequence.appendChild(any);
> > -            }
> > -        }
> > -        return sequence;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  `Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc             - Document the parent use.
> > -     * attributeObj    - XmlSchemaAttribute that will be serialized.
> > -     * schema          - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of attribute.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
> > -                               XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element attribute = createNewElement(doc, "attribute",
> > -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -        if (attributeObj.refName != null) {
> > -            String refName =
> > -                    resolveQName(attributeObj.refName, schema);
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", refName);
> > -        } else if (attributeObj.name != null)
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> > -                                     attributeObj.name);
> > -
> > -        if (attributeObj.schemaTypeName != null) {
> > -            String typeName =
> > -                    resolveQName(attributeObj.schemaTypeName, schema);
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "type", typeName);
> > -        }
> > -
> > -        if (attributeObj.defaultValue != null)
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
> > -                                     attributeObj.defaultValue);
> > -        if (attributeObj.fixedValue != null)
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
> > -                                     attributeObj.fixedValue);
> > -
> > -        String formType = attributeObj.form.getValue();
> > -        if (!formType.equals(XmlSchemaForm.NONE)) {
> > -            formType = convertString(formType);
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formType);
> > -        }
> > -        if (attributeObj.id != null)
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "id", attributeObj.id);
> > -
> > -        String useType = attributeObj.use.getValue();
> > -        if (!useType.equals("None")) {
> > -            useType = convertString(useType);
> > -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "use", useType);
> > -        }
> > -        if (attributeObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     attributeObj.annotation, schema);
> > -            attribute.appendChild(annotation);
> > -        }
> > -
> > -
> > -        if (attributeObj.schemaType != null) {
> > -            try {
> > -                XmlSchemaSimpleType simpleType =
> > -                        attributeObj.schemaType;
> > -                Element simpleTypeEl = serializeSimpleType(doc,
> > -                                                           simpleType, schema);
> > -                attribute.appendChild(simpleTypeEl);
> > -            } catch (ClassCastException e) {
> > -                throw new XmlSchemaSerializerException("only inline simple type allow as attribute's inline type");
> > -            }
> > -        }
> > -
> > -        Attr[] unhandled = attributeObj.getUnhandledAttributes();
> > -
> > -        Hashtable namespaces = new Hashtable();
> > -
> > -        if (unhandled != null) {
> > -
> > -            // this is to make the wsdl:arrayType work
> > -            // since unhandles attributes are not handled this is a special case
> > -            // but the basic idea is to see if there is any attibute whose value has ":"
> > -            // if it is present then it is likely that it is a namespace prefix
> > -            // do what is neccesary to get the real namespace for it and make
> > -            // required changes to the prefix
> > -
> > -            for (int i = 0; i < unhandled.length; i++) {
> > -                String name = unhandled[i].getNodeName();
> > -                String value = unhandled[i].getNodeValue();
> > -                if (name.equals("xmlns")) {
> > -                    namespaces.put("", value);
> > -                } else if (name.startsWith("xmlns")) {
> > -                    namespaces.put(name.substring(name.indexOf(":") + 1), value);
> > -                }
> > -            }
> > -
> > -            for (int i = 0; i < unhandled.length; i++) {
> > -                String value = unhandled[i].getNodeValue();
> > -                String nodeName = unhandled[i].getNodeName();
> > -                if (value.indexOf(":") > -1 && !nodeName.startsWith("xmlns")) {
> > -                    String prefix = value.substring(0, value.indexOf(":"));
> > -                    String oldNamespace = null;
> > -                    if ((oldNamespace = (String) namespaces.get(prefix)) != null) {
> > -                        value = value.substring(value.indexOf(":") + 1);
> > -                        Hashtable realNamespaces = schema.getPrefixToNamespaceMap();
> > -                        java.util.Iterator iter = realNamespaces.keySet().iterator();
> > -                        while (iter.hasNext()) {
> > -                            prefix = (String) iter.next();
> > -                            String namespace = (String) realNamespaces.get(prefix);
> > -                            if (namespace.equals(oldNamespace))
> > -                                value = prefix + ":" + value;
> > -                        }
> > -                    }
> > -
> > -                }
> > -                if (unhandled[i].getNamespaceURI() != null)
> > -                    attribute.setAttributeNS(unhandled[i].getNamespaceURI(), nodeName, value);
> > -                else
> > -                    attribute.setAttribute(nodeName, value);
> > -            }
> > -        }
> > -        return attribute;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc             - Document the parent use.
> > -     * choiceObj       - XmlSchemaChoice that will be serialized.
> > -     * schema          - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of choice schema object.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
> > -                            XmlSchema schema) throws XmlSchemaSerializerException {
> > -        //todo: handle any non schema attri ?
> > -
> > -        Element choice = createNewElement(doc, "choice",
> > -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -        if (choiceObj.id != null)
> > -            if (choiceObj.id.length() > 0)
> > -                choice.setAttributeNS(XmlSchema.SCHEMA_NS, "id", choiceObj.id);
> > -
> > -
> > -        if (choiceObj.maxOccurs < Long.MAX_VALUE && choiceObj.maxOccurs > 1)
> > -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                  choiceObj.maxOccurs + "");
> > -        else if (choiceObj.maxOccurs == Long.MAX_VALUE)
> > -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                  "unbounded");
> > -        //else not serialized
> > -
> > -        if (choiceObj.minOccurs > 1)
> > -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                                  choiceObj.minOccurs + "");
> > -
> > -
> > -        /*
> > -                 if(choiceObj.maxOccursString != null)
> > -                 choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                 choiceObj.maxOccursString);
> > -                 else if(choiceObj.maxOccurs > 1)
> > -                 choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                 choiceObj.maxOccurs +"");
> > -               */
> > -
> > -
> > -        if (choiceObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     choiceObj.annotation, schema);
> > -            choice.appendChild(annotation);
> > -        }
> > -
> > -
> > -        XmlSchemaObjectCollection itemColl = choiceObj.items;
> > -
> > -        if (itemColl != null) {
> > -            int itemLength = itemColl.getCount();
> > -
> > -            for (int i = 0; i < itemLength; i++) {
> > -                XmlSchemaObject obj = itemColl.getItem(i);
> > -
> > -                if (obj instanceof XmlSchemaElement) {
> > -                    Element el = serializeElement(doc,
> > -                                                  (XmlSchemaElement) obj, schema);
> > -                    choice.appendChild(el);
> > -                } else if (obj instanceof XmlSchemaGroupRef) {
> > -                    Element group = serializeGroupRef(doc,
> > -                                                      (XmlSchemaGroupRef) obj, schema);
> > -                    choice.appendChild(group);
> > -                } else if (obj instanceof XmlSchemaChoice) {
> > -                    Element inlineChoice = serializeChoice(doc,
> > -                                                           (XmlSchemaChoice) obj, schema);
> > -                    choice.appendChild(inlineChoice);
> > -                } else if (obj instanceof XmlSchemaSequence) {
> > -                    Element inlineSequence = serializeSequence(doc,
> > -                                                               (XmlSchemaSequence) obj, schema);
> > -                    choice.appendChild(inlineSequence);
> > -                } else if (obj instanceof XmlSchemaAny) {
> > -                    Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
> > -                    choice.appendChild(any);
> > -                }
> > -            }
> > -        }
> > -        return choice;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc             - Document the parent use.
> > -     * allObj          - XmlSchemaAll that will be serialized.
> > -     * schema          - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of particle all.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -        Element allEl = createNewElement(doc, "all", schema.schema_ns_prefix,
> > -                                         XmlSchema.SCHEMA_NS);
> > -
> > -        if (allObj.minOccurs == 0)
> > -            allEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs", "0");
> > -
> > -
> > -        if (allObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc, allObj.annotation,
> > -                                                     schema);
> > -            allEl.appendChild(annotation);
> > -        }
> > -
> > -        XmlSchemaObjectCollection itemColl = allObj.items;
> > -
> > -        if (itemColl != null) {
> > -            int itemLength = itemColl.getCount();
> > -
> > -            for (int i = 0; i < itemLength; i++) {
> > -                XmlSchemaObject obj = itemColl.getItem(i);
> > -                if (obj instanceof XmlSchemaElement) {
> > -                    Element el = serializeElement(doc, (XmlSchemaElement) obj,
> > -                                                  schema);
> > -                    allEl.appendChild(el);
> > -                } else
> > -                    throw new XmlSchemaSerializerException("Only element "
> > -                                                           + "allowed as child of all model type");
> > -            }
> > -        }
> > -
> > -        return allEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSimpleTypeList(Document doc,
> > -     * XmlSchemaSimpleTypeList listObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc             - Document the parent use.
> > -     * listObj         - XmlSchemaSimpleTypeList that will be serialized.
> > -     * schema          - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of simple type with list method.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSimpleTypeList(Document doc,
> > -                                    XmlSchemaSimpleTypeList listObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        Element list = createNewElement(doc, "list",
> > -                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (listObj.itemTypeName != null) {
> > -            String listItemType = resolveQName(listObj.itemTypeName,
> > -                                               schema);
> > -            list.setAttributeNS(XmlSchema.SCHEMA_NS, "itemType", listItemType);
> > -        }
> > -        if (listObj.id != null)
> > -            list.setAttributeNS(XmlSchema.SCHEMA_NS, "id", listObj.id);
> > -
> > -        else if (listObj.itemType != null) {
> > -            Element inlineSimpleEl = serializeSimpleType(doc, listObj.itemType,
> > -                                                         schema);
> > -            list.appendChild(inlineSimpleEl);
> > -        }
> > -        if (listObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc, listObj.annotation, schema);
> > -            list.appendChild(annotation);
> > -        }
> > -        return list;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSimpleTypeUnion(Document doc,
> > -     * XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc              - Document the parent use.
> > -     * unionObj         - XmlSchemaSimpleTypeUnion that will be serialized.
> > -     * schema           - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of simple type with union method.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSimpleTypeUnion(Document doc,
> > -                                     XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -
> > -
> > -        Element union = createNewElement(doc, "union",
> > -                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -        if (unionObj.id != null)
> > -            union.setAttributeNS(XmlSchema.SCHEMA_NS, "id", unionObj.id);
> > -
> > -        if (unionObj.memberTypesSource != null)
> > -            union.setAttributeNS(XmlSchema.SCHEMA_NS, "memberTypes",
> > -                                 unionObj.memberTypesSource);
> > -        else if (unionObj.baseTypes.getCount() > 0) {
> > -            int baseTypesLength = unionObj.baseTypes.getCount();
> > -            Element baseType;
> > -            for (int i = 0; i < baseTypesLength; i++) {
> > -                try {
> > -                    baseType = serializeSimpleType(doc,
> > -                                                   (XmlSchemaSimpleType) unionObj.baseTypes.getItem(i),
> > -                                                   schema);
> > -                    union.appendChild(baseType);
> > -                } catch (ClassCastException e) {
> > -                    throw new XmlSchemaSerializerException("only inline simple type allow as attribute's "
> > -                                                           + "inline type");
> > -                }
> > -            }
> > -        }
> > -        if (unionObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc, unionObj.annotation,
> > -                                                     schema);
> > -            union.appendChild(annotation);
> > -        }
> > -        return union;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema)
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc              - Document the parent use.
> > -     * anyObj           - XmlSchemaAny that will be serialized.
> > -     * schema           - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of any that is part of its parent.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema) {
> > -        Element anyEl = createNewElement(doc, "any", schema.schema_ns_prefix,
> > -                                         XmlSchema.SCHEMA_NS);
> > -        if (anyObj.id != null)
> > -            if (anyObj.id.length() > 0)
> > -                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", anyObj.id);
> > -
> > -
> > -        if (anyObj.maxOccurs < Long.MAX_VALUE && anyObj.maxOccurs > 1)
> > -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                 anyObj.maxOccurs + "");
> > -        else if (anyObj.maxOccurs == Long.MAX_VALUE)
> > -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                 "unbounded");
> > -        //else not serialized
> > -
> > -        if (anyObj.minOccurs > 1)
> > -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                                 anyObj.minOccurs + "");
> > -
> > -        if (anyObj.namespace != null)
> > -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
> > -                                 anyObj.namespace);
> > -
> > -        if (anyObj.processContent != null) {
> > -            String value = anyObj.processContent.getValue();
> > -            if (!value.equals("None")) {
> > -                String processContent = convertString(value);
> > -                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "processContents",
> > -                                     processContent);
> > -            }
> > -        }
> > -        if (anyObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     anyObj.annotation, schema);
> > -            anyEl.appendChild(annotation);
> > -        }
> > -
> > -        return anyEl;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc                - Document the parent use.
> > -     * groupObj           - XmlSchemaGroup that will be serialized.
> > -     * schema             - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of group elements.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
> > -                           XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element group = createNewElement(doc, "group",
> > -                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (groupObj.name != null) {
> > -            if (groupObj.name.length() > 0) {
> > -                group.setAttributeNS(XmlSchema.SCHEMA_NS, "name", groupObj.name);
> > -            }
> > -        } else
> > -            throw new XmlSchemaSerializerException("Group must have " +
> > -                                                   "name or ref");
> > -
> > -
> > -        if (groupObj.particle instanceof XmlSchemaSequence) {
> > -            Element sequence = serializeSequence(doc,
> > -                                                 (XmlSchemaSequence) groupObj.particle, schema);
> > -            group.appendChild(sequence);
> > -        } else if (groupObj.particle instanceof XmlSchemaChoice) {
> > -            Element choice = serializeChoice(doc,
> > -                                             (XmlSchemaChoice) groupObj.particle, schema);
> > -            group.appendChild(choice);
> > -        } else if (groupObj.particle instanceof XmlSchemaAll) {
> > -            Element all = serializeAll(doc,
> > -                                       (XmlSchemaAll) groupObj.particle, schema);
> > -            group.appendChild(all);
> > -        }
> > -        if (groupObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     groupObj.annotation, schema);
> > -            group.appendChild(annotation);
> > -        }
> > -        return group;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc                   - Document the parent use.
> > -     * groupRefObj           - XmlSchemaGroupRef that will be serialized.
> > -     * schema                - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of group elements ref inside its parent.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
> > -                              XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element groupRef = createNewElement(doc, "group",
> > -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (groupRefObj.refName != null) {
> > -            String groupRefName = resolveQName(groupRefObj.refName,
> > -                                               schema);
> > -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", groupRefName);
> > -        } else
> > -            throw new XmlSchemaSerializerException("Group must have name or ref");
> > -
> > -        if (groupRefObj.maxOccurs < Long.MAX_VALUE && groupRefObj.maxOccurs > 1)
> > -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                    groupRefObj.maxOccurs + "");
> > -        else if (groupRefObj.maxOccurs == Long.MAX_VALUE)
> > -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> > -                                    "unbounded");
> > -        //else not serialized
> > -
> > -        if (groupRefObj.minOccurs > 1)
> > -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> > -                                    groupRefObj.minOccurs + "");
> > -
> > -
> > -        /*
> > -                 if(groupRefObj.maxOccursString != null)
> > -                 groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                 "maxOccurs", groupRefObj.maxOccursString);
> > -                 else if(groupRefObj.maxOccurs > 1)
> > -                 groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                 "maxOccurs", groupRefObj.maxOccurs + "");
> > -               */
> > -
> > -        if (groupRefObj.particle != null) {
> > -            Element particleEl;
> > -            if (groupRefObj.particle instanceof XmlSchemaChoice)
> > -                particleEl = serializeChoice(doc,
> > -                                             (XmlSchemaChoice) groupRefObj.particle, schema);
> > -            else if (groupRefObj.particle instanceof XmlSchemaSequence)
> > -                particleEl = serializeSequence(doc,
> > -                                               (XmlSchemaSequence) groupRefObj.particle, schema);
> > -            else if (groupRefObj.particle instanceof XmlSchemaAll)
> > -                particleEl = serializeAll(doc,
> > -                                          (XmlSchemaAll) groupRefObj.particle, schema);
> > -            else
> > -                throw new XmlSchemaSerializerException("The content of group "
> > -                                                       + "ref particle should be"
> > -                                                       + " sequence, choice or all reference:  "
> > -                                                       + "www.w3.org/TR/xmlschema-1#element-group-3.7.2");
> > -        }
> > -        if (groupRefObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     groupRefObj.annotation, schema);
> > -            groupRef.appendChild(annotation);
> > -        }
> > -
> > -        return groupRef;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSimpleContent(Document doc,
> > -     * XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * simpleContentObj  - XmlSchemaSimpleContent that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of complex type simple content.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSimpleContent(Document doc,
> > -                                   XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -        Element simpleContent = createNewElement(doc, "simpleContent",
> > -                                                 schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        Element content;
> > -        if (simpleContentObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     simpleContentObj.annotation, schema);
> > -            simpleContent.appendChild(annotation);
> > -        }
> > -        if (simpleContentObj.content instanceof
> > -                XmlSchemaSimpleContentRestriction)
> > -            content = serializeSimpleContentRestriction(doc,
> > -                                                        (XmlSchemaSimpleContentRestriction) simpleContentObj.content,
> > -                                                        schema);
> > -        else if (simpleContentObj.content instanceof
> > -                XmlSchemaSimpleContentExtension)
> > -            content = serializeSimpleContentExtension(doc,
> > -                                                      (XmlSchemaSimpleContentExtension) simpleContentObj.content,
> > -                                                      schema);
> > -        else
> > -            throw new XmlSchemaSerializerException("content of simple content "
> > -                                                   + "must be restriction or extension");
> > -
> > -        simpleContent.appendChild(content);
> > -        return simpleContent;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeComplexContent(Document doc,
> > -     * XmlSchemaComplexContent complexContentObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc                - Document the parent use.
> > -     * complexContentObj  - XmlSchemaComplexContent that will be serialized.
> > -     * schema             - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of complex type complex content.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeComplexContent(Document doc,
> > -                                    XmlSchemaComplexContent complexContentObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        Element complexContent = createNewElement(doc, "complexContent",
> > -                                                  schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -
> > -        if (complexContentObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     complexContentObj.annotation, schema);
> > -            complexContent.appendChild(annotation);
> > -        }
> > -
> > -        if (complexContentObj.mixed)
> > -            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "mixed", "true");
> > -        if (complexContentObj.id != null)
> > -            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> > -                                          complexContentObj.id);
> > -
> > -        Element content;
> > -        if (complexContentObj.content instanceof
> > -                XmlSchemaComplexContentRestriction)
> > -
> > -            content = serializeComplexContentRestriction(doc,
> > -                                                         (XmlSchemaComplexContentRestriction) complexContentObj.content,
> > -                                                         schema);
> > -        else if (complexContentObj.content instanceof
> > -                XmlSchemaComplexContentExtension)
> > -            content = serializeComplexContentExtension(doc,
> > -                                                       (XmlSchemaComplexContentExtension) complexContentObj.content,
> > -                                                       schema);
> > -        else
> > -            throw new XmlSchemaSerializerException("content of complexContent "
> > -                                                   + "must be restriction or extension");
> > -
> > -        complexContent.appendChild(content);
> > -
> > -        return complexContent;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeIdentityConstraint(Document doc,
> > -     * XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
> > -     * throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * constraintObj     - XmlSchemaIdentityConstraint that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of key, keyref or unique that part of its parent.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeIdentityConstraint(Document doc,
> > -                                        XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
> > -            throws XmlSchemaSerializerException {
> > -
> > -        Element constraint;
> > -
> > -        if (constraintObj instanceof XmlSchemaUnique)
> > -            constraint = createNewElement(doc, "unique",
> > -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -        else if (constraintObj instanceof XmlSchemaKey)
> > -            constraint = createNewElement(doc, "key",
> > -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -        else if (constraintObj instanceof XmlSchemaKeyref) {
> > -            constraint = createNewElement(doc, "keyref",
> > -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -            XmlSchemaKeyref keyref = (XmlSchemaKeyref) constraintObj;
> > -            if (keyref.refer != null) {
> > -                String keyrefStr = resolveQName(keyref.refer, schema);
> > -                constraint.setAttributeNS(XmlSchema.SCHEMA_NS,
> > -                                          "refer", keyrefStr);
> > -            }
> > -        } else
> > -            throw new XmlSchemaSerializerException("not valid identity "
> > -                                                   + "constraint");
> > -
> > -        if (constraintObj.name != null)
> > -            constraint.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> > -                                      constraintObj.name);
> > -        if (constraintObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     constraintObj.annotation, schema);
> > -            constraint.appendChild(annotation);
> > -        }
> > -
> > -        if (constraintObj.selector != null) {
> > -            Element selector = serializeSelector(doc,
> > -                                                 constraintObj.selector, schema);
> > -            constraint.appendChild(selector);
> > -        }
> > -        XmlSchemaObjectCollection fieldColl = constraintObj.fields;
> > -        if (fieldColl != null) {
> > -            int fieldLength = fieldColl.getCount();
> > -            for (int i = 0; i < fieldLength; i++) {
> > -                Element field = serializeField(doc,
> > -                                               (XmlSchemaXPath) fieldColl.getItem(i), schema);
> > -                constraint.appendChild(field);
> > -            }
> > -        }
> > -        return constraint;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException{
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * selectorObj      - XmlSchemaXPath that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * Element of selector with collection of xpath as its attrib.  The selector
> > -     * itself is the part of identity type.  eg <key><selector xpath="..."
> > -     * **********************************************************************
> > -     */
> > -    Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
> > -                              XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element selector = createNewElement(doc, "selector",
> > -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        if (selectorObj.xpath != null)
> > -            selector.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath",
> > -                                    selectorObj.xpath);
> > -        else
> > -            throw new XmlSchemaSerializerException("xpath can't be null");
> > -
> > -        if (selectorObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     selectorObj.annotation, schema);
> > -            selector.appendChild(annotation);
> > -        }
> > -        return selector;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeField(Document doc, XmlSchemaXPath fieldObj,
> > -     * XmlSchema schema) throws XmlSchemaSerializerException
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc           - Document the parent use.
> > -     * fieldObj      - XmlSchemaXPath that will be serialized.
> > -     * schema        - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * field element that part of constraint.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeField(Document doc, XmlSchemaXPath fieldObj,
> > -                           XmlSchema schema) throws XmlSchemaSerializerException {
> > -
> > -        Element field = createNewElement(doc, "field", schema.schema_ns_prefix,
> > -                                         XmlSchema.SCHEMA_NS);
> > -
> > -        if (fieldObj.xpath != null)
> > -            field.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath", fieldObj.xpath);
> > -        else
> > -            throw new XmlSchemaSerializerException("xpath can't be null");
> > -
> > -        if (fieldObj.annotation != null) {
> > -            Element annotation = serializeAnnotation(doc,
> > -                                                     fieldObj.annotation, schema);
> > -            field.appendChild(annotation);
> > -        }
> > -
> > -        return field;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeAnnotation(Document doc, XmlSchemaAnnotation
> > -     * annotationObj, XmlSchema schema)
> > -     * <p/>
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * annotationObj      - XmlSchemaAnnotation that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * annotation element that part of any type. will contain document and
> > -     * appinfo for child.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeAnnotation(Document doc, XmlSchemaAnnotation annotationObj,
> > -                                XmlSchema schema) {
> > -
> > -        Element annotation = createNewElement(doc, "annotation",
> > -                                              schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -
> > -        XmlSchemaObjectCollection contents = annotationObj.items;
> > -        int contentLength = contents.getCount();
> > -
> > -        for (int i = 0; i < contentLength; i++) {
> > -            XmlSchemaObject obj = contents.getItem(i);
> > -
> > -            if (obj instanceof XmlSchemaAppInfo) {
> > -                XmlSchemaAppInfo appinfo = (XmlSchemaAppInfo) obj;
> > -                Element appInfoEl = serializeAppInfo(doc, appinfo, schema);
> > -                annotation.appendChild(appInfoEl);
> > -            } else if (obj instanceof XmlSchemaDocumentation) {
> > -                XmlSchemaDocumentation documentation =
> > -                        (XmlSchemaDocumentation) obj;
> > -
> > -                Element documentationEl = serializeDocumentation(doc,
> > -                                                                 documentation, schema);
> > -
> > -
> > -                annotation.appendChild(documentationEl);
> > -            }
> > -        }
> > -
> > -        return annotation;
> > -    }
> > -
> > -    /**
> > -     * *********************************************************************
> > -     * Element serializeAppInfo(Document doc,XmlSchemaAppInfo appInfoObj,
> > -     * XmlSchema schema)
> > -     * <p/>
> > -     * <p/>
> > -     * Each member of complex type will be appended and pass the element
> > -     * created.  Complex type processed according to w3c Recommendation
> > -     * May 2 2001.
> > -     * <p/>
> > -     * Parameter:
> > -     * doc               - Document the parent use.
> > -     * appInfoObj        - XmlSchemaAppInfo that will be serialized.
> > -     * schema            - Schema Document object of the parent.
> > -     * <p/>
> > -     * Return:
> > -     * App info element that is part of the annotation.
> > -     * **********************************************************************
> > -     */
> > -    Element serializeAppInfo(Document doc, XmlSchemaAppInfo appInfoObj,
> > -                             XmlSchema schema) {
> > -
> > -        Element appInfoEl = createNewElement(doc, "appinfo",
> > -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> > -        if (appInfoObj.source != null)
> >
> > [... 3227 lines stripped ...]
> >
> >
>


--
Davanum Srinivas : http://wso2.com/blogs/

Re: svn commit: r376517 [2/3] - in /webservices/commons/modules/XmlSchema: build.xml maven.xml project.xml src/org/apache/ws/commons/schema/XmlSchemaSerializer.java test/tests/TestElementRefs.java

Posted by Jeremy Hughes <hu...@apache.org>.
Dims,
I think you forgot to commit NISTSchemaTest.java to SVN.

Jeremy


On 2/10/06, dims@apache.org <di...@apache.org> wrote:
> Modified: webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java
> URL: http://svn.apache.org/viewcvs/webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java?rev=376517&r1=376516&r2=376517&view=diff
> ==============================================================================
> --- webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java (original)
> +++ webservices/commons/modules/XmlSchema/src/org/apache/ws/commons/schema/XmlSchemaSerializer.java Thu Feb  9 16:52:26 2006
> @@ -1,2551 +1,2552 @@
> -/*
> - * Copyright 2004,2005 The Apache Software Foundation.
> - *
> - * Licensed 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.ws.commons.schema;
> -
> -import org.w3c.dom.Attr;
> -import org.w3c.dom.Document;
> -import org.w3c.dom.Element;
> -import org.w3c.dom.NamedNodeMap;
> -import org.w3c.dom.Node;
> -import org.w3c.dom.NodeList;
> -import org.w3c.dom.Text;
> -
> -import javax.xml.parsers.DocumentBuilder;
> -import javax.xml.parsers.DocumentBuilderFactory;
> -import javax.xml.parsers.ParserConfigurationException;
> -import javax.xml.namespace.QName;
> -import java.util.ArrayList;
> -import java.util.Enumeration;
> -import java.util.Hashtable;
> -
> -
> -public class XmlSchemaSerializer {
> -    private Hashtable schema_ns;
> -
> -    static String xsdPrefix = "xs";
> -    public static final String xsdNamespace = "http://www.w3.org/2001/XMLSchema";
> -    ArrayList docs;
> -    Element schemaElement;
> -
> -    private XmlSchemaSerializer() {
> -        docs = new ArrayList();
> -        schema_ns = new Hashtable();
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Document[]  serializeSchema(XmlSchema schemaObj,
> -     * boolean serializeIncluded)
> -     * <p/>
> -     * Serialize XmlSchema object pass back the document containing a schema
> -     * element as its root.
> -     * <p/>
> -     * Parameter:
> -     * schemaObj - Schema object to serialize.
> -     * serialzeIncluded - whether to serialize the included(imported)
> -     * schema or not. pass true for serialize all included
> -     * schema.
> -     * <p/>
> -     * Return:
> -     * Array of Documents that include/imported.
> -     * **********************************************************************
> -     */
> -    public static Document[] serializeSchema(XmlSchema schemaObj,
> -                                             boolean serializeIncluded) throws XmlSchemaSerializerException {
> -        return new XmlSchemaSerializer().serializeSchemaElement(schemaObj,
> -                                                                serializeIncluded);
> -    }
> -
> -    Document[] serializeSchemaElement(XmlSchema schemaObj,
> -                                      boolean serializeIncluded) throws XmlSchemaSerializerException {
> -
> -        XmlSchemaObjectCollection items = schemaObj.getItems();
> -        Document serializedSchemaDocs = null;
> -        try {
> -            DocumentBuilderFactory docFac = DocumentBuilderFactory.newInstance();
> -            docFac.setNamespaceAware(true);
> -            DocumentBuilder builder = docFac.newDocumentBuilder();
> -            serializedSchemaDocs = builder.newDocument();
> -        } catch (ParserConfigurationException e) {
> -            throw new XmlSchemaException(e.getMessage());
> -        }
> -
> -        Element serializedSchema;
> -
> -        serializedSchema = setupNamespaces(serializedSchemaDocs, schemaObj);
> -        schemaElement = serializedSchema;
> -
> -        if (schemaObj.targetNamespace != null) {
> -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                            "targetNamespace", schemaObj.targetNamespace);
> -
> -            Object targetNS =
> -                    schema_ns.get(schemaObj.targetNamespace);
> -
> -            //if the namespace is not entered then add
> -            //the targetNamespace as its
> -            if (targetNS == null) {
> -                serializedSchema.setAttributeNS("http://www.w3.org/2000/xmlns/",
> -                                                "xmlns", schemaObj.targetNamespace);
> -                schema_ns.put(schemaObj.targetNamespace.toString(), "");
> -            }
> -        }
> -
> -
> -        //todo: implement xml:lang,
> -        if (schemaObj.attributeFormDefault != null) {
> -            String formQualified = schemaObj.attributeFormDefault.getValue();
> -
> -            if (!formQualified.equals(XmlSchemaForm.NONE))
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "attributeFormDefault", convertString(formQualified));
> -        }
> -
> -        if (schemaObj.elementFormDefault != null) {
> -            String formQualified = schemaObj.elementFormDefault.getValue();
> -
> -            if (!formQualified.equals(XmlSchemaForm.NONE))
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "elementFormDefault", convertString(formQualified));
> -        }
> -
> -
> -        if (schemaObj.annotation != null) {
> -            Element annotation = serializeAnnotation(serializedSchemaDocs,
> -                                                     schemaObj.annotation, schemaObj);
> -            serializedSchema.appendChild(annotation);
> -        }
> -        if (schemaObj.id != null) {
> -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                            schemaObj.id);
> -        }
> -        if (schemaObj.blockDefault != null) {
> -            String blockDefault = schemaObj.blockDefault.getValue();
> -            if (!blockDefault.equals("None")) {
> -                blockDefault = convertString(blockDefault);
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "blockDefault", blockDefault);
> -            }
> -        }
> -        if (schemaObj.finalDefault != null) {
> -            String finalDefault = schemaObj.finalDefault.getValue();
> -            if (!finalDefault.equals("None")) {
> -                finalDefault = convertString(finalDefault);
> -                serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                "finalDefault", finalDefault);
> -            }
> -        }
> -
> -        if (schemaObj.version != null) {
> -            serializedSchema.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                            "version", schemaObj.version);
> -        }
> -
> -        //after serialize the schema add into documentation
> -        //and add to document collection array  which at the end
> -        //returned
> -        serializeSchemaChild(items, serializedSchema, serializedSchemaDocs,
> -                             schemaObj, serializeIncluded);
> -
> -        serializedSchemaDocs.appendChild(serializedSchema);
> -        docs.add(serializedSchemaDocs);
> -
> -
> -        Document[] serializedDocs = new Document[docs.size()];
> -        docs.toArray(serializedDocs);
> -
> -        return serializedDocs;
> -    }
> -
> -    private void serializeSchemaChild(XmlSchemaObjectCollection items,
> -                                      Element serializedSchema, Document serializedSchemaDocs,
> -                                      XmlSchema schemaObj, boolean serializeIncluded)
> -            throws XmlSchemaSerializerException {
> -
> -        int itemsLength = items.getCount();
> -        /**
> -         * For each of the items that belong to this schema,
> -         * serialize each member found.
> -         * Permittable member is: element, simpleType, complexType,
> -         * group, attrributeGroup, Attribute, include, import and redefine.
> -         * if any of the member found then serialize the component.
> -         */
> -        for (int i = 0; i < itemsLength; i++) {
> -            XmlSchemaObject obj = items.getItem(i);
> -
> -            if (obj instanceof XmlSchemaElement) {
> -                Element e = serializeElement(serializedSchemaDocs,
> -                                             (XmlSchemaElement) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -
> -            } else if (obj instanceof XmlSchemaSimpleType) {
> -                Element e = serializeSimpleType(serializedSchemaDocs,
> -                                                (XmlSchemaSimpleType) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaComplexType) {
> -                Element e = serializeComplexType(serializedSchemaDocs,
> -                                                 (XmlSchemaComplexType) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaGroup) {
> -                Element e = serializeGroup(serializedSchemaDocs,
> -                                           (XmlSchemaGroup) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaAttributeGroup) {
> -                Element e = serializeAttributeGroup(serializedSchemaDocs,
> -                                                    (XmlSchemaAttributeGroup) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaAttribute) {
> -                Element e = serializeAttribute(serializedSchemaDocs,
> -                                               (XmlSchemaAttribute) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaRedefine) {
> -                Element e = serializeRedefine(serializedSchemaDocs,
> -                                              (XmlSchemaRedefine) obj, schemaObj);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaInclude) {
> -                Element e = serializeInclude(serializedSchemaDocs,
> -                                             (XmlSchemaInclude) obj, schemaObj, serializeIncluded);
> -                serializedSchema.appendChild(e);
> -            } else if (obj instanceof XmlSchemaImport) {
> -                Element e = serializeImport(serializedSchemaDocs,
> -                                            (XmlSchemaImport) obj, schemaObj, serializeIncluded);
> -                serializedSchema.appendChild(e);
> -            }
> -        }
> -    }
> -
> -    /**
> -     * Set up <schema> namespaces appropriately and append that attr
> -     * into specified element
> -     */
> -    private Element setupNamespaces(Document schemaDocs, XmlSchema schemaObj) {
> -        Enumeration prefixs = schemaObj.namespaces.keys();
> -        Enumeration values = schemaObj.namespaces.elements();
> -
> -        /**
> -         * check all namespace added and register all namespace in
> -         * hashtable.  When finish then set namespace to schema
> -         * element appropriatelly.
> -         */
> -        for (; prefixs.hasMoreElements() && values.hasMoreElements();) {
> -            String namespace = values.nextElement().toString();
> -            String prefix = prefixs.nextElement().toString();
> -            /*
> -             * if the prefix is there
> -             * check whether it is an xsd schema namespace
> -             * set prefix and namespace to the default attribute
> -             * then register the prefix on hashtable
> -             */
> -            if (/*prefix.trim().length()<1 &&*/ namespace.equals(xsdNamespace)) {
> -                xsdPrefix = prefix;
> -                schemaObj.schema_ns_prefix = xsdPrefix;
> -            }
> -
> -            schema_ns.put(namespace, prefix);
> -        }
> -        //for schema that not set the xmlns attrib member
> -        if (schema_ns.get(xsdNamespace) == null) {
> -            schema_ns.put(xsdNamespace, xsdPrefix);
> -            schemaObj.schema_ns_prefix = xsdPrefix;
> -        }
> -
> -        Element schemaEl = createNewElement(schemaDocs, "schema",
> -                                            schemaObj.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        Enumeration keys = schema_ns.keys();
> -
> -        while (keys.hasMoreElements()) {
> -            //let it crash for null pointer because then either the schema
> -            //is wrong(namespace not set properly or bug in setting ns)
> -            String key = keys.nextElement().toString();
> -            String value = schema_ns.get(key).toString();
> -            value = (value.length() > 1) ? "xmlns:" + value : "xmlns";
> -            schemaEl.setAttributeNS("http://www.w3.org/2000/xmlns/",
> -                                    value, key);
> -        }
> -        return schemaEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException
> -     * <p/>
> -     * set appropriate attribute as per this object attribute availability.
> -     * Call included schema to append to this schema document collection.
> -     * Then add the document created into document pool.
> -     * <p/>
> -     * Parameter:
> -     * doc          - Document the parent use.
> -     * includeObj   - XmlSchemaInclude that will be serialized.
> -     * schema       - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object representation of XmlSchemaInclude
> -     * **********************************************************************
> -     */
> -    Element serializeInclude(Document doc, XmlSchemaInclude includeObj,
> -                             XmlSchema schema, boolean serializeIncluded)
> -            throws XmlSchemaSerializerException {
> -
> -        Element includeEl = createNewElement(doc, "include",
> -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (includeObj.schemaLocation != null) {
> -            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> -                                     includeObj.schemaLocation);
> -        }
> -
> -        if (includeObj.id != null)
> -            includeEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", includeObj.id);
> -
> -        if (includeObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     includeObj.annotation, schema);
> -            includeEl.appendChild(annotation);
> -        }
> -
> -        //Get the XmlSchema obj and append that to the content
> -        XmlSchema includedSchemaObj = includeObj.getSchema();
> -        if (includedSchemaObj != null && serializeIncluded) {
> -            XmlSchemaSerializer includeSeri = new XmlSchemaSerializer();
> -            includeSeri.serializeSchemaElement(includedSchemaObj, true);
> -//            XmlSchemaObjectCollection ii = includedSchemaObj.getItems();
> -            docs.addAll(includeSeri.docs);
> -        }
> -
> -        return includeEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeImport(Document doc, XmlSchemaImport importObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException
> -     * <p/>
> -     * Add each of the attribute of XmlSchemaImport obj into import Element
> -     * Then serialize schema that is included by this import.  Include the
> -     * serialized schema into document pool.
> -     * <p/>
> -     * Parameter:
> -     * doc          - Document the parent use.
> -     * includeObj   - XmlSchemaInclude that will be serialized.
> -     * schema       - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object representation of XmlSchemaImport
> -     * **********************************************************************
> -     */
> -    Element serializeImport(Document doc, XmlSchemaImport importObj,
> -                            XmlSchema schema, boolean serializeIncluded)
> -            throws XmlSchemaSerializerException {
> -
> -        Element importEl = createNewElement(doc, "import",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (importObj.namespace != null)
> -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
> -                                    importObj.namespace);
> -
> -        if (importObj.schemaLocation != null && !importObj.schemaLocation.trim().equals(""))
> -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> -                                    importObj.schemaLocation);
> -
> -        if (importObj.id != null)
> -            importEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", importObj.id);
> -
> -        if (importObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     importObj.annotation, schema);
> -
> -            importEl.appendChild(annotation);
> -        }
> -
> -        if (importObj.schema != null && serializeIncluded) {
> -
> -
> -            XmlSchemaSerializer importSeri = new XmlSchemaSerializer();
> -            importSeri.serializeSchemaElement(importObj.schema, serializeIncluded);
> -            docs.addAll(importSeri.docs);
> -        }
> -
> -        return importEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException
> -     * <p/>
> -     * Add each of the attribute of XmlSchemaImport obj into import Element
> -     * Then serialize schema that is included by this import.  Include the
> -     * serialized schema into document pool.
> -     * <p/>
> -     * Parameter:
> -     * doc           - Document the parent use.
> -     * redefineObj   - XmlSchemaInclude that will be serialized.
> -     * schema        - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object representation of XmlSchemaRedefine
> -     * **********************************************************************
> -     */
> -    Element serializeRedefine(Document doc, XmlSchemaRedefine redefineObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element redefine = createNewElement(doc, "redefine",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (redefineObj.schemaLocation != null)
> -            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "schemaLocation",
> -                                    redefineObj.schemaLocation);
> -        else
> -            throw new XmlSchemaSerializerException("redefine must have "
> -                                                   + "schemaLocation fields fill");
> -
> -        if (redefineObj.id != null)
> -            redefine.setAttributeNS(XmlSchema.SCHEMA_NS, "id", redefineObj.id);
> -
> -        if (redefineObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     redefineObj.annotation, schema);
> -            redefine.appendChild(annotation);
> -        }
> -        int itemsLength = redefineObj.items.getCount();
> -        for (int i = 0; i < itemsLength; i++) {
> -            XmlSchemaObject obj = redefineObj.items.getItem(i);
> -            if (obj instanceof XmlSchemaSimpleType) {
> -                Element simpleType = serializeSimpleType(doc,
> -                                                         (XmlSchemaSimpleType) obj, schema);
> -                redefine.appendChild(simpleType);
> -            } else if (obj instanceof XmlSchemaComplexType) {
> -                Element complexType = serializeComplexType(doc,
> -                                                           (XmlSchemaComplexType) obj, schema);
> -                redefine.appendChild(complexType);
> -            } else if (obj instanceof XmlSchemaGroupRef) {
> -                Element groupRef = serializeGroupRef(doc,
> -                                                     (XmlSchemaGroupRef) obj, schema);
> -                redefine.appendChild(groupRef);
> -            } else if (obj instanceof XmlSchemaGroup) {
> -                Element group = serializeGroup(doc,
> -                                               (XmlSchemaGroup) obj, schema);
> -                redefine.appendChild(group);
> -            } else if (obj instanceof XmlSchemaAttributeGroup) {
> -                Element attributeGroup = serializeAttributeGroup(doc,
> -                                                                 (XmlSchemaAttributeGroup) obj, schema);
> -                redefine.appendChild(attributeGroup);
> -            } else if (obj instanceof XmlSchemaAttributeGroupRef) {
> -                Element attributeGroupRef = serializeAttributeGroupRef(doc,
> -                                                                       (XmlSchemaAttributeGroupRef) obj, schema);
> -                redefine.appendChild(attributeGroupRef);
> -            }
> -        }
> -        return redefine;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeElement(Document doc, XmlSchemaElement elementObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException
> -     * <p/>
> -     * Each member of Element will be appended and pass the element
> -     * created.  Element processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc           - Document the parent use.
> -     * elementObj   - XmlSchemaInclude that will be serialized.
> -     * schema        - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object of element.
> -     * **********************************************************************
> -     */
> -    Element serializeElement(Document doc, XmlSchemaElement elementObj,
> -                             XmlSchema schema) throws XmlSchemaSerializerException {
> -        Element serializedEl = createNewElement(doc, "element",
> -                                                schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        if (elementObj.refName != null) {
> -
> -            String resolvedName = resolveQName(elementObj.refName, schema);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", resolvedName);
> -        } else if (elementObj.name != null && elementObj.name.length() > 0) {
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                        elementObj.name);
> -        }
> -
> -        if (elementObj.isAbstract)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "abstract", "true");
> -
> -        String block = elementObj.block.getValue();
> -        if (!block.equals("None")) {
> -            block = convertString(block);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "block", block);
> -        }
> -        if (elementObj.defaultValue != null)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
> -                                        elementObj.defaultValue);
> -
> -        String finalDerivation = elementObj.finalDerivation.getValue();
> -        if (!finalDerivation.equals("None")) {
> -            finalDerivation = convertString(finalDerivation);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
> -                                        finalDerivation);
> -        }
> -        if (elementObj.fixedValue != null)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
> -                                        elementObj.fixedValue);
> -
> -        String formDef = elementObj.form.getValue();
> -        if (!formDef.equals(XmlSchemaForm.NONE)) {
> -            formDef = convertString(formDef);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formDef);
> -        }
> -        if (elementObj.id != null)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", elementObj.id);
> -
> -        if (elementObj.maxOccurs < Long.MAX_VALUE && elementObj.maxOccurs > 1)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                        elementObj.maxOccurs + "");
> -        else if (elementObj.maxOccurs == Long.MAX_VALUE)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                        "unbounded");
> -        //else not serialized
> -
> -        /*if(elementObj.minOccurs >1)
> -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                 elementObj.minOccurs + "");*/
> -
> -        //Change - SK and Ragu cos it wasnt picking up
> -        // minOccurs = 0
> -        if (elementObj.minOccurs < Long.MAX_VALUE && elementObj.minOccurs != 1)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                        elementObj.minOccurs + "");
> -        else if (elementObj.minOccurs == Long.MAX_VALUE)
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                        "unbounded");
> -
> -        /*
> -                 if(elementObj.maxOccursString != null)
> -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                 elementObj.maxOccursString);
> -                 else if(elementObj.maxOccurs > 1)
> -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                 elementObj.maxOccurs + "");
> -
> -                 if(elementObj.minOccurs > 1)
> -                 serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                 elementObj.minOccurs + "");
> -               */
> -        if (elementObj.substitutionGroup != null) {
> -            String resolvedQName = resolveQName(elementObj.substitutionGroup, schema);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "substitutionGroup",
> -                                        resolvedQName);
> -        }
> -        if (elementObj.schemaTypeName != null) {
> -            String resolvedName = resolveQName(elementObj.schemaTypeName, schema);
> -            serializedEl.setAttributeNS(XmlSchema.SCHEMA_NS, "type", resolvedName);
> -        }
> -        if (elementObj.annotation != null) {
> -            Element annotationEl = serializeAnnotation(doc,
> -                                                       elementObj.annotation, schema);
> -            serializedEl.appendChild(annotationEl);
> -        }
> -        if (elementObj.schemaType != null) {
> -            if (elementObj.schemaType instanceof XmlSchemaComplexType) {
> -                Element complexType = serializeComplexType(doc,
> -                                                           (XmlSchemaComplexType) elementObj.schemaType, schema);
> -                serializedEl.appendChild(complexType);
> -            } else if (elementObj.schemaType instanceof XmlSchemaSimpleType) {
> -                Element simpleType = serializeSimpleType(doc,
> -                                                         (XmlSchemaSimpleType) elementObj.schemaType, schema);
> -                serializedEl.appendChild(simpleType);
> -            }
> -        }
> -        if (elementObj.constraints.getCount() > 0) {
> -            for (int i = 0; i < elementObj.constraints.getCount(); i++) {
> -                Element constraint = serializeIdentityConstraint(doc,
> -                                                                 (XmlSchemaIdentityConstraint) elementObj.constraints.getItem(i),
> -                                                                 schema);
> -                serializedEl.appendChild(constraint);
> -            }
> -        }
> -
> -        return serializedEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleType(Document doc,
> -     * XmlSchemaSimpleType simpleTypeObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of simple type will be appended and pass the element
> -     * created.  Simple type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * simpleTypeObj     - XmlSchemaSimpleType that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element object of SimpleType
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleType(Document doc, XmlSchemaSimpleType simpleTypeObj,
> -                                XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element serializedSimpleType = createNewElement(doc, "simpleType",
> -                                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        String tmp;
> -        tmp = simpleTypeObj.finalDerivation.getValue();
> -        if (!tmp.equals("None")) {
> -
> -            tmp = convertString(tmp);
> -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "final", tmp);
> -        }
> -        if (simpleTypeObj.id != null)
> -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                                simpleTypeObj.id);
> -        if ((simpleTypeObj.name != null) && (!simpleTypeObj.name.equals("")))
> -            serializedSimpleType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                                simpleTypeObj.name);
> -        if (simpleTypeObj.annotation != null) {
> -            Element annotationEl = serializeAnnotation(doc,
> -                                                       simpleTypeObj.annotation, schema);
> -            serializedSimpleType.appendChild(annotationEl);
> -        }
> -        if (simpleTypeObj.content != null) {
> -            if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeRestriction) {
> -                Element restEl = serializeSimpleTypeRestriction(doc,
> -                                                                (XmlSchemaSimpleTypeRestriction) simpleTypeObj.content,
> -                                                                schema);
> -                serializedSimpleType.appendChild(restEl);
> -            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeList) {
> -                Element listEl = serializeSimpleTypeList(doc,
> -                                                         (XmlSchemaSimpleTypeList) simpleTypeObj.content, schema);
> -                serializedSimpleType.appendChild(listEl);
> -            } else if (simpleTypeObj.content instanceof XmlSchemaSimpleTypeUnion) {
> -                Element unionEl = serializeSimpleTypeUnion(doc,
> -                                                           (XmlSchemaSimpleTypeUnion) simpleTypeObj.content, schema);
> -                serializedSimpleType.appendChild(unionEl);
> -            }/*else
> -                          throw new XmlSchemaSerializerException("Invalid type inserted "
> -                          + "in simpleType content, the content is: "
> -                          + simpleTypeObj.content.getClass().getName()
> -                          + " valid content should be XmlSchemaSimpleTypeunion, "
> -                          + "XmlSchemaSimpleTyperestriction or list");*/
> -        }/*else
> -                  throw new XmlSchemaSerializerException("simple type must be set "
> -                  + "with content, either union, restriction or list");*/
> -
> -        return serializedSimpleType;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleTypeRestriction(Document doc,
> -     * XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of simple type will be appended and pass the element
> -     * created.  Simple type's <restriction> processed according to w3c
> -     * Recommendation May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * restrictionObj    - XmlSchemaRestriction that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type restriction and its child.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleTypeRestriction(Document doc,
> -                                           XmlSchemaSimpleTypeRestriction restrictionObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -        //todo: need to implement any attribute that related to non schema namespace
> -        Element serializedRestriction = createNewElement(doc, "restriction",
> -                                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (schema.schema_ns_prefix.length() > 0)
> -            serializedRestriction.setPrefix(schema.schema_ns_prefix);
> -        if (restrictionObj.baseTypeName != null) {
> -            String baseType = resolveQName(restrictionObj.baseTypeName, schema);
> -            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "base", baseType);
> -        } else if (restrictionObj.baseType != null && restrictionObj.baseType
> -                instanceof XmlSchemaSimpleType) {
> -            Element inlineSimpleType = serializeSimpleType(doc,
> -                                                           restrictionObj.baseType, schema);
> -            serializedRestriction.appendChild(inlineSimpleType);
> -        } else
> -            throw new XmlSchemaSerializerException("restriction must be define "
> -                                                   + "with specifying base or inline simpleType");
> -
> -        if (restrictionObj.id != null)
> -            serializedRestriction.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                                 restrictionObj.id);
> -
> -        if (restrictionObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     restrictionObj.annotation, schema);
> -            serializedRestriction.appendChild(annotation);
> -        }
> -        if (restrictionObj.facets.getCount() > 0) {
> -            int facetsNum = restrictionObj.facets.getCount();
> -            for (int i = 0; i < facetsNum; i++) {
> -                Element facetEl = serializeFacet(doc,
> -                                                 (XmlSchemaFacet) restrictionObj.facets.getItem(i), schema);
> -                serializedRestriction.appendChild(facetEl);
> -            }
> -        }
> -        return serializedRestriction;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * detect what type of facet and cass appropriatelly,
> -     * construct the element and pass it.
> -     * <p/>
> -     * Parameter:
> -     * doc       - Document the parent use.
> -     * facetObj  - XmlSchemaFacet that will be serialized.
> -     * schema    - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type with facet.
> -     * **********************************************************************
> -     */
> -    Element serializeFacet(Document doc, XmlSchemaFacet facetObj,
> -                           XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element serializedFacet;
> -        String facetName = facetObj.getClass().getName();
> -
> -        if (facetObj instanceof XmlSchemaMinExclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "minExclusive");
> -        else if (facetObj instanceof XmlSchemaMinInclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "minInclusive");
> -        else if (facetObj instanceof XmlSchemaMaxExclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "maxExclusive");
> -        else if (facetObj instanceof XmlSchemaMaxInclusiveFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "maxInclusive");
> -        else if (facetObj instanceof XmlSchemaTotalDigitsFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "totalDigits");
> -        else if (facetObj instanceof XmlSchemaFractionDigitsFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "fractionDigits");
> -        else if (facetObj instanceof XmlSchemaLengthFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "length");
> -        else if (facetObj instanceof XmlSchemaMinLengthFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "minLength");
> -        else if (facetObj instanceof XmlSchemaMaxLengthFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "maxLength");
> -        else if (facetObj instanceof XmlSchemaEnumerationFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "enumeration");
> -        else if (facetObj instanceof XmlSchemaWhiteSpaceFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "whiteSpace");
> -        else if (facetObj instanceof XmlSchemaPatternFacet)
> -            serializedFacet = constructFacet(facetObj, doc, schema,
> -                                             "pattern");
> -        else
> -            throw new XmlSchemaSerializerException("facet not exist "
> -                                                   + facetObj.getClass().getName());
> -
> -        if (facetObj.id != null)
> -            serializedFacet.setAttributeNS(XmlSchema.SCHEMA_NS, "id", facetObj.id);
> -        if (facetObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, facetObj.annotation,
> -                                                     schema);
> -            serializedFacet.appendChild(annotation);
> -        }
> -
> -        return serializedFacet;
> -    }
> -
> -    private Element constructFacet(XmlSchemaFacet facetObj, Document doc,
> -                                   XmlSchema schema, String tagName) {
> -
> -        Element facetEl = createNewElement(doc, tagName,
> -                                           schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "value",
> -                               facetObj.value.toString());
> -        if (facetObj.fixed)
> -            facetEl.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed", "true");
> -
> -        if (facetObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     facetObj.annotation, schema);
> -            facetEl.appendChild(annotation);
> -        }
> -        return facetEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeComplexType(Document doc,
> -     * XmlSchemaComplexType complexTypeObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * complexTypeObj  - XmlSchemaFacet that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of complexType.
> -     * **********************************************************************
> -     */
> -    Element serializeComplexType(Document doc,
> -                                 XmlSchemaComplexType complexTypeObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        //todo: need to implement abstract, id, mixed
> -        Element serializedComplexType = createNewElement(doc,
> -                                                         "complexType", schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if ((complexTypeObj.name != null) && (!complexTypeObj.name.equals("")))
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                                 complexTypeObj.name);
> -        /*if(complexTypeObj.annotation != null){
> -                 Element annotationEl = serializeAnnotation(doc,
> -                 complexTypeObj.annotation, schema);
> -                 serializedComplexType.appendChild(annotationEl);
> -                 }*/
> -
> -        if (complexTypeObj.isMixed)
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                 "mixed", "true");
> -        if (complexTypeObj.isAbstract)
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                 "abstract", "true");
> -        if (complexTypeObj.id != null)
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                                 complexTypeObj.id);
> -
> -        if (complexTypeObj.contentModel instanceof XmlSchemaSimpleContent) {
> -            Element simpleContent = serializeSimpleContent(doc,
> -                                                           (XmlSchemaSimpleContent) complexTypeObj.contentModel, schema);
> -            serializedComplexType.appendChild(simpleContent);
> -        } else if (complexTypeObj.contentModel instanceof
> -                XmlSchemaComplexContent) {
> -
> -            Element complexContent = serializeComplexContent(doc,
> -                                                             (XmlSchemaComplexContent) complexTypeObj.contentModel, schema);
> -            serializedComplexType.appendChild(complexContent);
> -        }
> -
> -        if (complexTypeObj.particle instanceof XmlSchemaSequence) {
> -            Element sequence = serializeSequence(doc,
> -                                                 (XmlSchemaSequence) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(sequence);
> -        } else if (complexTypeObj.particle instanceof XmlSchemaChoice) {
> -            Element choice = serializeChoice(doc,
> -                                             (XmlSchemaChoice) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(choice);
> -        } else if (complexTypeObj.particle instanceof XmlSchemaAll) {
> -            Element all = serializeAll(doc,
> -                                       (XmlSchemaAll) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(all);
> -        } else if (complexTypeObj.particle instanceof XmlSchemaGroupRef) {
> -            Element group = serializeGroupRef(doc,
> -                                              (XmlSchemaGroupRef) complexTypeObj.particle, schema);
> -            serializedComplexType.appendChild(group);
> -        }
> -
> -        String block = complexTypeObj.block.getValue();
> -        if (!block.equals("None")) {
> -            block = convertString(block);
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                                 "block", block);
> -        }
> -        String finalDerivation = complexTypeObj.finalDerivation.getValue();
> -        if (!finalDerivation.equals("None")) {
> -            finalDerivation = convertString(finalDerivation);
> -            serializedComplexType.setAttributeNS(XmlSchema.SCHEMA_NS, "final",
> -                                                 finalDerivation);
> -        }
> -
> -        XmlSchemaObjectCollection attrColl = complexTypeObj.attributes;
> -        if (attrColl.getCount() > 0)
> -            setupAttr(doc, attrColl, schema, serializedComplexType);
> -
> -        return serializedComplexType;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
> -     * XmlSchema schema)throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  `Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * sequenceObj  - XmlSchemaFacet that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of sequence particle.
> -     * **********************************************************************
> -     */
> -    Element serializeSequence(Document doc, XmlSchemaSequence sequenceObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element sequence = createNewElement(doc, "sequence",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        if (sequenceObj.id != null)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "id", sequenceObj.id);
> -
> -
> -        if (sequenceObj.maxOccurs < Long.MAX_VALUE && sequenceObj.maxOccurs > 1)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    sequenceObj.maxOccurs + "");
> -        else if (sequenceObj.maxOccurs == Long.MAX_VALUE)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    "unbounded");
> -        //else not serialized
> -
> -
> -        if (sequenceObj.minOccurs > 1)
> -            sequence.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                    sequenceObj.minOccurs + "");
> -
> -        XmlSchemaObjectCollection seqColl = sequenceObj.items;
> -        int containLength = seqColl.getCount();
> -        for (int i = 0; i < containLength; i++) {
> -            XmlSchemaObject obj = seqColl.getItem(i);
> -            if (obj instanceof XmlSchemaElement) {
> -                Element el = serializeElement(doc,
> -                                              (XmlSchemaElement) obj, schema);
> -                sequence.appendChild(el);
> -            } else if (obj instanceof XmlSchemaGroupRef) {
> -                Element group = serializeGroupRef(doc,
> -                                                  (XmlSchemaGroupRef) obj, schema);
> -                sequence.appendChild(group);
> -            } else if (obj instanceof XmlSchemaChoice) {
> -                Element choice = serializeChoice(doc,
> -                                                 (XmlSchemaChoice) obj, schema);
> -                sequence.appendChild(choice);
> -            } else if (obj instanceof XmlSchemaSequence) {
> -                Element sequenceChild = serializeSequence(doc,
> -                                                          (XmlSchemaSequence) obj, schema);
> -                sequence.appendChild(sequenceChild);
> -            } else if (obj instanceof XmlSchemaAny) {
> -                Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
> -                sequence.appendChild(any);
> -            }
> -        }
> -        return sequence;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  `Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * attributeObj    - XmlSchemaAttribute that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of attribute.
> -     * **********************************************************************
> -     */
> -    Element serializeAttribute(Document doc, XmlSchemaAttribute attributeObj,
> -                               XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element attribute = createNewElement(doc, "attribute",
> -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (attributeObj.refName != null) {
> -            String refName =
> -                    resolveQName(attributeObj.refName, schema);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", refName);
> -        } else if (attributeObj.name != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                     attributeObj.name);
> -
> -        if (attributeObj.schemaTypeName != null) {
> -            String typeName =
> -                    resolveQName(attributeObj.schemaTypeName, schema);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "type", typeName);
> -        }
> -
> -        if (attributeObj.defaultValue != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "default",
> -                                     attributeObj.defaultValue);
> -        if (attributeObj.fixedValue != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "fixed",
> -                                     attributeObj.fixedValue);
> -
> -        String formType = attributeObj.form.getValue();
> -        if (!formType.equals(XmlSchemaForm.NONE)) {
> -            formType = convertString(formType);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "form", formType);
> -        }
> -        if (attributeObj.id != null)
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "id", attributeObj.id);
> -
> -        String useType = attributeObj.use.getValue();
> -        if (!useType.equals("None")) {
> -            useType = convertString(useType);
> -            attribute.setAttributeNS(XmlSchema.SCHEMA_NS, "use", useType);
> -        }
> -        if (attributeObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     attributeObj.annotation, schema);
> -            attribute.appendChild(annotation);
> -        }
> -
> -
> -        if (attributeObj.schemaType != null) {
> -            try {
> -                XmlSchemaSimpleType simpleType =
> -                        attributeObj.schemaType;
> -                Element simpleTypeEl = serializeSimpleType(doc,
> -                                                           simpleType, schema);
> -                attribute.appendChild(simpleTypeEl);
> -            } catch (ClassCastException e) {
> -                throw new XmlSchemaSerializerException("only inline simple type allow as attribute's inline type");
> -            }
> -        }
> -
> -        Attr[] unhandled = attributeObj.getUnhandledAttributes();
> -
> -        Hashtable namespaces = new Hashtable();
> -
> -        if (unhandled != null) {
> -
> -            // this is to make the wsdl:arrayType work
> -            // since unhandles attributes are not handled this is a special case
> -            // but the basic idea is to see if there is any attibute whose value has ":"
> -            // if it is present then it is likely that it is a namespace prefix
> -            // do what is neccesary to get the real namespace for it and make
> -            // required changes to the prefix
> -
> -            for (int i = 0; i < unhandled.length; i++) {
> -                String name = unhandled[i].getNodeName();
> -                String value = unhandled[i].getNodeValue();
> -                if (name.equals("xmlns")) {
> -                    namespaces.put("", value);
> -                } else if (name.startsWith("xmlns")) {
> -                    namespaces.put(name.substring(name.indexOf(":") + 1), value);
> -                }
> -            }
> -
> -            for (int i = 0; i < unhandled.length; i++) {
> -                String value = unhandled[i].getNodeValue();
> -                String nodeName = unhandled[i].getNodeName();
> -                if (value.indexOf(":") > -1 && !nodeName.startsWith("xmlns")) {
> -                    String prefix = value.substring(0, value.indexOf(":"));
> -                    String oldNamespace = null;
> -                    if ((oldNamespace = (String) namespaces.get(prefix)) != null) {
> -                        value = value.substring(value.indexOf(":") + 1);
> -                        Hashtable realNamespaces = schema.getPrefixToNamespaceMap();
> -                        java.util.Iterator iter = realNamespaces.keySet().iterator();
> -                        while (iter.hasNext()) {
> -                            prefix = (String) iter.next();
> -                            String namespace = (String) realNamespaces.get(prefix);
> -                            if (namespace.equals(oldNamespace))
> -                                value = prefix + ":" + value;
> -                        }
> -                    }
> -
> -                }
> -                if (unhandled[i].getNamespaceURI() != null)
> -                    attribute.setAttributeNS(unhandled[i].getNamespaceURI(), nodeName, value);
> -                else
> -                    attribute.setAttribute(nodeName, value);
> -            }
> -        }
> -        return attribute;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * choiceObj       - XmlSchemaChoice that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of choice schema object.
> -     * **********************************************************************
> -     */
> -    Element serializeChoice(Document doc, XmlSchemaChoice choiceObj,
> -                            XmlSchema schema) throws XmlSchemaSerializerException {
> -        //todo: handle any non schema attri ?
> -
> -        Element choice = createNewElement(doc, "choice",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (choiceObj.id != null)
> -            if (choiceObj.id.length() > 0)
> -                choice.setAttributeNS(XmlSchema.SCHEMA_NS, "id", choiceObj.id);
> -
> -
> -        if (choiceObj.maxOccurs < Long.MAX_VALUE && choiceObj.maxOccurs > 1)
> -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                  choiceObj.maxOccurs + "");
> -        else if (choiceObj.maxOccurs == Long.MAX_VALUE)
> -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                  "unbounded");
> -        //else not serialized
> -
> -        if (choiceObj.minOccurs > 1)
> -            choice.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                  choiceObj.minOccurs + "");
> -
> -
> -        /*
> -                 if(choiceObj.maxOccursString != null)
> -                 choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                 choiceObj.maxOccursString);
> -                 else if(choiceObj.maxOccurs > 1)
> -                 choice.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                 choiceObj.maxOccurs +"");
> -               */
> -
> -
> -        if (choiceObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     choiceObj.annotation, schema);
> -            choice.appendChild(annotation);
> -        }
> -
> -
> -        XmlSchemaObjectCollection itemColl = choiceObj.items;
> -
> -        if (itemColl != null) {
> -            int itemLength = itemColl.getCount();
> -
> -            for (int i = 0; i < itemLength; i++) {
> -                XmlSchemaObject obj = itemColl.getItem(i);
> -
> -                if (obj instanceof XmlSchemaElement) {
> -                    Element el = serializeElement(doc,
> -                                                  (XmlSchemaElement) obj, schema);
> -                    choice.appendChild(el);
> -                } else if (obj instanceof XmlSchemaGroupRef) {
> -                    Element group = serializeGroupRef(doc,
> -                                                      (XmlSchemaGroupRef) obj, schema);
> -                    choice.appendChild(group);
> -                } else if (obj instanceof XmlSchemaChoice) {
> -                    Element inlineChoice = serializeChoice(doc,
> -                                                           (XmlSchemaChoice) obj, schema);
> -                    choice.appendChild(inlineChoice);
> -                } else if (obj instanceof XmlSchemaSequence) {
> -                    Element inlineSequence = serializeSequence(doc,
> -                                                               (XmlSchemaSequence) obj, schema);
> -                    choice.appendChild(inlineSequence);
> -                } else if (obj instanceof XmlSchemaAny) {
> -                    Element any = serializeAny(doc, (XmlSchemaAny) obj, schema);
> -                    choice.appendChild(any);
> -                }
> -            }
> -        }
> -        return choice;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * allObj          - XmlSchemaAll that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of particle all.
> -     * **********************************************************************
> -     */
> -    Element serializeAll(Document doc, XmlSchemaAll allObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -        Element allEl = createNewElement(doc, "all", schema.schema_ns_prefix,
> -                                         XmlSchema.SCHEMA_NS);
> -
> -        if (allObj.minOccurs == 0)
> -            allEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs", "0");
> -
> -
> -        if (allObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, allObj.annotation,
> -                                                     schema);
> -            allEl.appendChild(annotation);
> -        }
> -
> -        XmlSchemaObjectCollection itemColl = allObj.items;
> -
> -        if (itemColl != null) {
> -            int itemLength = itemColl.getCount();
> -
> -            for (int i = 0; i < itemLength; i++) {
> -                XmlSchemaObject obj = itemColl.getItem(i);
> -                if (obj instanceof XmlSchemaElement) {
> -                    Element el = serializeElement(doc, (XmlSchemaElement) obj,
> -                                                  schema);
> -                    allEl.appendChild(el);
> -                } else
> -                    throw new XmlSchemaSerializerException("Only element "
> -                                                           + "allowed as child of all model type");
> -            }
> -        }
> -
> -        return allEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleTypeList(Document doc,
> -     * XmlSchemaSimpleTypeList listObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc             - Document the parent use.
> -     * listObj         - XmlSchemaSimpleTypeList that will be serialized.
> -     * schema          - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type with list method.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleTypeList(Document doc,
> -                                    XmlSchemaSimpleTypeList listObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        Element list = createNewElement(doc, "list",
> -                                        schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (listObj.itemTypeName != null) {
> -            String listItemType = resolveQName(listObj.itemTypeName,
> -                                               schema);
> -            list.setAttributeNS(XmlSchema.SCHEMA_NS, "itemType", listItemType);
> -        }
> -        if (listObj.id != null)
> -            list.setAttributeNS(XmlSchema.SCHEMA_NS, "id", listObj.id);
> -
> -        else if (listObj.itemType != null) {
> -            Element inlineSimpleEl = serializeSimpleType(doc, listObj.itemType,
> -                                                         schema);
> -            list.appendChild(inlineSimpleEl);
> -        }
> -        if (listObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, listObj.annotation, schema);
> -            list.appendChild(annotation);
> -        }
> -        return list;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleTypeUnion(Document doc,
> -     * XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc              - Document the parent use.
> -     * unionObj         - XmlSchemaSimpleTypeUnion that will be serialized.
> -     * schema           - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of simple type with union method.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleTypeUnion(Document doc,
> -                                     XmlSchemaSimpleTypeUnion unionObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -
> -        Element union = createNewElement(doc, "union",
> -                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (unionObj.id != null)
> -            union.setAttributeNS(XmlSchema.SCHEMA_NS, "id", unionObj.id);
> -
> -        if (unionObj.memberTypesSource != null)
> -            union.setAttributeNS(XmlSchema.SCHEMA_NS, "memberTypes",
> -                                 unionObj.memberTypesSource);
> -        else if (unionObj.baseTypes.getCount() > 0) {
> -            int baseTypesLength = unionObj.baseTypes.getCount();
> -            Element baseType;
> -            for (int i = 0; i < baseTypesLength; i++) {
> -                try {
> -                    baseType = serializeSimpleType(doc,
> -                                                   (XmlSchemaSimpleType) unionObj.baseTypes.getItem(i),
> -                                                   schema);
> -                    union.appendChild(baseType);
> -                } catch (ClassCastException e) {
> -                    throw new XmlSchemaSerializerException("only inline simple type allow as attribute's "
> -                                                           + "inline type");
> -                }
> -            }
> -        }
> -        if (unionObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc, unionObj.annotation,
> -                                                     schema);
> -            union.appendChild(annotation);
> -        }
> -        return union;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema)
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc              - Document the parent use.
> -     * anyObj           - XmlSchemaAny that will be serialized.
> -     * schema           - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of any that is part of its parent.
> -     * **********************************************************************
> -     */
> -    Element serializeAny(Document doc, XmlSchemaAny anyObj, XmlSchema schema) {
> -        Element anyEl = createNewElement(doc, "any", schema.schema_ns_prefix,
> -                                         XmlSchema.SCHEMA_NS);
> -        if (anyObj.id != null)
> -            if (anyObj.id.length() > 0)
> -                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "id", anyObj.id);
> -
> -
> -        if (anyObj.maxOccurs < Long.MAX_VALUE && anyObj.maxOccurs > 1)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                 anyObj.maxOccurs + "");
> -        else if (anyObj.maxOccurs == Long.MAX_VALUE)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                 "unbounded");
> -        //else not serialized
> -
> -        if (anyObj.minOccurs > 1)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                 anyObj.minOccurs + "");
> -
> -        if (anyObj.namespace != null)
> -            anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "namespace",
> -                                 anyObj.namespace);
> -
> -        if (anyObj.processContent != null) {
> -            String value = anyObj.processContent.getValue();
> -            if (!value.equals("None")) {
> -                String processContent = convertString(value);
> -                anyEl.setAttributeNS(XmlSchema.SCHEMA_NS, "processContents",
> -                                     processContent);
> -            }
> -        }
> -        if (anyObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     anyObj.annotation, schema);
> -            anyEl.appendChild(annotation);
> -        }
> -
> -        return anyEl;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc                - Document the parent use.
> -     * groupObj           - XmlSchemaGroup that will be serialized.
> -     * schema             - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of group elements.
> -     * **********************************************************************
> -     */
> -    Element serializeGroup(Document doc, XmlSchemaGroup groupObj,
> -                           XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element group = createNewElement(doc, "group",
> -                                         schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (groupObj.name != null) {
> -            if (groupObj.name.length() > 0) {
> -                group.setAttributeNS(XmlSchema.SCHEMA_NS, "name", groupObj.name);
> -            }
> -        } else
> -            throw new XmlSchemaSerializerException("Group must have " +
> -                                                   "name or ref");
> -
> -
> -        if (groupObj.particle instanceof XmlSchemaSequence) {
> -            Element sequence = serializeSequence(doc,
> -                                                 (XmlSchemaSequence) groupObj.particle, schema);
> -            group.appendChild(sequence);
> -        } else if (groupObj.particle instanceof XmlSchemaChoice) {
> -            Element choice = serializeChoice(doc,
> -                                             (XmlSchemaChoice) groupObj.particle, schema);
> -            group.appendChild(choice);
> -        } else if (groupObj.particle instanceof XmlSchemaAll) {
> -            Element all = serializeAll(doc,
> -                                       (XmlSchemaAll) groupObj.particle, schema);
> -            group.appendChild(all);
> -        }
> -        if (groupObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     groupObj.annotation, schema);
> -            group.appendChild(annotation);
> -        }
> -        return group;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc                   - Document the parent use.
> -     * groupRefObj           - XmlSchemaGroupRef that will be serialized.
> -     * schema                - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of group elements ref inside its parent.
> -     * **********************************************************************
> -     */
> -    Element serializeGroupRef(Document doc, XmlSchemaGroupRef groupRefObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element groupRef = createNewElement(doc, "group",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (groupRefObj.refName != null) {
> -            String groupRefName = resolveQName(groupRefObj.refName,
> -                                               schema);
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "ref", groupRefName);
> -        } else
> -            throw new XmlSchemaSerializerException("Group must have name or ref");
> -
> -        if (groupRefObj.maxOccurs < Long.MAX_VALUE && groupRefObj.maxOccurs > 1)
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    groupRefObj.maxOccurs + "");
> -        else if (groupRefObj.maxOccurs == Long.MAX_VALUE)
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "maxOccurs",
> -                                    "unbounded");
> -        //else not serialized
> -
> -        if (groupRefObj.minOccurs > 1)
> -            groupRef.setAttributeNS(XmlSchema.SCHEMA_NS, "minOccurs",
> -                                    groupRefObj.minOccurs + "");
> -
> -
> -        /*
> -                 if(groupRefObj.maxOccursString != null)
> -                 groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                 "maxOccurs", groupRefObj.maxOccursString);
> -                 else if(groupRefObj.maxOccurs > 1)
> -                 groupRef.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                 "maxOccurs", groupRefObj.maxOccurs + "");
> -               */
> -
> -        if (groupRefObj.particle != null) {
> -            Element particleEl;
> -            if (groupRefObj.particle instanceof XmlSchemaChoice)
> -                particleEl = serializeChoice(doc,
> -                                             (XmlSchemaChoice) groupRefObj.particle, schema);
> -            else if (groupRefObj.particle instanceof XmlSchemaSequence)
> -                particleEl = serializeSequence(doc,
> -                                               (XmlSchemaSequence) groupRefObj.particle, schema);
> -            else if (groupRefObj.particle instanceof XmlSchemaAll)
> -                particleEl = serializeAll(doc,
> -                                          (XmlSchemaAll) groupRefObj.particle, schema);
> -            else
> -                throw new XmlSchemaSerializerException("The content of group "
> -                                                       + "ref particle should be"
> -                                                       + " sequence, choice or all reference:  "
> -                                                       + "www.w3.org/TR/xmlschema-1#element-group-3.7.2");
> -        }
> -        if (groupRefObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     groupRefObj.annotation, schema);
> -            groupRef.appendChild(annotation);
> -        }
> -
> -        return groupRef;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSimpleContent(Document doc,
> -     * XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * simpleContentObj  - XmlSchemaSimpleContent that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of complex type simple content.
> -     * **********************************************************************
> -     */
> -    Element serializeSimpleContent(Document doc,
> -                                   XmlSchemaSimpleContent simpleContentObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -        Element simpleContent = createNewElement(doc, "simpleContent",
> -                                                 schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        Element content;
> -        if (simpleContentObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     simpleContentObj.annotation, schema);
> -            simpleContent.appendChild(annotation);
> -        }
> -        if (simpleContentObj.content instanceof
> -                XmlSchemaSimpleContentRestriction)
> -            content = serializeSimpleContentRestriction(doc,
> -                                                        (XmlSchemaSimpleContentRestriction) simpleContentObj.content,
> -                                                        schema);
> -        else if (simpleContentObj.content instanceof
> -                XmlSchemaSimpleContentExtension)
> -            content = serializeSimpleContentExtension(doc,
> -                                                      (XmlSchemaSimpleContentExtension) simpleContentObj.content,
> -                                                      schema);
> -        else
> -            throw new XmlSchemaSerializerException("content of simple content "
> -                                                   + "must be restriction or extension");
> -
> -        simpleContent.appendChild(content);
> -        return simpleContent;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeComplexContent(Document doc,
> -     * XmlSchemaComplexContent complexContentObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc                - Document the parent use.
> -     * complexContentObj  - XmlSchemaComplexContent that will be serialized.
> -     * schema             - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of complex type complex content.
> -     * **********************************************************************
> -     */
> -    Element serializeComplexContent(Document doc,
> -                                    XmlSchemaComplexContent complexContentObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        Element complexContent = createNewElement(doc, "complexContent",
> -                                                  schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -
> -        if (complexContentObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     complexContentObj.annotation, schema);
> -            complexContent.appendChild(annotation);
> -        }
> -
> -        if (complexContentObj.mixed)
> -            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "mixed", "true");
> -        if (complexContentObj.id != null)
> -            complexContent.setAttributeNS(XmlSchema.SCHEMA_NS, "id",
> -                                          complexContentObj.id);
> -
> -        Element content;
> -        if (complexContentObj.content instanceof
> -                XmlSchemaComplexContentRestriction)
> -
> -            content = serializeComplexContentRestriction(doc,
> -                                                         (XmlSchemaComplexContentRestriction) complexContentObj.content,
> -                                                         schema);
> -        else if (complexContentObj.content instanceof
> -                XmlSchemaComplexContentExtension)
> -            content = serializeComplexContentExtension(doc,
> -                                                       (XmlSchemaComplexContentExtension) complexContentObj.content,
> -                                                       schema);
> -        else
> -            throw new XmlSchemaSerializerException("content of complexContent "
> -                                                   + "must be restriction or extension");
> -
> -        complexContent.appendChild(content);
> -
> -        return complexContent;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeIdentityConstraint(Document doc,
> -     * XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
> -     * throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * constraintObj     - XmlSchemaIdentityConstraint that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of key, keyref or unique that part of its parent.
> -     * **********************************************************************
> -     */
> -    Element serializeIdentityConstraint(Document doc,
> -                                        XmlSchemaIdentityConstraint constraintObj, XmlSchema schema)
> -            throws XmlSchemaSerializerException {
> -
> -        Element constraint;
> -
> -        if (constraintObj instanceof XmlSchemaUnique)
> -            constraint = createNewElement(doc, "unique",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        else if (constraintObj instanceof XmlSchemaKey)
> -            constraint = createNewElement(doc, "key",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        else if (constraintObj instanceof XmlSchemaKeyref) {
> -            constraint = createNewElement(doc, "keyref",
> -                                          schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -            XmlSchemaKeyref keyref = (XmlSchemaKeyref) constraintObj;
> -            if (keyref.refer != null) {
> -                String keyrefStr = resolveQName(keyref.refer, schema);
> -                constraint.setAttributeNS(XmlSchema.SCHEMA_NS,
> -                                          "refer", keyrefStr);
> -            }
> -        } else
> -            throw new XmlSchemaSerializerException("not valid identity "
> -                                                   + "constraint");
> -
> -        if (constraintObj.name != null)
> -            constraint.setAttributeNS(XmlSchema.SCHEMA_NS, "name",
> -                                      constraintObj.name);
> -        if (constraintObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     constraintObj.annotation, schema);
> -            constraint.appendChild(annotation);
> -        }
> -
> -        if (constraintObj.selector != null) {
> -            Element selector = serializeSelector(doc,
> -                                                 constraintObj.selector, schema);
> -            constraint.appendChild(selector);
> -        }
> -        XmlSchemaObjectCollection fieldColl = constraintObj.fields;
> -        if (fieldColl != null) {
> -            int fieldLength = fieldColl.getCount();
> -            for (int i = 0; i < fieldLength; i++) {
> -                Element field = serializeField(doc,
> -                                               (XmlSchemaXPath) fieldColl.getItem(i), schema);
> -                constraint.appendChild(field);
> -            }
> -        }
> -        return constraint;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException{
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * selectorObj      - XmlSchemaXPath that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * Element of selector with collection of xpath as its attrib.  The selector
> -     * itself is the part of identity type.  eg <key><selector xpath="..."
> -     * **********************************************************************
> -     */
> -    Element serializeSelector(Document doc, XmlSchemaXPath selectorObj,
> -                              XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element selector = createNewElement(doc, "selector",
> -                                            schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        if (selectorObj.xpath != null)
> -            selector.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath",
> -                                    selectorObj.xpath);
> -        else
> -            throw new XmlSchemaSerializerException("xpath can't be null");
> -
> -        if (selectorObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     selectorObj.annotation, schema);
> -            selector.appendChild(annotation);
> -        }
> -        return selector;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeField(Document doc, XmlSchemaXPath fieldObj,
> -     * XmlSchema schema) throws XmlSchemaSerializerException
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc           - Document the parent use.
> -     * fieldObj      - XmlSchemaXPath that will be serialized.
> -     * schema        - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * field element that part of constraint.
> -     * **********************************************************************
> -     */
> -    Element serializeField(Document doc, XmlSchemaXPath fieldObj,
> -                           XmlSchema schema) throws XmlSchemaSerializerException {
> -
> -        Element field = createNewElement(doc, "field", schema.schema_ns_prefix,
> -                                         XmlSchema.SCHEMA_NS);
> -
> -        if (fieldObj.xpath != null)
> -            field.setAttributeNS(XmlSchema.SCHEMA_NS, "xpath", fieldObj.xpath);
> -        else
> -            throw new XmlSchemaSerializerException("xpath can't be null");
> -
> -        if (fieldObj.annotation != null) {
> -            Element annotation = serializeAnnotation(doc,
> -                                                     fieldObj.annotation, schema);
> -            field.appendChild(annotation);
> -        }
> -
> -        return field;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAnnotation(Document doc, XmlSchemaAnnotation
> -     * annotationObj, XmlSchema schema)
> -     * <p/>
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * annotationObj      - XmlSchemaAnnotation that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * annotation element that part of any type. will contain document and
> -     * appinfo for child.
> -     * **********************************************************************
> -     */
> -    Element serializeAnnotation(Document doc, XmlSchemaAnnotation annotationObj,
> -                                XmlSchema schema) {
> -
> -        Element annotation = createNewElement(doc, "annotation",
> -                                              schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -
> -        XmlSchemaObjectCollection contents = annotationObj.items;
> -        int contentLength = contents.getCount();
> -
> -        for (int i = 0; i < contentLength; i++) {
> -            XmlSchemaObject obj = contents.getItem(i);
> -
> -            if (obj instanceof XmlSchemaAppInfo) {
> -                XmlSchemaAppInfo appinfo = (XmlSchemaAppInfo) obj;
> -                Element appInfoEl = serializeAppInfo(doc, appinfo, schema);
> -                annotation.appendChild(appInfoEl);
> -            } else if (obj instanceof XmlSchemaDocumentation) {
> -                XmlSchemaDocumentation documentation =
> -                        (XmlSchemaDocumentation) obj;
> -
> -                Element documentationEl = serializeDocumentation(doc,
> -                                                                 documentation, schema);
> -
> -
> -                annotation.appendChild(documentationEl);
> -            }
> -        }
> -
> -        return annotation;
> -    }
> -
> -    /**
> -     * *********************************************************************
> -     * Element serializeAppInfo(Document doc,XmlSchemaAppInfo appInfoObj,
> -     * XmlSchema schema)
> -     * <p/>
> -     * <p/>
> -     * Each member of complex type will be appended and pass the element
> -     * created.  Complex type processed according to w3c Recommendation
> -     * May 2 2001.
> -     * <p/>
> -     * Parameter:
> -     * doc               - Document the parent use.
> -     * appInfoObj        - XmlSchemaAppInfo that will be serialized.
> -     * schema            - Schema Document object of the parent.
> -     * <p/>
> -     * Return:
> -     * App info element that is part of the annotation.
> -     * **********************************************************************
> -     */
> -    Element serializeAppInfo(Document doc, XmlSchemaAppInfo appInfoObj,
> -                             XmlSchema schema) {
> -
> -        Element appInfoEl = createNewElement(doc, "appinfo",
> -                                             schema.schema_ns_prefix, XmlSchema.SCHEMA_NS);
> -        if (appInfoObj.source != null)
>
> [... 3227 lines stripped ...]
>
>