- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Mon, 22 Sep 2003 15:36:51 +0100
- To: chris@publicbar.com
- Cc: xmlschema-dev@w3.org
Hi Chris, > I am trying to validate some xml against the following, In the attached > files i have: > > bl.xsd: > > <?xml version="1.0" encoding="utf-8" ?> > <xs:schema targetNamespace="http://www.blexample.com" > xmlns="http://www.blexample.com" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:hl7="http://www.blexample.com" > elementFormDefault="qualified"> > <xs:include schemaLocation="../dt/bldatatypes.xsd" /> > > <xs:element name="TypeValidation"> > <xs:complexType> [snip] > <xs:sequence> [snip] > <xs:element ref="addr"/> > </xs:sequence> > </xs:complexType> > </xs:element> Above, you're saying that the <addr> element within the <TypeValidation> element is validated against the global element declaration for the <addr> element. The global element declaration for the <addr> element is: > <xs:element name="addr"> > <xs:complexType> > <xs:sequence> > <xs:element name="addr" type="AD" minOccurs="0" maxOccurs="1" /> > </xs:sequence> > </xs:complexType> > </xs:element> This says that the <addr> element might contain another <addr> element of type {http://www.blexample.com}AD (otherwise it must be empty). Already, that means your instance document: > bl.xml: > > <?xml version="1.0" encoding="utf-8"?> > <TypeValidation xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' > xsi:schemaLocation='http://www.blexample.com bl.xsd' > xmlns='http://www.blexample.com'> [snip] > <addr> > <city>test</city> <--------------- PROBLEM > </addr> > </TypeValidation> is invalid; according to your schema, the <addr> element directly within the <TypeValidation> element must either be empty or contain another <addr> element of type {http://www.blexample.com}AD. Perhaps you meant the <addr> element to be of type {http://www.blexample.com}AD? In that case, the global element declaration should look like: <xs:element name="addr" type="AD" /> and if you want to say that the <addr> element within the <TypeValidation> element is optional, you need to say that when you refer to this element declaration: <xs:element ref="addr" minOccurs="0" /> I haven't tried out this change, so there might be other things in addition that are preventing it from working... Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Monday, 22 September 2003 10:37:27 UTC