in xmlschema-core/src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java [278:355]
XmlSchemaComplexType handleComplexType(XmlSchema schema, Element complexEl, Element schemaEl,
boolean topLevel) {
XmlSchemaComplexType ct = new XmlSchemaComplexType(schema, topLevel);
if (complexEl.hasAttribute("name")) {
// String namespace = (schema.targetNamespace==null)?
// "":schema.targetNamespace;
ct.setName(complexEl.getAttribute("name"));
}
for (Element el = XDOMUtil.getFirstChildElementNS(complexEl, XmlSchema.SCHEMA_NS);
el != null;
el = XDOMUtil.getNextSiblingElementNS(el, XmlSchema.SCHEMA_NS)) {
// String elPrefix = el.getPrefix() == null ? "" :
// el.getPrefix();
// if(elPrefix.equals(schema.schema_ns_prefix)) {
if (el.getLocalName().equals("sequence")) {
ct.setParticle(handleSequence(schema, el, schemaEl));
} else if (el.getLocalName().equals("choice")) {
ct.setParticle(handleChoice(schema, el, schemaEl));
} else if (el.getLocalName().equals("all")) {
ct.setParticle(handleAll(schema, el, schemaEl));
} else if (el.getLocalName().equals("attribute")) {
ct.getAttributes().add(handleAttribute(schema, el, schemaEl));
} else if (el.getLocalName().equals("attributeGroup")) {
ct.getAttributes().add(handleAttributeGroupRef(schema, el));
} else if (el.getLocalName().equals("group")) {
XmlSchemaGroupRef group = handleGroupRef(schema, el, schemaEl);
if (group.getParticle() == null) {
ct.setParticle(group);
} else {
ct.setParticle(group.getParticle());
}
} else if (el.getLocalName().equals("simpleContent")) {
ct.setContentModel(handleSimpleContent(schema, el, schemaEl));
} else if (el.getLocalName().equals("complexContent")) {
ct.setContentModel(handleComplexContent(schema, el, schemaEl));
} else if (el.getLocalName().equals("annotation")) {
ct.setAnnotation(handleAnnotation(el));
} else if (el.getLocalName().equals("anyAttribute")) {
ct.setAnyAttribute(handleAnyAttribute(schema, el, schemaEl));
}
// }
}
if (complexEl.hasAttribute("block")) {
String blockStr = complexEl.getAttribute("block");
ct.setBlock(XmlSchemaDerivationMethod.schemaValueOf(blockStr));
// ct.setBlock(new XmlSchemaDerivationMethod(block));
}
if (complexEl.hasAttribute("final")) {
String finalstr = complexEl.getAttribute("final");
ct.setFinal(XmlSchemaDerivationMethod.schemaValueOf(finalstr));
}
if (complexEl.hasAttribute("abstract")) {
String abs = complexEl.getAttribute("abstract");
if (abs.equalsIgnoreCase("true")) {
ct.setAbstract(true);
} else {
ct.setAbstract(false);
}
}
if (complexEl.hasAttribute("mixed")) {
String mixed = complexEl.getAttribute("mixed");
if (mixed.equalsIgnoreCase("true")) {
ct.setMixed(true);
} else {
ct.setMixed(false);
}
}
// process extra attributes and elements
processExtensibilityComponents(ct, complexEl, true);
return ct;
}