http://www.w3.org/Bugs/Public/show_bug.cgi?id=2205
Summary: R-213: Question about attribute wildcards and
restriction
Product: XML Schema
Version: 1.0
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: XSD Part 1: Structures
AssignedTo: ht@w3.org
ReportedBy: sandygao@ca.ibm.com
QAContact: www-xml-schema-comments@w3.org
This is a recap of an possible erratum discussed within the Schema IG.
Because attribute wildcards have a "lazy" behavior, it's possible for an
apparently-valid restriction to violate the general notion of restriction.
By "lazy" I mean the property that an attribute-wildcard will only match an
attribute-information-item (AII) if no other attribute-use matches the AII.
Best demonstrated by example:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="B">
<xs:attribute name="FOO" type="xs:int"/>
<xs:anyAttribute processContents="skip"/>
</xs:complexType>
<xs:complexType name="A">
<xs:complexContent>
<xs:restriction base="B">
<xs:attribute name="FOO" type="xs:int" use="prohibited" />
<xs:anyAttribute processContents="skip" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
I believe this is a valid restriction per the rules of restriction, but not by
the general definition in Section 2, which includes
Members of a type, A, whose definition is a restriction of the definition of
another type, B, are always members of type B as well.
B doesn't accept an element with attribute FOO="abc", but A does accept it.
That's because A doesn't contain an attribute-use for FOO, so the attribute-
wildcard validates FOO in A.
See:
http://lists.w3.org/Archives/Public/www-xml-schema-comments/2003JanMar/0007.html