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

  • From: Michael Kay <mike@s...>
  • To: 'Azariah Jeyakumar' <ajeyakumar@t...>, xml-dev@l...
  • Date: Fri, 10 Aug 2007 22:31:45 +0100

This is a feature often requested in XML Schema called "cooccurrence constraints". It can't be done in XML Schema 1.0, unless you are prepared to change your <type> element into an xsi:type attribute. It will be possible in XML Schema 1.1, but that's still in the future.
 
Michael Kay
http://www.saxonica.com/
 


From: Azariah Jeyakumar [mailto:ajeyakumar@t...]
Sent: 10 August 2007 22:22
To: xml-dev@l...
Subject: XML Schema and the Unique Particle Attribution (UPA) rule

Hi,

 

I would like to create an XML Schema for the content model like:

 

<M>

  <type>type1</type>

  <… several elements specific to type1 …>

</M>

 

<M>

  <type>type2</type>

  <… several elements specific to type2 …>

</M>

 

Etc

 

I was playing with a XML Schema like:

 

  <xs:complexType name="upa_test">

    <xs:choice>

      <xs:sequence>

        <xs:element name="type" type="xs:string" fixed="type1" />

        <xs:element name="B" type="xs:string"/>

      </xs:sequence>

      <xs:sequence>

        <xs:element name="type" type="xs:string" fixed="type2" />

        <xs:element name="C" type="xs:string"/>

      </xs:sequence>

    </xs:choice>

  </xs:complexType>

 

But the processor I am using rejects this Schema saying it violates the UPA rule. Shouldn’t the processor be able to uniquely determine the particle based on the element’s type and/or value? Can someone suggest an alternate XML Schema that would not violate the UPA rule?

 

Changing the content model to introduce an intermediate level for <type1>, <type2>, etc would work, but I can’t make this change as it would break backward compatibility.

 

Thanks

Azariah

 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


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