XmlSchemaCollection.init() should initialize simple types inheritance as 
specified in the specification.
--------------------------------------------------------------------------------------------------------

                 Key: XMLSCHEMA-12
                 URL: https://issues.apache.org/jira/browse/XMLSCHEMA-12
             Project: XmlSchema
          Issue Type: Improvement
    Affects Versions: XmlSchema 2.0
            Reporter: Dmitry Repchevsky
            Priority: Trivial


http://www.w3.org/TR/2004/PER-xmlschema-2-20040318/datatypes.html#built-in-datatypes
predefine an inheritance for build-in datatypes. 
Probably it could be better to include into XmlSchemaCollection.init() method 
something like:

fixDatatypes(xsd);

[CODE]
private void fixDatatypes(XmlSchema schema)
    {
        setSimpleTypeRestriction(schema, Constants.XSD_ANYSIMPLETYPE, 
Constants.XSD_ANYTYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_DURATION, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_DATETIME, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_TIME, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_DATE, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_YEARMONTH, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_YEAR, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_MONTHDAY, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_DAY, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_MONTH, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_BOOLEAN, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_BASE64, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_HEXBIN, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_FLOAT, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_DOUBLE, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_ANYURI, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_QNAME, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_NOTATION, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_NOTATION, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_DECIMAL, 
Constants.XSD_ANYSIMPLETYPE);

        setSimpleTypeRestriction(schema, Constants.XSD_INTEGER, 
Constants.XSD_DECIMAL);
        setSimpleTypeRestriction(schema, Constants.XSD_NONPOSITIVEINTEGER, 
Constants.XSD_INTEGER);
        setSimpleTypeRestriction(schema, Constants.XSD_NEGATIVEINTEGER, 
Constants.XSD_NONPOSITIVEINTEGER);
        setSimpleTypeRestriction(schema, Constants.XSD_LONG, 
Constants.XSD_INTEGER);
        setSimpleTypeRestriction(schema, Constants.XSD_INT, Constants.XSD_LONG);
        setSimpleTypeRestriction(schema, Constants.XSD_SHORT, 
Constants.XSD_INT);
        setSimpleTypeRestriction(schema, Constants.XSD_BYTE, 
Constants.XSD_SHORT);
        setSimpleTypeRestriction(schema, Constants.XSD_NONNEGATIVEINTEGER, 
Constants.XSD_INTEGER);
        setSimpleTypeRestriction(schema, Constants.XSD_POSITIVEINTEGER, 
Constants.XSD_NONNEGATIVEINTEGER);
        setSimpleTypeRestriction(schema, Constants.XSD_UNSIGNEDLONG, 
Constants.XSD_NONNEGATIVEINTEGER);
        setSimpleTypeRestriction(schema, Constants.XSD_UNSIGNEDINT, 
Constants.XSD_UNSIGNEDLONG);
        setSimpleTypeRestriction(schema, Constants.XSD_UNSIGNEDSHORT, 
Constants.XSD_UNSIGNEDINT);
        setSimpleTypeRestriction(schema, Constants.XSD_UNSIGNEDBYTE, 
Constants.XSD_UNSIGNEDSHORT);

        setSimpleTypeRestriction(schema, Constants.XSD_STRING, 
Constants.XSD_ANYSIMPLETYPE);
        setSimpleTypeRestriction(schema, Constants.XSD_NORMALIZEDSTRING, 
Constants.XSD_STRING);
        setSimpleTypeRestriction(schema, Constants.XSD_TOKEN, 
Constants.XSD_NORMALIZEDSTRING);
        setSimpleTypeRestriction(schema, Constants.XSD_LANGUAGE, 
Constants.XSD_TOKEN);
        setSimpleTypeRestriction(schema, Constants.XSD_NMTOKEN, 
Constants.XSD_TOKEN);
        setSimpleTypeRestriction(schema, Constants.XSD_NAME, 
Constants.XSD_NMTOKEN);
        setSimpleTypeRestriction(schema, Constants.XSD_NCNAME, 
Constants.XSD_TOKEN);
        setSimpleTypeRestriction(schema, Constants.XSD_ID, 
Constants.XSD_NCNAME);
        setSimpleTypeRestriction(schema, Constants.XSD_IDREF, 
Constants.XSD_NCNAME);
        setSimpleTypeRestriction(schema, Constants.XSD_ENTITY, 
Constants.XSD_NCNAME);

        setSimpleTypeList(schema, Constants.XSD_NMTOKENS, 
Constants.XSD_NMTOKEN);
        setSimpleTypeList(schema, Constants.XSD_IDREFS, Constants.XSD_IDREF);
        setSimpleTypeList(schema, Constants.XSD_ENTITIES, Constants.XSD_ENTITY);
    }

    private static void setSimpleTypeRestriction(XmlSchema schema, QName child, 
QName parent)
    {
        XmlSchemaSimpleType simple = 
(XmlSchemaSimpleType)schema.getTypeByName(child);
        XmlSchemaSimpleTypeRestriction restriction = new 
XmlSchemaSimpleTypeRestriction();
        restriction.setBaseTypeName(parent);
        
restriction.setBaseType((XmlSchemaSimpleType)schema.getTypeByName(parent));
        simple.setContent(restriction);
    }

    private void setSimpleTypeList(XmlSchema schema, QName child, QName parent)
    {
        XmlSchemaSimpleType simple = 
(XmlSchemaSimpleType)schema.getTypeByName(child);
        XmlSchemaSimpleTypeList restriction = new XmlSchemaSimpleTypeList();
        restriction.setItemTypeName(parent);
        
restriction.setItemType((XmlSchemaSimpleType)schema.getTypeByName(parent));
        simple.setContent(restriction);
    }
[CODE]

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to