Curt Arnold - 2000-04-21

This is a copy of a comment that I just sent to www-xml-schema-comments@w3.org.

I know that there is some reorganization of the physical structure of the
schema for schemas intended in the near future and this though occurred to
me while working on the previously mentioned schema compilation project
(note, drop the https: from the url in the previous message).

Basically, all documents whether they are schemas or not will need to have
implied definitions of the builtin datatypes in the same manner as they have
an implied definition of xsi:type and xsi:null (especially since a built-in
datatype name could be a value for an xsi:type attribute)

Only a miniscule fraction of documents need to have knowledge of the schema
definition elements.

This seems to indicate that the definition of the built-in datatypes need to
be defined in the xsi namespace (http://www.w3.org/1999/XMLSchema-instance).

Datatypes used in the schema definition elements that are not intended as
generally available datatypes (typically commented as utility class not for
public use) should be defined in XMLSchema.xsd and would be in the
http://www.w3.org/1999/XMLSchema namespace.

When a processor is trying to resolve a type name that is not qualified, it
would first look within the current schema and if there was no match, would
then attempt to resolve within the schema instance namespace.

So, I'd suggest something like (freehanded definitions, not validated)

xsi.xsd

<schema targetNamespace="http://www.w3.org/1999/XMLSchema-instance">
    <simpleType name="urSimpleType"/>
    <simpleType name="string"/>
    <simpleType name="integer"/>
    ....
    <attribute name="type" type="QName"/>
    <attribute name="null" type="boolean"/>
</schema>

XMLSchema.xsd

<schema targetNamespace'http://www.w3.org/1999/XMLSchema">
    <import targetNamespace="http://www.w3.org/1999/XMLSchema-instance"
             schemaLocation="xsi.xsd"/>
    <!-- import of xml namespace goes here   -->

    <!--  since this is not in the instance namespace, it will not be used
to resolve
                    unqualified names in other schemas   -->
    <simpleType name="XPathApprox"/>
    ....
    <attribute name="type" type="QName"/>
    <attribute name="null" type="boolean"/>
</schema>