- From: <bugzilla@farnsworth.w3.org>
- Date: Fri, 02 May 2008 16:55:02 +0000
- To: www-xml-schema-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5674
Summary: substitution groups for attributes
Product: XML Schema
Version: unspecified
Platform: PC
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: Structures: XSD Part 1
AssignedTo: cmsmcq@w3.org
ReportedBy: pmarinel@cs.unibo.it
QAContact: www-xml-schema-comments@w3.org
Dear all,
one of the most interesting and powerful feature of XSDL (both 1.0 and 1.1)
is represented by substitution groups. Unfortunately, substitution groups apply
to element only, and not to attributes.
Extending substitution groups to attributes would allow, e.g., to write
complete "localized" form of XML vocabularies, as suggested by the example
below, and as discussed in [1].
<!--================================-->
<!-- ABSTRACT VOCABULARY DEFINITION -->
<!--================================-->
<xs:element name="abstractPerson" type="abstractPersonType" abstract="true" />
<xs:complexType name="abstractPersonType" abstract="true">
<xs:sequence>
...
</xs:sequence>
<xs:attribute ref="abstractTitle" />
</xs:complexType>
<xs:attribute name="abstractTitle" type="abstractTitleType" abstract="true" />
<xs:simpleType name="abstractTitleType">
<xs:restriction base="xs:token" />
</xs:simpleType>
<!--===============================-->
<!-- ENGLISH VOCABULARY DEFINITION -->
<!--===============================-->
<!-- inlcude the abstract vocabulary definition -->
<xs:element name="person" type="personType" substitutionGroup="abstractPerson"
/>
<xs:complexType name="personType">
<xs:complexContent>
<xs:restriction base="abstractPersonType">
<xs:sequence>
...
</xs:sequence>
<xs:attribute ref="title" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:attribute name="title" type="titleType" substitutionGroup="abstractTitle"
/>
<xs:simpleType name="titleType">
<xs:restriction base="abstractTitleType">
<xs:enumeration value="Mr" />
<xs:enumeration value="Mrs" />
<xs:enumeration value="Dr" />
</xs:restriction>
</xs:simpleType>
<!--===============================-->
<!-- ITALIAN VOCABULARY DEFINITION -->
<!--===============================-->
<!-- inlcude the abstract vocabulary definition -->
<xs:element name="persona" type="personaType"
substitutionGroup="abstractPerson" />
<xs:complexType name="personaType">
<xs:complexContent>
<xs:restriction base="abstractPersonType">
<xs:sequence>
...
</xs:sequence>
<xs:attribute ref="titolo" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:attribute name="titolo" type="titoloType" substitutionGroup="abstractTitle"
/>
<xs:simpleType name="titoloType">
<xs:restriction base="abstractTitleType">
<xs:enumeration value="Sig" />
<xs:enumeration value="Sig.ra" />
<xs:enumeration value="Dott" />
<xs:enumeration value="Dott.ssa" />
</xs:restriction>
</xs:simpleType>
Without substitution groups for attributes, a complete translation of the
abstract vocabulary above would not be possible, as title is declared as
attribute.
Do the WG members think it is a valuable feature? If so, is it reasonable to
add support for such feature directly in version 1.1 of XSDL?
Thank you
Regards,
Paolo Marinelli
[1] http://lists.w3.org/Archives/Member/w3c-xml-schema-ig/2008Apr/0004.html
(member-only link)
Received on Friday, 2 May 2008 16:55:42 UTC