This example can be done in DTD syntax in the same way that you do it with
namespaces. In fact, namespaces were specifically designed to not break
validation. (also, note that the ns pseudo-attribute is supposed to be a
URL)
> XML-Data schemas are designed to integrate with namespaces:
>
> <!-- Schema for xyz namespace -->
> <elementType id="a">
> <string/>
> </elementType>
>
> <!-- Schema for zyx namespace (in a separate file) -->
> <?xml:namespace ns="xyz" prefix="x"?>
> <elementType id="b">
> <element type="x:a">
> </elementType>
>
> <!-- Instance file -->
> <?xml:namespace ns="zyx" prefix="z"?>
> <?xml:namespace ns="xyz" prefix="x"?>
> <z:b>
> <x:a/>
> </z:b>
xyz.dtd:
<!ELEMENT xyz:a (#PCDATA)>
zyx.dtd:
<!ELEMENT zyx:b (xyz:a)>
instance.xml:
<?xml:namespace ns="zyx.dtd" prefix="zyx"?>
<?xml:namespace ns="xyz.dtd" prefix="xyz"?>
<zyx:b>
<xyz:a>
</xyz:a>
</zyx:b>
You don't need "ANY" to use namespaces.
> The ns, prefix, and src parameters to a namespace PI look a lot like
> attributes (although they are not in a formal sense). Since attributes in
> XML do not have to be in a particular order, it would certainly be
> surprising for people to discover that attributes in a namespace have to be
> a particular order. You're suggesting that the syntax be made harder to use
> in order to make the productions easier to author. I think this is a bad
> tradeoff.
Note that the XML declaration has a required order of pseudo-attribute
occurrence. It would be best if the XML-family of language were
consistent.
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
Paul Prescod - http://itrc.uwaterloo.ca/~papresco
"A writer is also a citizen, a political animal, whether he likes it or
not. But I do not accept that a writer has a greater obligation
to society than a musician or a mason or a teacher. Everyone has
a citizen's commitment." - Wole Soyinka, Africa's first Nobel Laureate