- From: Tom Moog <tmoog@sarvega.com>
- Date: Fri, 07 Jan 2005 08:25:34 -0600
- To: Michael Kay <mike@saxonica.com>
- CC: xmlschema-dev@w3.org
- Message-ID: <41DE9BDE.1090808@sarvega.com>
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