- From: Costello, Roger L. <costello@mitre.org>
- Date: Mon, 27 Apr 2009 10:18:22 -0400
- To: "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>
Hi Folks,
Here's a simple schema that uses xs:assert to check that the value of the <country> element matches one listed in an instance document (countries.xml):
---------------------------------------------------------------
<?xml version="1.0"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<element name="Example">
<complexType>
<sequence>
<element name="country">
<simpleType>
<restriction base="string">
<assert test="$value = doc('countries.xml')//country" />
</restriction>
</simpleType>
</element>
</sequence>
</complexType>
</element>
</schema>
---------------------------------------------------------------
While running this example, I discovered these requirements:
- the instance document referenced by xs:assert (countries.xml)
must have a schema, and
- I have to import that schema.
Why?
These requirements don't seem reasonable to me.
I should be able to reference any instance document (under my control or otherwise) and use it as a data source.
These requirements mean:
- I can't reference instance documents that don't have a schema
- I can't reference instance documents that uses some other
schema language, such as DTD or RELAX NG.
- Everything is tightly coupled: the schema, the referenced
instance document and its schema. I can't easily switch to
another instance document and use it as a data source.
Would someone please explain the rationale for these requirements?
/Roger
Received on Monday, 27 April 2009 14:18:59 UTC