- From: Mukul Gandhi <gandhi.mukul@gmail.com>
- Date: Wed, 1 Sep 2010 20:29:06 +0530
- To: xmlschema-dev@w3.org
- Cc: janne postilista <jannepostilistat@gmail.com>
Michael rightly wrote that in your schema, the wild-card and the
element particles are in same namespace, so you're getting a UPA
violation.
Here's probably a solution (one of the solutions I guess :)) with few
sample XML and schema documents, which could solve the problem for
you.
test.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="some-A"
xmlns:tns="some-A"
xmlns:fault="some-B"
elementFormDefault="qualified">
<xsd:import namespace="some-B" schemaLocation="fault.xsd" />
<xsd:element name="MyResponse">
<xsd:complexType>
<xsd:choice>
<xsd:any namespace="##targetNamespace" processContents="lax" />
<xsd:element ref="fault:Fault" />
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
fault.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="some-B"
xmlns:fault="some-B"
elementFormDefault="qualified">
<xsd:element name="Fault" type="xsd:integer" />
</xsd:schema>
test1.xml
<MyResponse xmlns="some-A">
<Fault>
<Message>test message</Message>
</Fault>
</MyResponse>
test2.xml
<MyResponse xmlns="some-A">
<Fault xmlns="some-B">test message</Fault>
</MyResponse>
Here are the validation outcomes for above examples, with Xerces XML
Schema 1.0 engine:
1. Validating test1.xml with test.xsd successfully passes the
validation (here the child of 'MyResponse' is validated by the
wild-card)
2. Validating test2.xml with test.xsd gives following error,
[Error] test2.xml:2:45: cvc-datatype-valid.1.2.1: 'test message' is
not a valid value for 'integer'.
[Error] test2.xml:2:45: cvc-type.3.1.3: The value 'test message' of
element 'Fault' is not valid.
(here the child of 'MyResponse' is validated by the element
declaration in fault.xsd)
I hope this helps.
On Tue, Aug 31, 2010 at 8:03 PM, janne postilista
<jannepostilistat@gmail.com> wrote:
> Hi,
>
> I am trying to create a choice with either a xsd:any from namespace A
> or xsd:element from namespace B. I think that because they are from
> different namespaces there should be no ambiguity, am I wrong?
>
> My schema:
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="some-A"
> xmlns:tns="some-A"
> xmlns:fault="some-B"
> elementFormDefault="qualified" >
>
> <xsd:import namespace="some-B"
> schemaLocation="fault.xsd" />
>
> <xsd:element name="MyResponse">
> <xsd:complexType>
> <xsd:choice>
> <xsd:any namespace="##targetNamespace"/>
> <xsd:element name="Fault" type="fault:FaultType" />
> </xsd:choice>
> </xsd:complexType>
> </xsd:element>
>
> When validating I get
>
>
> XML validation started.
> D:/zzz.xsd:33,8
> ERROR: cos-nonambig: WC["some-A"] and "hsome-A":Fault (or elements
> from their substitution group) violate "Unique Particle Attribution".
> During validation against this schema, ambiguity would be created for
> those two particles.
>
> 1 Error(s), 0 Warning(s).
> XML validation finished.
>
> What is the problem?
--
Regards,
Mukul Gandhi
Received on Wednesday, 1 September 2010 15:00:12 UTC