[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: converting XML Schema to DTD
You could do this: <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> <!ELEMENT personnel (lname?, fname?) | (fname?, lname?) > except it's non-deterministic. So use this instead: <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> <!ELEMENT personnel (lname, fname?) | (fname, lname?)? > This solution doesn't scale beyond a handful of subelements. If you had 20 subelements, I would give up on full order-independant validation with DTDs, and use something like: <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> <!ELEMENT personnel (lname | fname)* > -Wayne Steele >From: "Banerjee, Saurabh" <sabanerjee@a...> >To: "'John Cowan'" <jcowan@r...>, "Banerjee, Saurabh" ><sabanerjee@a...> >CC: "'xml-dev@l...'" <xml-dev@l...> >Subject: RE: converting XML Schema to DTD >Date: Mon, 28 Jan 2002 15:23:44 -0500 > >Thanks John! Actually the question was what is the equivalent of the >following schema definition in DTD terms? > >SCHEMA: > ><xs:element name="personnel"> ><xs:complexType> ><xs:all> > <xs:element name="lname" minOccurs="0"/> > <xs:element name="fname" minOccurs="0"/> ></xs:all> ></xs:complexType> > > >XML Spy created the following DTD: ><!ELEMENT fname (#PCDATA)> ><!ELEMENT lname (#PCDATA)> ><!ELEMENT personnel (lname?, fname?)> > >This is not correct because the DTD will not validate the following: ><personnel> ><fname>George</fname> ><lname>Bush<lname> ></personnel> > >The schema will validate both > ><personnel> ><fname>George</fname> ><lname>Bush<lname> ></personnel> > >and ><personnel> ><lname>Bush<lname> ><fname>George</fname> ></personnel> > > > >-----Original Message----- >From: John Cowan [mailto:jcowan@r...] >Sent: Monday, January 28, 2002 2:50 PM >To: Banerjee, Saurabh >Cc: 'xml-dev@l...' >Subject: Re: converting XML Schema to DTD > > >Banerjee, Saurabh wrote: > > > this is not correct because the XML below is INVALID with the DTD but >valid > > with the SCHEMA. > > > > <?xml version="1.0" encoding="UTF-8"?> > > <!--Sample XML file generated by XML Spy v4.2 U >(http://www.xmlspy.com)--> > > <personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:noNamespaceSchemaLocation="D:\dtd2xs\try.xsd"> > > <fname>String1</fname> > > <lname>String2</lname> > > </personnel> > > >That is because DTDs do not know about namespace prefixes, > >or the magic properties of xsi:* to Schema. You must declare these >attributes in your DTD by adding the following (at minimum): > ><!ATTLIST personnel > xmlns:xsi CDATA #IMPLIED > xsi:noNamespaceSchemaLocation CDATA #IMPLIED> > >-- >John Cowan <jcowan@r...> http://www.reutershealth.com >I amar prestar aen, han mathon ne nen, http://www.ccil.org/~cowan >han mathon ne chae, a han noston ne 'wilith. --Galadriel, _LOTR:FOTR_ > >----------------------------------------------------------------- >The xml-dev list is sponsored by XML.org <http://www.xml.org>, an >initiative of OASIS <http://www.oasis-open.org> > >The list archives are at http://lists.xml.org/archives/xml-dev/ > >To subscribe or unsubscribe from this list use the subscription >manager: <http://lists.xml.org/ob/adm.pl> > _________________________________________________________________ Join the worlds largest e-mail service with MSN Hotmail. http://www.hotmail.com
|
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
|