- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Thu, 29 Aug 2002 09:39:03 +0100
- To: "Dare Obasanjo" <dareo@microsoft.com>
- CC: "Stefan Wachter" <Stefan.Wachter@gmx.de>, xmlschema-dev@w3.org, www-xml-schema-comments@w3.org
Hi Dare, > However although provisions are made to prevent use="required" and > the default value being present in the attribute declaration from > occuring[1] no similar provision is made for use="required" and the > fixed value being set. It is my opinion that this is likely an > oversight and clarification from the W3C XML Schema working group is > needed. > > In writing the disputed conformance test we were of the opinion that > since fixed modifies the PSVI and inserts an attribute information > item where there was none before then having use="required" is > redundant and a NO-OP. I disagree. In "Schema Information Set Contribution: Attribute Default Value" [1] it says: For each attribute use in the {attribute uses} whose {required} is false and whose {value constraint} is not ·absent· but whose {attribute declaration} does not match one of the attribute information items in the element information item's [attributes] as per clause 3.1 of Element Locally Valid (Complex Type) (§3.4.4) above, the post-schema-validation infoset has an attribute information item whose properties are as below added to the [attributes] of the element information item. Two things here: 1. a default or fixed attribute is only added to the PSVI if its *required is false* and it is missing 2. it gets added to the PSVI, not to the original infoset the validity of which is being assessed So a fixed attribute will only modify the PSVI if it isn't required -- it won't get added if it is required, and therefore having use="required" is not a NO-OP. Plus it would get added to the *PSVI* anyway, which means it has no effect on the schema validity assessment, which occurs on the original infoset, not the PSVI. Therefore if I have a schema that declares: <xs:element name="doc"> <xs:complexType> <xs:attribute name="version" type="xs:token" fixed="1.0" use="required" /> </xs:complexType> </xs:element> then the only valid doc element is: <doc version="1.0" /> Both following doc elements are invalid: <doc version="2.0" /> <doc /> the first because the version attribute does not have the fixed value and the second because the version attribute is missing; the version attribute is not added to the PSVI (since it's required), but even if it were, it's the original infoset that's being assessed at this point, and that lacks a version attribute, which is required, and it's therefore invalid. Cheers, Jeni [1] http://www.w3.org/TR/xmlschema-1/#sic-attrDefault --- Jeni Tennison http://www.jenitennison.com/
Received on Thursday, 29 August 2002 04:39:05 UTC