Re: Need help with Unique Particle Attribution Rule

So which do you consider the appropriate check ?  The "loose" UPA or
the "strict" UPA ? 

 <xs:choice>
    <xs:element ref="tns:A" />
    <xs:element ref="tns:A" />
</xs:choice>




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
>

Received on Friday, 7 January 2005 14:25:38 UTC