- 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