diff options
Diffstat (limited to 'gnu/xml/validation/xmlschema')
-rw-r--r-- | gnu/xml/validation/xmlschema/ComplexType.java | 12 | ||||
-rw-r--r-- | gnu/xml/validation/xmlschema/XMLSchema.java | 15 | ||||
-rw-r--r-- | gnu/xml/validation/xmlschema/XMLSchemaBuilder.java | 18 | ||||
-rw-r--r-- | gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java | 21 |
4 files changed, 37 insertions, 29 deletions
diff --git a/gnu/xml/validation/xmlschema/ComplexType.java b/gnu/xml/validation/xmlschema/ComplexType.java index 826ba32d9..f92212b50 100644 --- a/gnu/xml/validation/xmlschema/ComplexType.java +++ b/gnu/xml/validation/xmlschema/ComplexType.java @@ -37,10 +37,12 @@ exception statement from your version. */ package gnu.xml.validation.xmlschema; +import gnu.xml.validation.datatype.Annotation; +import gnu.xml.validation.datatype.Type; + import java.util.LinkedHashSet; import java.util.Set; import javax.xml.namespace.QName; -import gnu.xml.validation.datatype.Type; /** * A complex type definition. @@ -68,7 +70,9 @@ class ComplexType final boolean isAbstract; - Set attributeUses; + // Currently both AttributeUse and QName objects + // are added to this. + Set<Object> attributeUses; AnyAttribute attributeWildcard; @@ -84,7 +88,7 @@ class ComplexType final int prohibitedSubstitutions; - Set annotations; + Set<Annotation> annotations; ComplexType(QName name, boolean isAbstract, @@ -95,7 +99,7 @@ class ComplexType this.isAbstract = isAbstract; this.prohibitedSubstitutions = prohibitedSubstitutions; this.finality = finality; - attributeUses = new LinkedHashSet(); + attributeUses = new LinkedHashSet<Object>(); } } diff --git a/gnu/xml/validation/xmlschema/XMLSchema.java b/gnu/xml/validation/xmlschema/XMLSchema.java index fb8eb88b1..1df378385 100644 --- a/gnu/xml/validation/xmlschema/XMLSchema.java +++ b/gnu/xml/validation/xmlschema/XMLSchema.java @@ -37,8 +37,11 @@ exception statement from your version. */ package gnu.xml.validation.xmlschema; +import gnu.xml.validation.datatype.Type; + import java.util.LinkedHashMap; import java.util.Map; +import javax.xml.namespace.QName; import javax.xml.validation.Schema; import javax.xml.validation.Validator; import javax.xml.validation.ValidatorHandler; @@ -88,17 +91,17 @@ final class XMLSchema /** * The element declarations in this schema. */ - final Map elementDeclarations; + final Map<QName,ElementDeclaration> elementDeclarations; /** * The attribute declarations in this schema. */ - final Map attributeDeclarations; + final Map<QName,AttributeDeclaration> attributeDeclarations; /** * The type declarations in this schema. */ - final Map types; + final Map <QName,Type> types; XMLSchema(String targetNamespace, String version, int finalDefault, int blockDefault, @@ -111,9 +114,9 @@ final class XMLSchema this.blockDefault = blockDefault; this.attributeFormQualified = attributeFormQualified; this.elementFormQualified = elementFormQualified; - elementDeclarations = new LinkedHashMap(); - attributeDeclarations = new LinkedHashMap(); - types = new LinkedHashMap(); + elementDeclarations = new LinkedHashMap<QName,ElementDeclaration>(); + attributeDeclarations = new LinkedHashMap<QName,AttributeDeclaration>(); + types = new LinkedHashMap<QName,Type>(); } public Validator newValidator() diff --git a/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java b/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java index a7bad3129..3cfcfdedb 100644 --- a/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java +++ b/gnu/xml/validation/xmlschema/XMLSchemaBuilder.java @@ -48,6 +48,7 @@ import org.relaxng.datatype.helpers.DatatypeLibraryLoader; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import gnu.xml.validation.datatype.Annotation; +import gnu.xml.validation.datatype.Facet; import gnu.xml.validation.datatype.SimpleType; import gnu.xml.validation.datatype.Type; @@ -525,10 +526,14 @@ class XMLSchemaBuilder throws DatatypeException { SimpleType type = (SimpleType) schema.types.get(typeName); + if (type != null) + return type; if (!XMLConstants.W3C_XML_SCHEMA_NS_URI.equals(typeName.getNamespaceURI())) return null; String localName = typeName.getLocalPart(); - return (SimpleType) typeLibrary.createDatatype(localName); + type = (SimpleType) typeLibrary.createDatatype(localName); + schema.types.put(typeName, type); + return type; } SimpleType parseSimpleType(Node simpleType) @@ -549,10 +554,10 @@ class XMLSchemaBuilder typeFinal = getAttribute(schemaAttrs, "finalDefault"); } } - int typeFinality = parseSimpleTypeDerivationSet(typeFinal); + parseSimpleTypeDerivationSet(typeFinal); // TODO: Make use of typeFinality QName typeName = asQName(getAttribute(attrs, "name"), simpleType); int variety = 0; - Set facets = new LinkedHashSet(); + Set<Facet> facets = new LinkedHashSet<Facet>(); int fundamentalFacets = 0; // TODO SimpleType baseType = null; // TODO Annotation annotation = null; @@ -661,8 +666,7 @@ class XMLSchemaBuilder { NamedNodeMap attrs = restriction.getAttributes(); String base = getAttribute(attrs, "base"); - QName baseType = asQName(base, restriction); - SimpleType simpleType = null; + asQName(base, restriction); // TODO: make use of basetype for (Node child = restriction.getFirstChild(); child != null; child = child.getNextSibling()) { @@ -678,7 +682,7 @@ class XMLSchemaBuilder else if ("simpleType".equals(name)) { type.contentType = XMLSchema.CONTENT_SIMPLE; - simpleType = parseSimpleType(child); + parseSimpleType(child); // TODO: make use of SimpleType } else if ("minExclusive".equals(name)) { @@ -744,7 +748,7 @@ class XMLSchemaBuilder { NamedNodeMap attrs = extension.getAttributes(); String base = getAttribute(attrs, "base"); - QName baseType = asQName(base, extension); + asQName(base, extension); // TODO: make use of basetype for (Node child = extension.getFirstChild(); child != null; child = child.getNextSibling()) { diff --git a/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java b/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java index 6c4f1f392..1991432a2 100644 --- a/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java +++ b/gnu/xml/validation/xmlschema/XMLSchemaValidatorHandler.java @@ -75,16 +75,16 @@ final class XMLSchemaValidatorHandler ContentHandler contentHandler; ErrorHandler errorHandler; LSResourceResolver resourceResolver; - final LinkedList context; // element context - final ArrayList attributes; // attribute context; + final LinkedList<XMLSchemaElementTypeInfo> context; // element context + final ArrayList<XMLSchemaAttributeTypeInfo> attributes; // attribute context; XMLSchemaValidatorHandler(XMLSchema schema) { this.schema = schema; typeInfoProvider = new XMLSchemaTypeInfoProvider(this); namespaceSupport = new NamespaceSupport(); - context = new LinkedList(); - attributes = new ArrayList(); + context = new LinkedList<XMLSchemaElementTypeInfo>(); + attributes = new ArrayList<XMLSchemaAttributeTypeInfo>(); final String ns = XMLConstants.W3C_XML_SCHEMA_NS_URI; typeLibrary = new DatatypeLibraryLoader().createDatatypeLibrary(ns); } @@ -126,25 +126,23 @@ final class XMLSchemaValidatorHandler TypeInfo getElementTypeInfo() { - return (XMLSchemaElementTypeInfo) context.getFirst(); + return context.getFirst(); } TypeInfo getAttributeTypeInfo(int index) { - return (XMLSchemaAttributeTypeInfo) attributes.get(index); + return attributes.get(index); } boolean isIdAttribute(int index) { - XMLSchemaAttributeTypeInfo typeInfo = - (XMLSchemaAttributeTypeInfo) attributes.get(index); + XMLSchemaAttributeTypeInfo typeInfo = attributes.get(index); return typeInfo.id; } boolean isSpecified(int index) { - XMLSchemaAttributeTypeInfo typeInfo = - (XMLSchemaAttributeTypeInfo) attributes.get(index); + XMLSchemaAttributeTypeInfo typeInfo = attributes.get(index); return typeInfo.specified; } @@ -203,8 +201,7 @@ final class XMLSchemaValidatorHandler { namespaceSupport.pushContext(); QName name = new QName(uri, localName); - ElementDeclaration decl = - (ElementDeclaration) schema.elementDeclarations.get(name); + ElementDeclaration decl = schema.elementDeclarations.get(name); // Validation Rule: Element Locally Valid (Element) String xsiType = atts.getValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "type"); |