- From: Sandy Gao <sandygao@ca.ibm.com>
- Date: Wed, 7 Jan 2009 09:36:05 -0500
- To: Tobias Koenig <tobias.koenig@trolltech.com>
- Cc: xmlschema-dev@w3.org
- Message-ID: <OFA6FC353F.BA17D51D-ON85257537.004FA12F-85257537.005034F5@ca.ibm.com>
The schema is valid, but if you have an instance like: <root xmlns="ElemDecl/disallowedSubst"> <Member1/> </root> Then you would get an error. And the error disappears if you remove the "block" attribute from the schema. The "validly substitutable" rule is checked when the instance is validated, and not when the schema is built. Thanks, Sandy Gao XML Technologies, IBM Canada Editor, W3C XML Schema WG Member, W3C SML WG (1-905) 413-3255 T/L 313-3255 Tobias Koenig <tobias.koenig@tr olltech.com> To Sent by: xmlschema-dev@w3.org xmlschema-dev-req cc uest@w3.org Subject block attribute and substitution 07/01/2009 06:25 groups AM Hej, today I have a question about the block attribute in conjunction with substitution groups. Let's assume the following schema ========================================= <xsd:schema xmlns="ElemDecl/disallowedSubst" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="ElemDecl/disallowedSubst" elementFormDefault="qualified" > <xsd:element name="root"> <xsd:complexType> <xsd:sequence> <xsd:element ref="Head" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="Head" type="Type"/> <xsd:complexType name="Type" block="restriction"/> <xsd:complexType name="derivedFromType"> <xsd:complexContent> <xsd:restriction base="Type"/> </xsd:complexContent> </xsd:complexType> <xsd:element name="Member1" type="derivedFromType" substitutionGroup="Head"/> </xsd:schema> ========================================== according to the test suite and some schema validators it is correct. However I stumble about http://www.w3.org/TR/xmlschema11-1/#e-props-correct 4) that defines For each member M of E.{substitution group affiliations}, E.{type definition} is ·validly substitutable· for M.{type definition}, subject to the blocking keywords in M.{substitution group exclusions}. So when checking element Member1, derivedFromType must be validly substitutable for Type, subject to the blocking keywords (empty set in this case) When checking ·validly substitutable·, the first case (both are complex types) is used, which means: derivedFromType is validly derived from Type subject to the blocking keywords in the union of {empty set} and {restriction}, as defined in Type Derivation OK (Complex) (§3.4.6.5) Now when testing Type Derivation Ok (Complex) all rules from http://www.w3.org/TR/xmlschema11-1/#cos-ct-derived-ok must be true, however the first fails, as derivedFromType and Type are not the same type but 'restriction' _is_ part of the constraint set. Where is my error in reasoning? Any help is appreciated. Ciao, Tobias
Attachments
- image/gif attachment: graycol.gif
- image/gif attachment: pic16317.gif
- image/gif attachment: ecblank.gif
Received on Wednesday, 7 January 2009 14:36:54 UTC