- From: <bugzilla@jessica.w3.org>
- Date: Tue, 14 Feb 2017 23:46:18 +0000
- To: www-xml-schema-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=30063
Bug ID: 30063
Summary: XSD treatment of Explicit Defaults
Product: XML Schema
Version: 1.0/1.1 both
Hardware: PC
OS: Windows NT
Status: NEW
Severity: normal
Priority: P2
Component: Structures: XSD Part 1
Assignee: David_E3@VERIFONE.com
Reporter: bugzilla_w3.claytond@spamgourmet.com
QA Contact: www-xml-schema-comments@w3.org
CC: cmsmcq@blackmesatech.com
Target Milestone: ---
The specification file at https://www.w3.org/2009/XMLSchema/XMLSchema.xsd has
the following definition for a localElement:
```
<xs:complexType name="localElement">
<xs:complexContent>
<xs:restriction base="xs:element">
<xs:sequence>
<xs:element ref="xs:annotation" minOccurs="0"/>
<xs:choice minOccurs="0">
<xs:element name="simpleType" type="xs:localSimpleType"/>
<xs:element name="complexType" type="xs:localComplexType"/>
</xs:choice>
<xs:element name="alternative" type="xs:altType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:group ref="xs:identityConstraint" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="substitutionGroup" use="prohibited"/>
<xs:attribute name="final" use="prohibited"/>
<xs:attribute name="abstract" use="prohibited"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
```
I'd like to draw your attention, in particular, to the "abstract" attribute. I
believe the specification is quite clear that:
1. Its default is false: "abstract = boolean : false"
2. The value must be "false" for the validation rules to pass:
```
Validation Rule: Element Locally Valid (Element)
For an element information item E to be locally ·valid· with respect to an
element declaration D all of the following must be true:
1 D is not ·absent· and E and D have the same expanded name.
2 D.{abstract} = false.
...
```
I believe this behavior would be more accurately described using fixed="false".
This would permit a schema to apply the default explicitly without violating
this schema. I assume there are other cases where this applies to values with
defaults.
I ran into this issue because I had some infrastructure that was making default
values explicit (following the specification). This made it easier to
programmatically identify equivalent structures like the following:
<element name="test" abstract="false"/>
<element name="test"/>
I'm less clear on the proper handling of final and substitutionGroup through.
Is the absence of this value logically equivalent to the inclusion of an empty
value (fixed="")?
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Tuesday, 14 February 2017 23:46:25 UTC