- From: Kevin Braun <kbraun@obj-sys.com>
- Date: Wed, 17 Nov 2010 13:39:28 -0500
- To: Pete Cordell <petexmldev@codalogic.com>
- CC: Mukul Gandhi <gandhi.mukul@gmail.com>, xmlschema-dev@w3.org
Hi, Under XSD 1.0, I believe the validation error is not correct. Rule 3.2.1 of "Complex Type Definition with complex content" applies, so that the {content type}would be xs:double. (http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html#declare-type). Under XSD 1.1, the parallel part of the recommendation (http://www.w3.org/TR/xmlschema11-1/#dcl.ctd.ctcc.common) leads to a content type of empty. In that case, the validation error would be correct. Regards, Kevin -- Objective Systems, Inc. REAL WORLD ASN.1 AND XML SOLUTIONS http://www.obj-sys.com On 11/17/2010 1:25 PM, Pete Cordell wrote: > Hi Mukul, > > Thanks for trying it on Xerces. It's a validator I don't have. > > Motivated by your suggestion I decided to look for an on-line version > and found the following: > > http://validate.openlaboratory.net/ > > I put in the following files: > > ----Fail.xsd----- > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:complexType name="DoubleBase"> > <xs:simpleContent> > <xs:extension base="xs:double"> > <xs:attribute name="DoubleBaseAttr" type="xs:boolean"/> > </xs:extension> > </xs:simpleContent> > </xs:complexType> > > <xs:complexType name="DoubleBaseExtension"> > <xs:complexContent> > <xs:extension base="DoubleBase"> > <xs:attribute name="DoubleExtensionAttr" type="xs:boolean"/> > </xs:extension> > </xs:complexContent> > </xs:complexType> > > <xs:element name="DoubleElement" type="DoubleBaseExtension"/> > > </xs:schema> > > ----Fail.xml----- > <DoubleElement DoubleExtensionAttr="true" > DoubleBaseAttr="false">1.5</DoubleElement> > > While it reported that the XSD and XML were OK, it displayed the > following error message. > > ====== > Validation results > > Checking first import/include references in schema files: > Fail.xsd: OK > Fail.xml: OK > > Running validation process '/usr/bin/DOMPrint' > > Errors detected: > Error at file "Fail.xml", line 2, column 69 > Message: No character data is allowed by content model > > Instance Fail.xml: > <?xml version="1.0" encoding="UTF-8"?> > <DoubleElement DoubleExtensionAttr="true" > DoubleBaseAttr="false">1.5</DoubleElement> > > ====== > > Does anybody know what an instance should look like if the schema is > OK, but this instance is wrong? > > BTW: I don't know what version of Xerces the page uses. > > Thanks, > > Pete Cordell > Codalogic Ltd > Interface XML to C++ the easy way using C++ XML > data binding to convert XSD schemas to C++ classes. > Visit http://codalogic.com/lmx/ or http://www.xml2cpp.com > for more info > ----- Original Message ----- From: "Mukul Gandhi" > <gandhi.mukul@gmail.com> > To: "Pete Cordell" <petexmldev@codalogic.com> > Cc: <xmlschema-dev@w3.org> > Sent: Wednesday, November 17, 2010 5:50 PM > Subject: Re: Extension of xs:simpleContent > > > > Hi Pete, > I believe the schema you've posted is correct (I cross checked with > Xerces too). I think for simpleContent instances, schema component > complexContent can be used technically as well (since simpleContent is > a subset of complexContent). > > Though I would have designed the schema type "DoubleBaseExtension" > specified in your example, to use simpleContent rather than > complexContent (as you rightly said too). > > On Wed, Nov 17, 2010 at 10:45 PM, Pete Cordell > <petexmldev@codalogic.com> wrote: >> I have a customer who has a schema that extends a simple type double >> into a >> complex type with simple content, and then as a separate construct >> extends >> that into a complex type with complex content. They do this along the >> following lines: >> >> <xs:complexType name="DoubleBase"> >> <xs:simpleContent> >> <xs:extension base="xs:double"> >> <xs:attribute name="DoubleBaseAttr" type="xs:boolean"/> >> </xs:extension> >> </xs:simpleContent> >> </xs:complexType> >> >> <xs:complexType name="DoubleBaseExtension"> >> <xs:complexContent> >> <xs:extension base="DoubleBase"> >> <xs:attribute name="DoubleExtensionAttr" type="xs:boolean"/> >> </xs:extension> >> </xs:complexContent> >> </xs:complexType> >> >> (To avoid confusion, the intent of the latter is to add the >> DoubleExtensionAttr attribute rather than mandate that you've got >> complexContent.) >> >> My feeling is this is wrong because DoubleBaseExtension should specify >> xs:simpleContent rather than xs:complexContent. >> >> However, XML Spy and Visual Studio seem to accept the above, and the >> example >> is actually based on a industry consortium schema that specifies similar >> constructs. >> >> So my questions are: >> >> 1) Is the above schema correct or not? >> >> 2) If it is technically incorrect, is it widely occurring (possibly >> because >> tools fail to pick it up) and therefore worth overlooking this error? >> >> Thanks, >> >> Pete Cordell >> Codalogic Ltd >> Interface XML to C++ the easy way using C++ XML >> data binding to convert XSD schemas to C++ classes. >> Visit http://codalogic.com/lmx/ or http://www.xml2cpp.com >> for more info > > > > >
Received on Wednesday, 17 November 2010 18:40:02 UTC