in src/main/java/org/apache/ws/commons/schema/SchemaBuilder.java [1700:1748]
private void handleSimpleTypeRestriction(XmlSchema schema, Element schemaEl,
XmlSchemaSimpleType simpleType, Element restrictionEl) {
XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction();
Element restAnnotationEl =
XDOMUtil.getFirstChildElementNS(restrictionEl, XmlSchema.SCHEMA_NS, "annotation");
if (restAnnotationEl != null) {
XmlSchemaAnnotation restAnnotation = handleAnnotation(restAnnotationEl);
restriction.setAnnotation(restAnnotation);
}
/**
* if (restriction has a base attribute ) set the baseTypeName and look up the base type else if(
* restriction has a SimpleType Element as child) get that element and do a handleSimpleType; get the
* children of restriction other than annotation and simpleTypes and construct facets from it; set the
* restriction has the content of the simpleType
**/
Element inlineSimpleType =
XDOMUtil.getFirstChildElementNS(restrictionEl, XmlSchema.SCHEMA_NS, "simpleType");
if (restrictionEl.hasAttribute("base")) {
NamespaceContext ctx = NodeNamespaceContext.getNamespaceContext(restrictionEl);
restriction.setBaseTypeName(getRefQName(restrictionEl.getAttribute("base"), ctx));
} else if (inlineSimpleType != null) {
restriction.setBaseType(handleSimpleType(schema, inlineSimpleType, schemaEl, false));
}
for (Element el = XDOMUtil.getFirstChildElementNS(restrictionEl, XmlSchema.SCHEMA_NS);
el != null;
el = XDOMUtil.getNextSiblingElementNS(el, XmlSchema.SCHEMA_NS)) {
if (!el.getLocalName().equals("annotation") && !el.getLocalName().equals("simpleType")) {
XmlSchemaFacet facet = XmlSchemaFacet.construct(el);
Element annotation = XDOMUtil.getFirstChildElementNS(el, XmlSchema.SCHEMA_NS, "annotation");
if (annotation != null) {
XmlSchemaAnnotation facetAnnotation = handleAnnotation(annotation);
facet.setAnnotation(facetAnnotation);
}
// process extra attributes and elements
processExtensibilityComponents(facet, el);
restriction.getFacets().add(facet);
}
}
simpleType.content = restriction;
}