Altova Mailing List Archives>Archive Index >xmlschema-dev Archive Home >Recent entries >Thread Prev - RE: Need help with Unique Particle Attribution Rule >Thread Next - RE: Need help with Unique Particle Attribution Rule Re: Need help with Unique Particle Attribution RuleTo: Michael Kay <mike@--------.---> Date: 1/7/2005 2:26:00 AM
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@w...
> [mailto:xmlschema-dev-request@w...] On Behalf Of Vinotha
> Suntharalingam
> Sent: 07 January 2005 05:33
> To: xmlschema-dev@w...
> 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
>
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
