[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: DTD/Schemas with repeated structure
Justin Lipton <justin@s...> writes: > Hi, > > I was wondering if anyone has come across this problem. > We are currently using a DTD that has the following structure. > Ignore the actual names used here as they are purely for illustrative > purposes but assume that there is no choice but to use such a structure: > > <!ELEMENT Mammal (MammalName, MammalType)> > <!ELEMENT MammalName (#PCDATA)> > <!ATTLIST MammalName (latin|common) "common"> > <!ELEMENT MammalType (#PCDATA)> > > <!ELEMENT Fish (FishName, FishType)> > <!ATTLIST FishName (latin|common) "common"> > <!ELEMENT FishType (#PCDATA)> > > <!ELEMENT Bird (BirdName, BirdType)> > <!ATTLIST BirdName (latin|common) "common"> > <!ELEMENT BirdType (#PCDATA)> > > Image dozens of elements like this! > > Is there a way (either with a Schema or a DTD) to generalise this type of > structure such that: > <!ELEMENT * (*Name, *Type)> > <!ATTLIST *Name (latin|common) "common"> > <!ELEMENT *Type (#PCDATA)> As several respondants have pointed out, there are other element structures which might suit your needs better. If you _really_ want the above structure, XML Schema [1] provides a mechanism (equivalence classes) which at least makes clear the relationship: <element name="animal" abstract="true" type="animalType"/> <complexType name="animalType" abstract="true"> <sequence> <element ref="name"/> <element ref="type"/> </sequence> </complexType> <element name="name" abstract="true"> <complexType base="string" derivedBy="extension"> <attribute name="form" use="default" value="common"> <simpleType> <enumeration value="latin"/> <enumeration value="common"/> </simpleType> </attribute> </complexType> </element> <element name="type" type="string" abstract="true"/> <element name="Mammal" equivClass="animal"/> <element name="MammalName" equivClass="name"/> <element name="MammalType" equivClass="type"/> <element name="Bird" equivClass="animal"/> <element name="BirdName" equivClass="name"/> <element name="BirdType" equivClass="type"/> This would have the advantage that when XPath is schema-aware, you will be able to query all the animal names, regardless of phylum. ht -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh W3C Fellow 1999--2001, part-time member of W3C Team 2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440 Fax: (44) 131 650-4587, e-mail: ht@c... URL: http://www.ltg.ed.ac.uk/~ht/
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|