The W3C XML Core Working Group has released the xml:id Version 1.0 specification as a Candidate Recommendation. The xml:id CR "introduces a predefined attribute name that can always be treated as an ID and hence can always be recognized. It defines the meaning of the attribute xml:id as an ID attribute in XML documents, and defines processing of this attribute to identify IDs in the absence of validation, without fetching external resources, and without relying on an internal subset."
XML has inherited from SGML the notion of a reserved ID attribute type which may be declared for any element (type) as a means of uniquely identifying markup elements in document instances; the scope of an ID is global to a document, and an element in an instance may have only one ID attribute. Linking and addressing in typical XML documents is often based upon the ID and IDREF attribute pairs, but many forms of addressing not prescribed by XML can be used if the XML ID lexical and syntax rules are followed.
Development of the xml:id Version 1.0 specification was motivated by several use cases in which applications should be able to process ID attributes in cases where standard attribute declarations cannot be used. For this purpose, we need a "mechanism allowing unique element identifiers to be recognized by all conformant XML processors, whether they validate or not, in order to make XML sub-resource linking robust."
The xml:id Version 1.0 specification thus "allows authors to identify elements with IDs that can be recognized by any processor without regard to how, or if, any internal or external declarations are available. A guiding principle in the design is that the result of xml:id processing should be the same as if an appropriate declaration has been seen and used by the processor."
The specification encourages authors of XML documents "to name their ID attributes xml:id in order to increase the interoperability of these identifiers on the Web. In namespace-aware XML processors, the xml prefix is bound to a prescribed namespace name as described in the Namespaces in XML and Namespaces in XML 1.1 documents. The xml:id attribute can be still used by non-namespace-aware XML processors," as described in the CR. Implementors likewise "are encouraged to support xml:id processing and to make ID type assignment the default behavior of their processors."
Appendix D on 'Validation Technologies' describes how xml:id processing interacts with DTD Validation, XML Schema Validation, and RELAX NG Validation. A new Appendix E covering 'Attribute Value Normalization on IDs' clarifies that "parsers are required to normalize all attribute values; normalization expands character references, expands entity references, and cleans up line end characters. Attributes of type ID are subject to additional normalization rules: removing leading and trailing whitespace and replacing sequences of spaces with a single space."
Separately, the Working Group has published a xml:id Conformance Test Suites document and companion xml:id Conformance Test Suites Process Document, together with an Implementation Report for xml:id. The Implementation Report as of 2005-02-09 listed six xml:id implementations: the SAX 2 (xml:id) XMLFilter from Norman Walsh, the libxml2 library, RXP version 1.4.4, XOM 1.1, and the Saxon product from Saxonica.
Development of conformance test suites for the xml:id specification represents a joint effort between W3C and NIST (National Institute of Standards and Technology). "NIST agreed to allocate resources to update and maintain the current test suite; the test suites jointly developed by these two parties will take the form of a public framework."
The W3C XML Core Working Group plans to advance the Candidate Recommendation specification to Proposed Recommendation when specified exit criteria have been met. These include the testing of "at least two interoperable implementations of the specification (reporting the same xml:id attributes with the same types for all tests in the test suite) and a minimum of thirty-one days of use to catch and report major errors.
The W3C XML Core Working Group invites feedback on the new working draft; email may be sent to the publicly archived W3C list 'firstname.lastname@example.org'. The Working Group members "expect that sufficient feedback to determine its future will have been received by 10-March-2005."
xml:id Version 1.0. W3C Candidate Recommendation. 8-February-2005. Edited by Jonathan Marsh (Microsoft), Daniel Veillard (Invited Expert), and Norman Walsh (Sun Microsystems). Produced by members of the W3C XML Core Working Group. Version URL: http://www.w3.org/TR/2005/CR-xml-id-20050208/. Latest version URL: http://www.w3.org/TR/xml-id/. Previous version URL: http://www.w3.org/TR/2004/WD-xml-id-20041109/. Also available in non-normative XML format.
Additions and Clarifications in the Candidate Recommendation
Use with RELAX NG Validation: "RELAX NG Grammar authors are encouraged to use xml:id attributes exclusively in their schemas to indicate element identifiers. [An included RELAX NG fragment illustrates a sample declaration for the xml:id attribute.] RELAX NG Grammar authors are encouraged to declare attributes named xml:id with the type xs:ID. A document that uses xml:id attributes that have a declared type other than xs:ID will always generate xml:id errors.,,"
Extensibility: "This specification is not extensible. There are no provisions for application designers to alter the name of the xml:id attribute, the set of attribute values that are considered IDs, the location(s) where they can occur, or make any other extensions."
Added Appendix E Attribute Value Normalization on IDs. This new (non-normative) appendix "gives a longer and more complete discussion of a topic only mentioned in the Last Call draft... Parsers are required to normalize all attribute values. Normalization expands character references, expands entity references, and cleans up line end characters. Attributes of type ID are subject to additional normalization rules: removing leading and trailing whitespace and replacing sequences of spaces with a single space. The xml:id processor has to assure that both kinds of normalization are performed all attributes named xml:id. In particular, the parser may not have performed the additional normalization required for attributes of type ID because the attribute may not be declared or may be declared as an ID... For interoperability, document producers should use fully normalized values that are legal NCNames in xml:id attributes..."
- xml:id Version 1.0 W3C Candidate Recommendation 2005-02-08.
- xml:id Conformance Test Suites. Edited by Sandra I. Martinez, with Henry Thompson (W3C staff contact), Paul Grosso (ArborText, co-chair) and Norman Walsh (Sun Microsostems, co-chair).
- xml:id Conformance Test Suites Process Document. By Sandra I. Martinez (NIST Working Group representative).
- Implementation Report for xml:id
- Mail Archives for W3C list 'email@example.com'. To subscribe, send email to firstname.lastname@example.org with subscribe in the 'Subject: ' line.
- XML Core Working Group Patent Policy Status
- W3C news item
- "W3C Working Draft Proposes Universal Markup Mechanism for Identifers." News story 2004-04-13.
- W3C XML Core Working Group
- W3C XML Activity