[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Schema Question
Dan, In schema I think there is more than one possible way to accomplish this. The one way that I have used is abstract comlex types and type substitution. The schema might look something like this: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="foo" type="fooType"> </xs:element> <xs:complexType name="fooType" abstract="true"/> <xs:element name="data1" type="xs:string" minOccurs="0" maxOccurs="1"/> <xs:element name="data2" type="xs:string" minOccurs="0" maxOccurs="1"/> <xs:element name="data3" type="xs:string" minOccurs="0" maxOccurs="1"/> <xs:element name="data4" type="xs:string" minOccurs="0" maxOccurs="1"/> <xs:attribute name="mode" type="xs:string"/> <xs:complexType name="fooOne" > <xs:complexContent> <xs:extension base="fooType"> <xs:sequence> <xs:element name="data1" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="data2" type="xs:string" minOccurs="1" maxOccurs="1"/> </xs:sequence> <xs:attribute name="mode" type="xs:string" fixed="one"/> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="fooTwo" > <xs:complexContent> <xs:extension base="fooType"> <xs:sequence> <xs:element name="data3" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="data4" type="xs:string" minOccurs="1" maxOccurs="1"/> </xs:sequence> <xs:attribute name="mode" type="xs:string" fixed="two"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:schema> and both of the following instance documents validate. <foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="foo.xsd" xsi:type="fooOne" mode="one"> <data1>abc</data1> <data2>xyz</data2> </foo> <foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="foo.xsd" xsi:type="fooTwo" mode="two"> <data3>abc</data3> <data4>xyz</data4> </foo> Regards John McCarthy Dan White <ygor@c... To: xml-dev@l... > cc: Subject: Schema Question 07/07/04 11:32 AM I need a pointer or two about creating a schema. I have a situation where the incoming XML will have an element/attribute specifying one of four enumerated choices. Depending on the value of that choice, the elements that follow will be different. Like this: <foo> <mode>one</mode> <data1>aaa</data1> <data2>bbb</data2> </foo <foo> <mode>two</mode> <data3>ccc</data3> <data4>ddd</data4> </foo> or <foo mode="one"> <data1>aaa</data1> <data2>bbb</data2> </foo <foo mode="two"> <data3>ccc</data3> <data4>ddd</data4> </foo> How does one set up the schema to validate the appropriate sequence of elements based on the value of the "controlling" element/attribute ? Thanks in advance. ----------------------------------------------------------------- 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://www.oasis-open.org/mlmanage/index.php> -- This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
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
|