[
Lists Home |
Date Index |
Thread Index
]
You are running into an issue called "non-determinism", because the
schema processor cannot discern - when a "choice" compositor is used -
if an element named "identifier" should be considered to be the
"identifier" element that is declared in the content model, or an
element that is supplied as a wildcard (the xs:any element).
You have not provided a "namespace" attribute to the xs:any element -
therefore, an element in that place in an XML instance document
conforming to the schema to which that content model belongs (long
sentence, I know but trying to be precise) can be in any namespace.
If you were to add a "namespace" attribute to the xs:any element that is
more "strict" with the namespace - e.g. "##other", which means that the
element must be from a namespace other than the target namespace of the
schema - then this will solve the problem because the schema processor
will be able to handle such an element in a deterministic manner.
Hope that helps.
Kind Regards,
Joe Chiusano
Booz | Allen | Hamilton
Strategy and Technology Consultants to the World
Hess Yvan wrote:
>
> I want to design a complexType named "metadata" that forces the presence of
> an "identifier" element and allows any others elements not predefined.
> Moreover the "identifier" and the others elements can appear in any order
> into the "metadata" element. Here are examples of valid xml instances:
>
> <metadata xmlns="http://www.imtf.com/test">
> <identifier>urn:hsc:1234</identifier>
> <name>Hess Yvan</name>
> </metadata>
>
> <metadata xmlns="http://www.imtf.com/test">
> <subject>This is the subject</subject>
> <identifier>urn:hsc:1234</identifier>
> <title>This is the title</title>
> </metadata>
>
> I implemented the following xml schema complexType but it doesn't work:
>
> <xs:element name="metadata">
> <xs:complexType>
> <xs:choice minOccurs="0" maxOccurs="unbounded">
> <xs:element name="identifier" type="xs:string"/>
> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
> </xs:choice>
> </xs:complexType>
> </xs:element>
>
> I get the following error with Xerces validation and a similar one with XSV
> (it seems I violate the "Unique Particle Attribution").
>
> [Error] choice.xsd:4:23: cos-nonambig: "http://www.imtf.com/test":identifier
> and
> WC[##any] (or elements from their substitution group) violate "Unique
> Particle
> Attribution". During validation against this schema, ambiguity would be
> created
> for those two particles.
> choice.xml: 571 ms (3 elems, 1 attrs, 0 spaces, 30 chars)
>
> If I change my xml schema using sequence instead of choice as follow:
>
> <xs:element name="metadata">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="identifier" type="xs:string"/>
> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
>
> it works but in this case the "identifier" element must be at the FIRST
> position and I don't want that !!!
>
> Please can you help me to solve this problem. I have no idea how to solve it
> !!!
>
> Regards. Yvan Hess
>
> --------------------------------------------------------
> XML file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <metadata xmlns="http://www.imtf.com/test"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="http://www.imtf.com/test choice.xsd">
> <identifier>urn:hsc:1234</identifier>
> <name>Hess Yvan</name>
> </metadata>
>
> --------------------------------------------------------
> XML schema file:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema targetNamespace="http://www.imtf.com/test"
> xmlns="http://www.imtf.com/test" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> <xs:element name="metadata">
> <xs:complexType>
> <xs:choice minOccurs="0" maxOccurs="unbounded">
> <xs:element name="identifier" type="xs:string"/>
> <xs:any processContents="lax" minOccurs="0"
> maxOccurs="unbounded"/>
> </xs:choice>
> </xs:complexType>
> </xs:element>
> </xs:schema>
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://www.oasis-open.org/mlmanage/index.php>
|