W3C home > Mailing lists > Public > xmlschema-dev@w3.org > January 2005

Re: Need help with Unique Particle Attribution Rule

From: Burak Emir <Burak.Emir@epfl.ch>
Date: Fri, 07 Jan 2005 15:17:45 +0100
Message-ID: <41DE9A09.6040500@epfl.ch>
To: Michael Kay <mike@saxonica.com>
CC: xmlschema-dev@w3.org

Dear Michael,

Please correct me if I am wrong, but I think your suggestion is not 
equivalent. In the original example it was possible to have

[admin,error,error]

whereas now one can only have

[admin,error,deviceTypeInfo,error]

In your definition, the last error (not of the ones that follow "admin") 
is always preceded by at least one deviceTypeInfo, which removes the 
ambiguity.

cheers,
Burak

Michael Kay wrote:

> This is actually one of those examples where the Thompson/Tobin 
> algorithm used by XSV and Saxon doesn't give a UPA error, because the 
> two particles for element "error" both refer to the same element 
> declaration. The Thompson/Tobin algorithm lets a content model through 
> if the element declaration for each element can be determined 
> unambiguously, even if the particle can't.
>  
> I think the following content model is equivalent, and passes the 
> stricter version of the UPA test:
>  
> <xsd:element name="systemProvider">
>     <xsd:complexType>
>         <xsd:sequence>
>             <xsd:sequence minOccurs="0" maxOccurs="unbounded">
>                 <xsd:element ref="admin"/>
>                 <xsd:element ref="error" minOccurs="0"/>
>             </xsd:sequence>
>             <xsd:sequence minOccurs="0">
>                <xsd:element ref="deviceTypeInfo" maxOccurs="unbounded"/>
>                <xsd:element ref="error" minOccurs="0"/>
>             </xsd:sequence>
>         </xsd:sequence>
>     </xsd:complexType>
> </xsd:element>
>  
> Michael Kay
> http://www.saxonica.com/
>
>     ------------------------------------------------------------------------
>     *From:* xmlschema-dev-request@w3.org
>     [mailto:xmlschema-dev-request@w3.org] *On Behalf Of *Vinotha
>     Suntharalingam
>     *Sent:* 07 January 2005 05:33
>     *To:* xmlschema-dev@w3.org
>     *Subject:* Need help with Unique Particle Attribution Rule
>
>     Hi,
>
>     I'm trying to parse an xsd with Xerces and I'm running into UPA
>     rule violation problems. Attached below is relevant sections in
>     the xsd where the problem is encountered. I'm finding it difficult
>     to define the 'systemProvider' element in such way it doesn't
>     violate this rule. Could someone please assist me on how it can be
>     done?
>
>     (I tried to follow the name, first-name, last-name example to fix
>     the problem, but this particular element definition seems to be a
>     bit more complicated. Any help would be much appreciated.)
>
>     <xsd:element name="systemProvider">
>         <xsd:complexType>
>             <xsd:sequence>
>                 <xsd:sequence minOccurs="0" maxOccurs="unbounded">
>                     <xsd:element ref="admin"/>
>                     <xsd:element ref="error" minOccurs="0"/>
>                 </xsd:sequence>
>                 <xsd:element ref="deviceTypeInfo" minOccurs="0"
>     maxOccurs="unbounded"/>
>                 <xsd:element ref="error" minOccurs="0"/>
>             </xsd:sequence>
>         </xsd:complexType>
>     </xsd:element>
>
>     <!-- The following elements are referenced in the above piece of
>     code -->
>
>     <xsd:element name="deviceTypeInfo">
>       <xsd:complexType>
>        <xsd:sequence>
>         <xsd:element ref="deviceType"/>
>         <xsd:element ref="category"/>
>         <xsd:element ref="maxPorts"/>
>         <xsd:element ref="protocolSupported" maxOccurs="unbounded"/>
>        </xsd:sequence>
>       </xsd:complexType>
>      </xsd:element>
>      
>     <xsd:element name="protocolSupported">
>       <xsd:complexType>
>        <xsd:simpleContent>
>         <xsd:extension base="xsd:string">
>          <xsd:attribute name="default" use="optional">
>           <xsd:simpleType>
>            <xsd:restriction base="xsd:string">
>             <xsd:enumeration value="true"/>
>            </xsd:restriction>
>           </xsd:simpleType>
>          </xsd:attribute>
>         </xsd:extension>
>        </xsd:simpleContent>
>       </xsd:complexType>
>      </xsd:element>
>      
>     <xsd:element name="error">
>       <xsd:complexType>
>        <xsd:sequence>
>         <xsd:element ref="id"/>
>         <xsd:element ref="summary"/>
>         <xsd:element ref="detail" minOccurs="0"/>
>        </xsd:sequence>
>       </xsd:complexType>
>      </xsd:element>
>     <xsd:element name="admin">
>       <xsd:complexType>
>        <xsd:sequence>
>         <xsd:element ref="userId"/>
>         <xsd:element ref="password" minOccurs="0"/>
>         <xsd:element ref="userName" minOccurs="0"/>
>        </xsd:sequence>
>       </xsd:complexType>
>      </xsd:element>
>     <xsd:element name="summary" type="xsd:string"/>
>     <xsd:element name="id" type="xsd:string"/>
>     <xsd:element name="detail" type="xsd:string"/>
>     <xsd:element name="userId" type="xsd:string"/>
>     <xsd:element name="password" type="xsd:string"/>
>     <xsd:element name="userName" type="xsd:string"/>
>     <xsd:element name="deviceType" type="xsd:string"/>
>     <xsd:element name="category" type="xsd:string"/>
>     <xsd:element name="maxPorts" type="xsd:string"/>
>
>
>     Thank you in advance.
>     Vino
>


-- 
Burak Emir

http://lamp.epfl.ch/~buraq
Received on Friday, 7 January 2005 14:17:48 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:49 GMT