- From: Hugh Wallis <xmlschema@standarddimensions.com>
- Date: Mon, 19 Jun 2006 11:37:56 -0400
- To: <xmlschema-dev@w3.org>
- Message-ID: <00ab01c693b6$56e1b000$0202fea9@HUGH>
For whatever reason, some W3C WGs, as well as possibly other standards setting organisations, do not provide normative schemas for their specifications but, instead, simply define things that belong to a certain namespace in text. In some cases non-normative schemas are provided but in others no schemas are provided at all. This leaves those trying to implement those standards with the task of creating their own schemas, particularly in the case where no schemas are provided at all by the authors of the specification/owners of the namespace in question. I would like to share an example of this and the consequences of so doing with this group so as to gain input on a) best practice and b) anything even more rigorous than "best practice" that might apply when faced with this situation. Specifically the questions I seek input on are as follows: 1) Should implementers of specifications that do not provide normative schemas for the namespaces they define confine themselves rigorously to those things that are explicitly defined by the specification in question 2) Should specification authors provide NORMATIVE schemas for any namespaces that their specifications define so as to avoid any possibility of incompatible/non-interoperable implementations resulting. To provide detailed background for this discussion lets take a specific example - the case of the W3C XML Linking Language (XLink) 1.0 specification - see http://www.w3.org/TR/xlink/ This specification defines the namespace http://www.w3.org/1999/xlink - see http://www.w3.org/TR/xlink/#att-method and in doing so states "XLink's namespace provides global attributes for use on elements that are in any arbitrary namespace. The global attributes are type, href, role, arcrole, title, show, actuate, label, from, and to." There is nothing in the specification that defines anything else as belonging to this namespace. Now, as users have attempted to implement this standard they have taken various approaches. Let us look at a couple. XBRL (www.xbrl.org) has defined a schema as follows (a non-normative version is available at http://www.xbrl.org/2003/xlink-2003-12-31.xsd ): xlink-2003-12-31.xsd (normative) <?xml version="1.0" encoding="UTF-8"?> <!-- (c) XBRL International. See www.xbrl.org/legal --> <schema targetNamespace="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified"> <annotation> <documentation> XLink attribute specification </documentation> </annotation> <simpleType name="nonEmptyURI"> <annotation> <documentation> A URI type with a minimum length of 1 character. Used on role and arcrole and href elements. </documentation> </annotation> <restriction base="anyURI"> <minLength value="1"/> </restriction> </simpleType> <simpleType name="typeEnum"> <annotation> <documentation> Enumeration of values for the type attribute </documentation> </annotation> <restriction base="string"> <enumeration value="simple"/> <enumeration value="extended"/> <enumeration value="locator"/> <enumeration value="arc"/> <enumeration value="resource"/> <enumeration value="title"/> </restriction> </simpleType> <attributeGroup name="simpleType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="simple"/> </restriction> </simpleType> </attribute> </attributeGroup> <attributeGroup name="extendedType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="extended"/> </restriction> </simpleType> </attribute> </attributeGroup> <attributeGroup name="locatorType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="locator"/> </restriction> </simpleType> </attribute> </attributeGroup> <attributeGroup name="arcType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="arc"/> </restriction> </simpleType> </attribute> </attributeGroup> <attributeGroup name="resourceType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="resource"/> </restriction> </simpleType> </attribute> </attributeGroup> <attributeGroup name="titleType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="title"/> </restriction> </simpleType> </attribute> </attributeGroup> <simpleType name="showEnum"> <annotation> <documentation> Enumeration of values for the show attribute </documentation> </annotation> <restriction base="string"> <enumeration value="new"/> <enumeration value="replace"/> <enumeration value="embed"/> <enumeration value="other"/> <enumeration value="none"/> </restriction> </simpleType> <simpleType name="actuateEnum"> <annotation> <documentation> Enumeration of values for the actuate attribute </documentation> </annotation> <restriction base="string"> <enumeration value="onLoad"/> <enumeration value="onRequest"/> <enumeration value="other"/> <enumeration value="none"/> </restriction> </simpleType> <attribute name="type" type="xlink:typeEnum"/> <attribute name="role" type="xlink:nonEmptyURI"/> <attribute name="arcrole" type="xlink:nonEmptyURI"/> <attribute name="title" type="string"/> <attribute name="show" type="xlink:showEnum"/> <attribute name="actuate" type="xlink:actuateEnum"/> <attribute name="label" type="NCName"/> <attribute name="from" type="NCName"/> <attribute name="to" type="NCName"/> <attribute name="href" type="anyURI"/> </schema> and this is complemented by a schema in an xbrl owned namespace as follows (non-normative version is available at http://www.xbrl.org/2003/xl-2003-12-31.xsd ): xl-2003-12-31.xsd (normative) <?xml version="1.0" encoding="UTF-8"?> <!-- (c) XBRL International. See www.xbrl.org/legal --> <schema targetNamespace="http://www.xbrl.org/2003/XLink" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xl="http://www.xbrl.org/2003/XLink" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink-2003-12-31.xsd"/> <complexType name="documentationType"> <annotation> <documentation> Element type to use for documentation of extended links and linkbases. </documentation> </annotation> <simpleContent> <extension base="string"> <anyAttribute namespace="##other" processContents="lax"/> </extension> </simpleContent> </complexType> <element name="documentation" type="xl:documentationType" abstract="true"> <annotation> <documentation> Abstract element to use for documentation of extended links and linkbases. </documentation> </annotation> </element> <annotation> <documentation> XBRL simple and extended link schema constructs </documentation> </annotation> <complexType name="titleType"> <annotation> <documentation> Type for the abstract title element - used as a title element template. </documentation> </annotation> <complexContent> <restriction base="anyType"> <attributeGroup ref="xlink:titleType"/> </restriction> </complexContent> </complexType> <element name="title" type="xl:titleType" abstract="true"> <annotation> <documentation> Generic title element for use in extended link documentation. Used on extended links, arcs, locators. See http://www.w3.org/TR/xlink/#title-element for details. </documentation> </annotation> </element> <complexType name="locatorType"> <annotation> <documentation> Generic locator type. </documentation> </annotation> <complexContent> <restriction base="anyType"> <sequence> <element ref="xl:title" minOccurs="0" maxOccurs="unbounded" /> </sequence> <attributeGroup ref="xlink:locatorType"/> <attribute ref="xlink:href" use="required" /> <attribute ref="xlink:label" use="required" /> <attribute ref="xlink:role" use="optional" /> <attribute ref="xlink:title" use="optional" /> </restriction> </complexContent> </complexType> <element name="locator" type="xl:locatorType" abstract="true"> <annotation> <documentation> Abstract locator element to be used as head of locator substitution group for all extended link locators in XBRL. </documentation> </annotation> </element> <simpleType name="useEnum"> <annotation> <documentation> Enumerated values for the use attribute on extended link arcs. </documentation> </annotation> <restriction base="NMTOKEN"> <enumeration value="optional" /> <enumeration value="prohibited" /> </restriction> </simpleType> <complexType name="arcType"> <annotation> <documentation> basic extended link arc type - extended where necessary for specific arcs Extends the generic arc type by adding use, priority and order attributes. </documentation> </annotation> <complexContent> <restriction base="anyType"> <sequence> <element ref="xl:title" minOccurs="0" maxOccurs="unbounded" /> </sequence> <attributeGroup ref="xlink:arcType"/> <attribute ref="xlink:from" use="required" /> <attribute ref="xlink:to" use="required" /> <attribute ref="xlink:arcrole" use="required" /> <attribute ref="xlink:title" use="optional" /> <attribute ref="xlink:show" use="optional" /> <attribute ref="xlink:actuate" use="optional" /> <attribute name="order" type="decimal" use="optional" /> <attribute name="use" type="xl:useEnum" use="optional" /> <attribute name="priority" type="integer" use="optional" /> <anyAttribute namespace="##other" processContents="lax" /> </restriction> </complexContent> </complexType> <element name="arc" type="xl:arcType" abstract="true"> <annotation> <documentation> Abstract element to use as head of arc element substitution group. </documentation> </annotation> </element> <complexType name="resourceType"> <annotation> <documentation> Generic type for the resource type element </documentation> </annotation> <complexContent mixed="true"> <restriction base="anyType"> <attributeGroup ref="xlink:resourceType"/> <attribute ref="xlink:label" use="required" /> <attribute ref="xlink:role" use="optional" /> <attribute ref="xlink:title" use="optional" /> <attribute name="id" type="ID" use="optional" /> </restriction> </complexContent> </complexType> <element name="resource" type="xl:resourceType" abstract="true"> <annotation> <documentation> Abstract element to use as head of resource element substitution group. </documentation> </annotation> </element> <complexType name="extendedType"> <annotation> <documentation> Generic extended link type </documentation> </annotation> <complexContent> <restriction base="anyType"> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="xl:title" /> <element ref="xl:documentation" /> <element ref="xl:locator" /> <element ref="xl:arc" /> <element ref="xl:resource" /> </choice> <attributeGroup ref="xlink:extendedType"/> <attribute ref="xlink:role" use="required" /> <attribute ref="xlink:title" use="optional" /> <attribute name="id" type="ID" use="optional" /> <anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/> </restriction> </complexContent> </complexType> <element name="extended" type="xl:extendedType" abstract="true"> <annotation> <documentation> Abstract extended link element at head of extended link substitution group. </documentation> </annotation> </element> <complexType name="simpleType"> <annotation> <documentation> Type for the simple links defined in XBRL </documentation> </annotation> <complexContent> <restriction base="anyType"> <attributeGroup ref="xlink:simpleType"/> <attribute ref="xlink:href" use="required" /> <attribute ref="xlink:arcrole" use="optional" /> <attribute ref="xlink:role" use="optional" /> <attribute ref="xlink:title" use="optional" /> <attribute ref="xlink:show" use="optional" /> <attribute ref="xlink:actuate" use="optional" /> <anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/> </restriction> </complexContent> </complexType> <element name="simple" type="xl:simpleType" abstract="true"> <annotation> <documentation> The abstract element at the head of the simple link substitution group. </documentation> </annotation> </element> </schema> These schemas do work nicely together and a few years of implementation experience of the XBRL 2.1 Specification has shown them to be functional. However, it is worth noting that there are things defined in the http://www.w3.org/1999/xlink namespace that are nowhere mentioned in the defining specification. Notably a set of global type declarations and some attribute groups. Now let us look at a schema produced by another standards body, the OASIS CIQ Technical Committee (http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ciq). In the latest draft version of this specification, available from http://tinyurl.com/qkcsb the http://www.w3.org/1999/xlink namespace has been implemented as follows: <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2005 rel. 3 U ( <http://www.altova.com> http://www.altova.com) by Ram Kumar --> <!--This schema is a definition of xLink attributes that can be used for linking and referencing Parties, Party Names and Addresses.--> <!--See <http://www.w3.org/XML/Linking> http://www.w3.org/XML/Linking for more information on xLink--> <!--Copyright 2005 OASIS CIQ TC--> <xsd:schema xmlns:xsd=" <http://www.w3.org/2001/XMLSchema> http://www.w3.org/2001/XMLSchema" xmlns:xlink=" <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink" targetNamespace=" <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink" elementFormDefault="qualified" attributeFormDefault="qualified"> <xsd:annotation> <xsd:documentation> Specification Name: OASIS CIQ TC - xLink Description: Defines the W3C schema for establishing links between entities Produced by: OASIS Customer Information Quality Technical Committee Version: 3.0 Status: Public Review Draft Copyright: W3C/OASIS Last Modified: 05 April 2006 Last Modified by: Ram Kumar NOTE: Do not modify this schema as it will break specifications compatibility </xsd:documentation> </xsd:annotation> <xsd:attributeGroup name="grLocator"> <xsd:annotation> <xsd:documentation>Defines a set of attributes for an element of type LOCATOR</xsd:documentation> </xsd:annotation> <xsd:attribute name="type" fixed="locator"> <xsd:annotation> <xsd:documentation>Indicates this a xLink 'locator' element</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="href" type="xsd:anyURI"> <xsd:annotation> <xsd:documentation>Identifies the remote resource or its location. E.g. a full URL to the resource or a #some_id for local resources with xml:id attribute.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:attributeGroup> <xsd:attributeGroup name="grResource"> <xsd:annotation> <xsd:documentation>Defines a set of attributes for an element of type RESOURCE</xsd:documentation> </xsd:annotation> <xsd:attribute name="type" fixed="resource"> <xsd:annotation> <xsd:documentation>Indicates this a xLink 'resource' element</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="label" type="xsd:NMTOKEN"> <xsd:annotation> <xsd:documentation>An identifier of an element of type 'resource' or 'locator'. The identifier is used by xlink:from and xlink:to</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:attributeGroup> <xsd:attributeGroup name="grLocatorOrResource"> <xsd:annotation> <xsd:documentation>Defines a set of attributes for an element of type LOCATOR (href is required) or RESOURCE (href is ignored)</xsd:documentation> </xsd:annotation> <xsd:attribute name="type"> <xsd:annotation> <xsd:documentation>Indicates the type of the element for linking purposes as per the enumeration.</xsd:documentation> </xsd:annotation> <xsd:simpleType> <xsd:restriction base="xsd:NMTOKEN"> <xsd:enumeration value="locator"/> <xsd:enumeration value="resource"/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> <xsd:attribute name="label" type="xsd:NMTOKEN"> <xsd:annotation> <xsd:documentation>An identifier of an element of type 'resource' or 'locator'. The identifier is used by xlink:from and xlink:to</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="href" type="xsd:anyURI"> <xsd:annotation> <xsd:documentation>Identifies the remote resource or its location. E.g. a full URL to the resource or a #some_id for local resources with xml:id attribute.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:attributeGroup> <xsd:attributeGroup name="grArc"> <xsd:annotation> <xsd:documentation>Defines a set of attributes for an element of type ARC</xsd:documentation> </xsd:annotation> <xsd:attribute name="type" fixed="arc"> <xsd:annotation> <xsd:documentation>Indicates this is a xLink 'arc' element</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="arcrole" type="xsd:anyURI"> <xsd:annotation> <xsd:documentation>Identifies the relationship type between elements referenced by FROM and TO.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="from" type="xsd:NMTOKEN"> <xsd:annotation> <xsd:documentation>Points at an element of xlink:type='resource' or 'locator' from any namespace within the same addressable XML where xlink:label has a matching value</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="to" type="xsd:NMTOKEN"> <xsd:annotation> <xsd:documentation>Points at an element of xlink:type='resource' or 'locator' from any namespace within the same addressable XML where xlink:label has a matching value</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="title" type="xsd:string"> <xsd:annotation> <xsd:documentation>A human-readable description of the relationship</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:attributeGroup> </xsd:schema> Here we have a DIFFERENT set of attribute groups that have been added to this namespace such as grResource, grLocatororResource. Not only that but the definitions <xsd:attribute name="to" type="xsd:NMTOKEN">, <xsd:attribute name="from" type="xsd:NMTOKEN"> and <xsd:attribute name="label" type="xsd:NMTOKEN"> use NMTOKEN for these traversal attributes whereas these are defined in the text at http://www.w3.org/TR/xlink/#traversal-atts as being NCName. When we come to use these two systems together we encounter a namespace clash given the differeing implementations and the additions made independently to the namespace. So - if we were to reorganise the XBRL schemas as follows: <?xml version="1.0" encoding="UTF-8"?> <!-- (c) XBRL International. See <http://www.xbrl.org/legal> www.xbrl.org/legal This is a test of a minimal implementation of the <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink namespace This is not an official XBRL International schema --> <schema targetNamespace=" <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink" xmlns:xlink=" <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink" xmlns=" <http://www.w3.org/2001/XMLSchema> http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="qualified"> <annotation> <documentation> XLink attribute specification </documentation> </annotation> <attribute name="type"> <simpleType> <annotation> <documentation> Enumeration of values for the type attribute </documentation> </annotation> <restriction base="string"> <enumeration value="simple"/> <enumeration value="extended"/> <enumeration value="locator"/> <enumeration value="arc"/> <enumeration value="resource"/> <enumeration value="title"/> </restriction> </simpleType> </attribute> <attribute name="role"> <simpleType> <annotation> <documentation> A URI with a minimum length of 1 character. </documentation> </annotation> <restriction base="anyURI"> <minLength value="1"/> </restriction> </simpleType> </attribute> <attribute name="arcrole"> <simpleType> <annotation> <documentation> A URI with a minimum length of 1 character. </documentation> </annotation> <restriction base="anyURI"> <minLength value="1"/> </restriction> </simpleType> </attribute> <attribute name="title" type="string"/> <attribute name="show"> <simpleType> <annotation> <documentation> Enumeration of values for the show attribute </documentation> </annotation> <restriction base="string"> <enumeration value="new"/> <enumeration value="replace"/> <enumeration value="embed"/> <enumeration value="other"/> <enumeration value="none"/> </restriction> </simpleType> </attribute> <attribute name="actuate"> <simpleType> <annotation> <documentation> Enumeration of values for the actuate attribute </documentation> </annotation> <restriction base="string"> <enumeration value="onLoad"/> <enumeration value="onRequest"/> <enumeration value="other"/> <enumeration value="none"/> </restriction> </simpleType> </attribute> <attribute name="label" type="NCName"/> <attribute name="from" type="NCName"/> <attribute name="to" type="NCName"/> <attribute name="href" type="anyURI"/> </schema> and <?xml version="1.0" encoding="UTF-8"?> <!-- (c) XBRL International. See <http://www.xbrl.org/legal> www.xbrl.org/legal This is a test of implementing the <http://www.xbrl.org/2003/XLink> http://www.xbrl.org/2003/XLink namespace using only a minimal implementation of the <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink namespace which restricts itself to defining the attributes specified in the XLink 1.0 specification This is not an official XBRL International schema --> <schema targetNamespace=" <http://www.xbrl.org/2003/XLink> http://www.xbrl.org/2003/XLink" xmlns:xlink=" <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink" xmlns:xl=" <http://www.xbrl.org/2003/XLink> http://www.xbrl.org/2003/XLink" xmlns=" <http://www.w3.org/2001/XMLSchema> http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <import namespace=" <http://www.w3.org/1999/xlink> http://www.w3.org/1999/xlink" schemaLocation="xlink-2003-12-31-revised.xsd"/> <complexType name="documentationType"> <annotation> <documentation> Element type to use for documentation of extended links and linkbases. </documentation> </annotation> <simpleContent> <extension base="string"> <anyAttribute namespace="##other" processContents="lax"/> </extension> </simpleContent> </complexType> <element name="documentation" type="xl:documentationType" abstract="true"> <annotation> <documentation> Abstract element to use for documentation of extended links and linkbases. </documentation> </annotation> </element> <annotation> <documentation> XBRL simple and extended link schema constructs </documentation> </annotation> <complexType name="titleType"> <annotation> <documentation> Type for the abstract title element - used as a title element template. </documentation> </annotation> <complexContent> <restriction base="anyType"> <attribute ref="xlink:type" use="required" fixed="title"/> </restriction> </complexContent> </complexType> <element name="title" type="xl:titleType" abstract="true"> <annotation> <documentation> Generic title element for use in extended link documentation. Used on extended links, arcs, locators. See <http://www.w3.org/TR/xlink/#title-element> http://www.w3.org/TR/xlink/#title-element for details. </documentation> </annotation> </element> <complexType name="locatorType"> <annotation> <documentation> Generic locator type. </documentation> </annotation> <complexContent> <restriction base="anyType"> <sequence> <element ref="xl:title" minOccurs="0" maxOccurs="unbounded" /> </sequence> <attribute ref="xlink:type" use="required" fixed="locator"/> <attribute ref="xlink:href" use="required" /> <attribute ref="xlink:label" use="required" /> <attribute ref="xlink:role" use="optional" /> <attribute ref="xlink:title" use="optional" /> </restriction> </complexContent> </complexType> <element name="locator" type="xl:locatorType" abstract="true"> <annotation> <documentation> Abstract locator element to be used as head of locator substitution group for all extended link locators in XBRL. </documentation> </annotation> </element> <simpleType name="useEnum"> <annotation> <documentation> Enumerated values for the use attribute on extended link arcs. </documentation> </annotation> <restriction base="NMTOKEN"> <enumeration value="optional" /> <enumeration value="prohibited" /> </restriction> </simpleType> <complexType name="arcType"> <annotation> <documentation> basic extended link arc type - extended where necessary for specific arcs Extends the generic arc type by adding use, priority and order attributes. </documentation> </annotation> <complexContent> <restriction base="anyType"> <sequence> <element ref="xl:title" minOccurs="0" maxOccurs="unbounded" /> </sequence> <attribute ref="xlink:type" use="required" fixed="arc"/> <attribute ref="xlink:from" use="required" /> <attribute ref="xlink:to" use="required" /> <attribute ref="xlink:arcrole" use="required" /> <attribute ref="xlink:title" use="optional" /> <attribute ref="xlink:show" use="optional" /> <attribute ref="xlink:actuate" use="optional" /> <attribute name="order" type="decimal" use="optional" /> <attribute name="use" type="xl:useEnum" use="optional" /> <attribute name="priority" type="integer" use="optional" /> <anyAttribute namespace="##other" processContents="lax" /> </restriction> </complexContent> </complexType> <element name="arc" type="xl:arcType" abstract="true"> <annotation> <documentation> Abstract element to use as head of arc element substitution group. </documentation> </annotation> </element> <complexType name="resourceType"> <annotation> <documentation> Generic type for the resource type element </documentation> </annotation> <complexContent mixed="true"> <restriction base="anyType"> <attribute ref="xlink:type" use="required" fixed="resource"/> <attribute ref="xlink:label" use="required" /> <attribute ref="xlink:role" use="optional" /> <attribute ref="xlink:title" use="optional" /> <attribute name="id" type="ID" use="optional" /> </restriction> </complexContent> </complexType> <element name="resource" type="xl:resourceType" abstract="true"> <annotation> <documentation> Abstract element to use as head of resource element substitution group. </documentation> </annotation> </element> <complexType name="extendedType"> <annotation> <documentation> Generic extended link type </documentation> </annotation> <complexContent> <restriction base="anyType"> <choice minOccurs="0" maxOccurs="unbounded"> <element ref="xl:title" /> <element ref="xl:documentation" /> <element ref="xl:locator" /> <element ref="xl:arc" /> <element ref="xl:resource" /> </choice> <attribute ref="xlink:type" use="required" fixed="extended"/> <attribute ref="xlink:role" use="required" /> <attribute ref="xlink:title" use="optional" /> <attribute name="id" type="ID" use="optional" /> <anyAttribute namespace=" <http://www.w3.org/XML/1998/namespace> http://www.w3.org/XML/1998/namespace" processContents="lax"/> </restriction> </complexContent> </complexType> <element name="extended" type="xl:extendedType" abstract="true"> <annotation> <documentation> Abstract extended link element at head of extended link substitution group. </documentation> </annotation> </element> <complexType name="simpleType"> <annotation> <documentation> Type for the simple links defined in XBRL </documentation> </annotation> <complexContent> <restriction base="anyType"> <attribute ref="xlink:type" use="required" fixed="simple"/> <attribute ref="xlink:href" use="required" /> <attribute ref="xlink:arcrole" use="optional" /> <attribute ref="xlink:role" use="optional" /> <attribute ref="xlink:title" use="optional" /> <attribute ref="xlink:show" use="optional" /> <attribute ref="xlink:actuate" use="optional" /> <anyAttribute namespace=" <http://www.w3.org/XML/1998/namespace> http://www.w3.org/XML/1998/namespace" processContents="lax"/> </restriction> </complexContent> </complexType> <element name="simple" type="xl:simpleType" abstract="true"> <annotation> <documentation> The abstract element at the head of the simple link substitution group. </documentation> </annotation> </element> </schema> Then we have created a schema for the http://www.w3.org/1999/xlink that confines itself to those things specified in the relevant specification, thus avoiding any incompatibility problems IF others do the same. Of course, if the WG had made this a normative schema in the first place we wouldn't be having this issue. As just one more point on this - the XLinking WG has been working on version 1.1 of the specification and in this they have created a non-normative schema which seems to be a step in the right direction. Comments posted by David vun Kannon at http://lists.w3.org/Archives/Public/www-xml-linking-comments/2006AprJun/0002 .html (pointing out that they have made the same mistake as the CIQ folks in respect of the NMTOKEN vs. NCName for traversal attributes) and myself at http://lists.w3.org/Archives/Public/www-xml-linking-comments/2006AprJun/0007 .html raising the interoperability question vis à vis normative schemas have received no response and so I am bringing the issue to a wider audience of the XML cognoscenti to seek broader input. Thanks for your time and apologies for the length of this e-mail. Hugh Wallis
Received on Monday, 19 June 2006 15:38:53 UTC