[Home] [By Thread] [By Date] [Recent Entries]


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_

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member