[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] DTD to Scheme


Subject: RE: [xsl] DTD to Scheme
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 2 Feb 2005 08:37:11 -0000

You're on the wrong list for XML Schema questions - the right place is
xmlschema-dev@xxxxxxx

But the answer is that you can express this model without violating UPA. In
shorthand, you write it as

((waiting,passing?)|passing)

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Stano Paska [mailto:paska@xxxxxxx] 
> Sent: 02 February 2005 05:23
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] DTD to Scheme
> 
> Hi,
> 
> I need rewrite som DTD into XML Schema.
> I have problem with one part.
> In element "item" there may be three combinations of waiting/passing
> elements:
> one waiting, one passing, or both.
> 
> In DTD it is easy and it works:
> <!ELEMENT item (risid,(waiting|passing|(waiting,passing)))>
> 
> In Scheme it is easy, but it does not work:
>      <xsd:element name="item">
>          <xsd:complexType>
>              <xsd:sequence>
>                  <xsd:element ref="risid"/>
>                  <xsd:choice>
>                      <xsd:element ref="waiting"/>
>                      <xsd:element ref="passing"/>
>                      <xsd:sequence>
>                          <xsd:element ref="waiting"/>
>                          <xsd:element ref="passing"/>
>                      </xsd:sequence>
>                  </xsd:choice>
>              </xsd:sequence>
>          </xsd:complexType>
>      </xsd:element>
> 
> :0,0: Complex type 'C0' violates the Unique Particle 
> Attribution rule in
> its components 'waiting' and 'waiting'
> 
> It is possible to write corresponding schema?
> 
> Thanks for your solutions.
> 
> Stano.
> 
> Attachments:
> -----------------
> test.xml
> -----------------
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE result SYSTEM "d:\praca\lucia\klient\dtd.dtd">
> <result>
> 	<item>
> 		<risid>DE307001001223</risid>
> 		<waiting>
> 			<average>13.99</average>
> 			<deviation>6.27</deviation>
> 			<count>4</count>
> 		</waiting>
> 		<passing>
> 			<average>13.99</average>
> 			<deviation>6.27</deviation>
> 			<count>4</count>
> 		</passing>
> 	</item>
> </result>
> 
> ----------------
> DTD
> ----------------
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <!ELEMENT result (item+|error)>
> 
> <!ELEMENT error (#PCDATA)>
> <!ELEMENT item (risid,(waiting|passing|(waiting,passing)))>
> 
> <!ELEMENT risid (#PCDATA)>
> <!ELEMENT waiting (average,deviation,count)>
> <!ELEMENT passing (average,deviation,count)>
> 
> <!ELEMENT average (#PCDATA)>
> <!ELEMENT deviation (#PCDATA)>
> <!ELEMENT count (#PCDATA)>
> 
> -----------------
> Scheme
> -----------------
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
> 
> 	<!-- simple elements -->
> 	<xsd:element name="risid" type="xsd:string"/>
> 	<xsd:element name="average" type="xsd:decimal"/>
> 	<xsd:element name="deviation" type="xsd:decimal"/>
> 	<xsd:element name="count" type="xsd:nonNegativeInteger"/>
> 	<xsd:element name="error" type="xsd:string"/>
> 
> 	<!-- complex elements -->
> 	<xsd:complexType name="record">
> 		<xsd:sequence>
> 			<xsd:element ref="average"/>
> 			<xsd:element ref="deviation"/>
> 			<xsd:element ref="count"/>
> 		</xsd:sequence>
> 	</xsd:complexType>
> 	<xsd:element name="waiting" type="record"/>
> 	<xsd:element name="passing" type="record"/>
> 
> 	<xsd:element name="item">
> 		<xsd:complexType>
> 			<xsd:sequence>
> 				<xsd:element ref="risid"/>
> 				<xsd:choice>
> 					<xsd:element ref="waiting"/>
> 					<xsd:element ref="passing"/>
> 					<xsd:sequence>
> 						<xsd:element 
> ref="waiting"/>
> 						<xsd:element 
> ref="passing"/>
> 					</xsd:sequence>
> 				</xsd:choice>
> 			</xsd:sequence>
> 		</xsd:complexType>
> 	</xsd:element>
> 
> 	<xsd:element name="result">
> 		<xsd:complexType>
> 			<xsd:choice>
> 				<xsd:element ref="error"/>
> 				<xsd:element ref="item" 
> maxOccurs="unbounded"/>
> 			</xsd:choice>
> 		</xsd:complexType>
> 	</xsd:element>
> 
> </xsd:schema>


Current Thread
Keywords