Re: Extension of xs:simpleContent

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