Re: Bundling Of Multiple XML Schemas

Hi Konstantin,

> Our question is how to deliver this "compound schema" that
> references multiple namespaces, without requiring that the schema
> documents be stored in multiple files, or retrieved independently by
> URL, etc. In other words, we need some way to bundle these schemas
> together, and possibly also some legal way to use the schema
> location "hint" to indicate that the schemas are bundled together.

I *think* that it is possible to bundle schemas for distinct
namespaces together in the same document with the id attribute on
xs:schema used to provide anchors for links between them. So with your
example, I think that you should be able to do:

<?xml version="1.0"?>
<!DOCTYPE schemas [
<!ELEMENT xs:schema ANY>
<!ATTLIST xs:schema id ID #REQUIRED>
]>
<schemas xmlns:xs="http://www.w3.org/2001/XMLSchema"
         xmlns:hr="http://www.nimble.com/HumanResources"
         xmlns:eng="http://www.nimble.com/Engineering"
         xmlns:rs="http://www.nimble.com/results"
         xmlns:re="http://www.nimble.com/resultenvelope">

<xs:schema id="resultenvelope"
           targetNamespace="http://www.nimble.com/resultenvelope">
  <xs:import namespace="http://www.nimble.com/results"
             schemaLocation="#results" />

  <xs:element name="envelope">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="rs:record" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
             
</xs:schema>

<xs:schema id="results"
           targetNamespace="http://www.nimble.com/results">
  <xs:import namespace="http://www.nimble.com/HumanResources" />
  <xs:import namespace="http://www.nimble.com/Engineering" />

  <xs:element name="record">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="hr:employee" />
        <xs:element ref="eng:project" minOccurs="0"
                                      maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
             
</xs:schema>

</schemas>

If this file were schemas.xml, you should then be able to validate
against the resultenvelope schema with the URL
schemas.xml#resultenvelope.

However, just because this is theoretically possible doesn't mean that
any schema validator will be able to use it - I don't know if any of
the processors recognise fragment identifiers within URLs that are
supposed to be pointing to XML Schema documents.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Saturday, 9 March 2002 07:12:16 UTC