You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by bi...@apache.org on 2011/04/22 22:48:19 UTC
svn commit: r1096032 -
/webservices/xmlschema/tags/xmlschema-2.0/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java
Author: bimargulies
Date: Fri Apr 22 20:48:19 2011
New Revision: 1096032
URL: http://svn.apache.org/viewvc?rev=1096032&view=rev
Log:
XMLSCHEMA-12: add some relationships between the basic types
Modified:
webservices/xmlschema/tags/xmlschema-2.0/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java
Modified: webservices/xmlschema/tags/xmlschema-2.0/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java
URL: http://svn.apache.org/viewvc/webservices/xmlschema/tags/xmlschema-2.0/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java?rev=1096032&r1=1096031&r2=1096032&view=diff
==============================================================================
--- webservices/xmlschema/tags/xmlschema-2.0/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java (original)
+++ webservices/xmlschema/tags/xmlschema-2.0/xmlschema-core/src/main/java/org/apache/ws/commons/schema/XmlSchemaCollection.java Fri Apr 22 20:48:19 2011
@@ -345,6 +345,9 @@ public final class XmlSchemaCollection {
addSimpleType(xsd, Constants.XSD_LANGUAGE.getLocalPart());
addSimpleType(xsd, Constants.XSD_TOKEN.getLocalPart());
+ // 2.5.3 setup built-in datatype hierarchy
+ setupBuiltinDatatypeHierarchy(xsd);
+
// SchemaKey key = new SchemaKey(XmlSchema.SCHEMA_NS, null);
// addSchema(key, xsd);
@@ -368,6 +371,77 @@ public final class XmlSchemaCollection {
}
}
+ private void setupBuiltinDatatypeHierarchy(XmlSchema xsd) {
+
+ setDerivationByRestriction(xsd, Constants.XSD_ANYSIMPLETYPE, Constants.XSD_ANYTYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_DURATION, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_DATETIME, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_TIME, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_DATE, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_YEARMONTH, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_YEAR, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_MONTHDAY, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_DAY, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_MONTH, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_BOOLEAN, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_BASE64, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_HEXBIN, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_FLOAT, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_DOUBLE, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_ANYURI, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_QNAME, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_NOTATION, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_NOTATION, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_DECIMAL, Constants.XSD_ANYSIMPLETYPE);
+
+ setDerivationByRestriction(xsd, Constants.XSD_INTEGER, Constants.XSD_DECIMAL);
+ setDerivationByRestriction(xsd, Constants.XSD_NONPOSITIVEINTEGER, Constants.XSD_INTEGER);
+ setDerivationByRestriction(xsd, Constants.XSD_NEGATIVEINTEGER, Constants.XSD_NONPOSITIVEINTEGER);
+ setDerivationByRestriction(xsd, Constants.XSD_LONG, Constants.XSD_INTEGER);
+ setDerivationByRestriction(xsd, Constants.XSD_INT, Constants.XSD_LONG);
+ setDerivationByRestriction(xsd, Constants.XSD_SHORT, Constants.XSD_INT);
+ setDerivationByRestriction(xsd, Constants.XSD_BYTE, Constants.XSD_SHORT);
+ setDerivationByRestriction(xsd, Constants.XSD_NONNEGATIVEINTEGER, Constants.XSD_INTEGER);
+ setDerivationByRestriction(xsd, Constants.XSD_POSITIVEINTEGER, Constants.XSD_NONNEGATIVEINTEGER);
+ setDerivationByRestriction(xsd, Constants.XSD_UNSIGNEDLONG, Constants.XSD_NONNEGATIVEINTEGER);
+ setDerivationByRestriction(xsd, Constants.XSD_UNSIGNEDINT, Constants.XSD_UNSIGNEDLONG);
+ setDerivationByRestriction(xsd, Constants.XSD_UNSIGNEDSHORT, Constants.XSD_UNSIGNEDINT);
+ setDerivationByRestriction(xsd, Constants.XSD_UNSIGNEDBYTE, Constants.XSD_UNSIGNEDSHORT);
+
+ setDerivationByRestriction(xsd, Constants.XSD_STRING, Constants.XSD_ANYSIMPLETYPE);
+ setDerivationByRestriction(xsd, Constants.XSD_NORMALIZEDSTRING, Constants.XSD_STRING);
+ setDerivationByRestriction(xsd, Constants.XSD_TOKEN, Constants.XSD_NORMALIZEDSTRING);
+ setDerivationByRestriction(xsd, Constants.XSD_LANGUAGE, Constants.XSD_TOKEN);
+ setDerivationByRestriction(xsd, Constants.XSD_NMTOKEN, Constants.XSD_TOKEN);
+ setDerivationByRestriction(xsd, Constants.XSD_NAME, Constants.XSD_NMTOKEN);
+ setDerivationByRestriction(xsd, Constants.XSD_NCNAME, Constants.XSD_TOKEN);
+ setDerivationByRestriction(xsd, Constants.XSD_ID, Constants.XSD_NCNAME);
+ setDerivationByRestriction(xsd, Constants.XSD_IDREF, Constants.XSD_NCNAME);
+ setDerivationByRestriction(xsd, Constants.XSD_ENTITY, Constants.XSD_NCNAME);
+
+ setDerivationByList(xsd, Constants.XSD_NMTOKENS, Constants.XSD_NMTOKEN);
+ setDerivationByList(xsd, Constants.XSD_IDREFS, Constants.XSD_IDREF);
+ setDerivationByList(xsd, Constants.XSD_ENTITIES, Constants.XSD_ENTITY);
+ }
+
+ private void setDerivationByRestriction(XmlSchema xsd, QName child, QName parent) {
+
+ XmlSchemaSimpleType simple = (XmlSchemaSimpleType)xsd.getTypeByName(child);
+ XmlSchemaSimpleTypeRestriction restriction = new XmlSchemaSimpleTypeRestriction();
+ restriction.setBaseTypeName(parent);
+ restriction.setBaseType((XmlSchemaSimpleType)xsd.getTypeByName(parent));
+ simple.setContent(restriction);
+ }
+
+ private void setDerivationByList(XmlSchema xsd, QName child, QName parent) {
+
+ XmlSchemaSimpleType simple = (XmlSchemaSimpleType)xsd.getTypeByName(child);
+ XmlSchemaSimpleTypeList restriction = new XmlSchemaSimpleTypeList();
+ restriction.setItemTypeName(parent);
+ restriction.setItemType((XmlSchemaSimpleType)xsd.getTypeByName(parent));
+ simple.setContent(restriction);
+ }
+
/**
* Pop the stack of schemas. This function, while public, is probably not useful outside of the
* implementation.