- From: Michael Kay <mike@saxonica.com>
- Date: Fri, 7 Jan 2005 14:11:31 -0000
- To: "'Vinotha Suntharalingam'" <vinos@carbontwelve.com>, <xmlschema-dev@w3.org>
- Message-Id: <E1Cmupz-0000LT-00@ukmail1.eechost.net>
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:11:37 UTC