RE: XML schema problem for two definitions of the same element.

XML Schema doesn't allow types to be context-sensitive in this kind of way.
The closest you can get is to define the type of "metadata" as a choice
giving the two possible structures.

Michael Kay  

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Hess Yvan
> Sent: 18 June 2004 08:49
> To: 'xmlschema-dev@w3.org'
> Subject: XML schema problem for two definitions of the same element.
> 
> 
> I have a XML situation that have many time the same element but with a
> different defininiton as illustrated bellow and I would like 
> to create the
> XML schema that can validate this document. As you can see only the
> <metadata> element differs from the first and second 
> <document> element. The
> first <document> element must occur only once and the second 
> <document>
> element can appears 0..unbounded. How can solve my problem?
> 
> Thanks for your answer.
> 
> Regards. Yvan
> 
> -------------
> XML document:
> -------------
> 
> <edoc>
>    <document>
>       <metadata>
>          <documenttype>BODY</documenttype>
>          <from>yhe</from>
>          <to>yvan</to>
>       </metadata>
>       <content>this is the content of the first document</content>
>    </document>
>    <document>
>       <metadata>
>          <documenttype>ATTACHMENT</documenttype>
>          <filename>test.doc</filename>
>          <filesize>100</filesize>
>       </metadata>
>       <content>this is the content of the second document</content>
>    </document>
> </edoc>
> 
> -------------
> XML schema:
> -------------
> 
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified">
>    <xs:element name="edoc">
>       <xs:complexType>
>          <xs:sequence>
>             <xs:element name="document">
>                <xs:complexType>
>                   <xs:sequence>
>                      <xs:element name="metadata">
>                         <xs:complexType>
>                            <xs:sequence>
>                               <xs:element name="documenttype"
> type="xs:string"/>
>                               <xs:element name="from" 
> type="xs:string"/>
>                               <xs:element name="to" type="xs:string"/>
>                            </xs:sequence>
>                         </xs:complexType>
>                      </xs:element>
>                      <xs:element name="content" type="xs:string"/>
>                   </xs:sequence>
>                </xs:complexType>
>             </xs:element>
>             <xs:element name="document" minOccurs="0" 
> maxOccurs="unbounded">
>                <xs:complexType>
>                   <xs:sequence>
>                      <xs:element name="metadata">
>                         <xs:complexType>
>                            <xs:sequence>
>                               <xs:element name="documenttype"
> type="xs:string"/>
>                               <xs:element name="filename" 
> type="xs:string"/>
>                               <xs:element name="filesize" 
> type="xs:string"/>
>                            </xs:sequence>
>                         </xs:complexType>
>                      </xs:element>
>                      <xs:element name="content" type="xs:string"/>
>                   </xs:sequence>
>                </xs:complexType>
>             </xs:element>
>          </xs:sequence>
>       </xs:complexType>
>    </xs:element>
> </xs:schema>
> 
> 
> Yvan Hess
> Chief Software Architect
> 
> e-mail: yvan.hess@imtf.ch
> phone : +41 (0)26 460 66 66 
> fax   : +41 (0)26 460 66 60 
> 
> Informatique-MTF SA
> Route du Bleuet 1 
> CH-1762 Givisiez 
>         
> Systemintegrators for eDocuments 
> http://www.imtf.com
> 
> DISCLAIMER 
> This message is intended only for use by the person to whom 
> it is addressed.
> It may contain information that is privileged and 
> confidential. Its content
> does not constitute a formal commitment by IMTF. If you are 
> not the intended
> recipient of this message, kindly notify the sender 
> immediately and destroy
> this message. Thank You.
> 
> 
> 
> 

Received on Friday, 18 June 2004 05:27:23 UTC