[
Lists Home |
Date Index |
Thread Index
]
On Fri, 12 Jul 2002, Glen Mazza wrote:
> Hello,
>
> I thought this type of XML document (with two types of
> "name"s) was acceptable:
>
> <family>
> <person>
> <name>
> <firstname>John</firstname>
> <lastname>Smith</lastname>
> </name>
> </person>
> <pet>
> <name>Spot</name>
> </pet>
> </family>
>
> Creating a DTD for this appears to be failing on the
> "name" field.
>
> I define it once for people as:
> <!ELEMENT name (firstname, lastname)>
>
> and later for pets as
> <!ELEMENT name (#PCDATA)>
>
> But evidently I can only define "name" once, even
> though "name" is in different contexts ("person",
> "pet"). Can I scope "names" within the DTD, sort of
> like this following: (if so, what's the syntax?)
>
> <!ELEMENT person.name ....
> <!ELEMENT pet.name ....
>
> Thanks,
> Glen
>
>
You can't redefine an element in a DTD (i.e., make it context dependent).
However, it is easily possible in Relax NG:
<element name="person">
<element name="name">
<element name="firstname"><text/></element>
<element name="lastname"><text/></element>
</element>
</element>
<element name="pet">
<element name="name"><text/></element>
</element>
I suspect it's possible with XML Schema as well.
--
J. David Eisenberg http://catcode.com/
|