XPointer Implementations

The XPointer specification entered CR status 2000-06-07, then had a second CR 2001-09-11. During the second CR phase, several implementations were identified. Few, however, implemented the whole XPointer specification. Points and Ranges, the principal extensions beyond XPath, were rarely implemented. In early January of 2002, when it became clear that the XPointer specification would not move to PR, the XML Linking Working Group revisted the specification and began to factor it into separate documents:

  1. XPointer Framework, which provides for barenames (now known as 'shorthand pointers') and establishes the schemes framework for extensibility.
  2. XPointer element() Scheme, which provides a combination of bare name and child sequence addressing in order to locate elements in XML documents (but not any other structure such as attributes, points, or ranges).
  3. XPointer xmlns() Scheme, which provides a means for binding namespace prefixes used in XPointers to namespace names, even if the XPointer itself is not carried in an XML document.
  4. XPointer xpointer() Scheme, which provided the more advanced, and rarely implemented, capabilities for identifying ranges, points, attributes, etc.

This document discusses the implementation status of the first three specifications, which were issued as Last Call Working Drafts on July 10, 2002.

Citations of XPointer

The documents below cite the new framework draft, the CR specification in a way that conforms to the new drafts, or normatively specify behavior that conforms to the new Framework draft.
Synchronized Multimedia Integration Language (SMIL 2.0) W3C Recommendation 07 August 2001
SMIL 2.0 allows, but does not require, general XPointers. However, it does use barename identifiers in the same manner as the XPointer Framework.
Scalable Vector Graphics (SVG) 1.0 SpecificationW3C Recommendation 04 September 2001
SVG uses barename identifiers. It also defines its own scheme, svgView().
XML-Signature Syntax and Processing W3C Recommendation 12 February 2002
XML Signatures makes use of barename addressing, and recommends that applications support predefined fragments in the xpointer() scheme.
XML Inclusions (XInclude) Version 1.0 W3C Candidate Recommendation 17 September 2002
Requires support for the framework and element() scheme, and allows support for additional schemes.
The XPointer xpath1() SchemeIETF Internet Draft draft-stlaurent-xpath-frag-00.txt
This Internet Draft proposes a new XPointer scheme, xpath1(). This shows the schemes portion of the framework being picked up and used by people in the XML community who are not part of the Linking WG.

XPointer Software

The table below lists the implementaion reports gathered during the CR period. The implementations in that table are for the more complex CR specification. The columns in the table list particular features of the specification, in order to determin how complete the implementations were.

For the three Last-Call drafts, three columns are of particular interest. The "Bare names" column indicates if the implementation will likely support the Framework spec. The "Child sequences" column indicates if the implementation will support the elements() scheme. (Note, however, that the implementations would have to be modified slightly to detect the occurance of the 'element' scheme name, which was not used in the CR draft.) The third column of particular interest is 'Namespace support', which is relevant to the xmlns() scheme.

XPointer Implementations
Name Bare names Child sequences id() function Full XPath range-to string-range Namespace support


In GUI multiple non-contiguous ranges
XLip (Fujitsu) yes yes yes yes yes yes yes yes yes - sample demo app yes
X2X (Empolis) yes yes yes no no partial no no N/A N/A

libxml (Gnome)

yes yes yes yes yes yes yes yes no not at UI
Amaya (W3C) yes no yes no partial partial partial yes yes no

(FourThought LLC/Python)

yes yes yes yes no no yes yes no not at UI

(Gavin Nicol)

no no no no partial yes yes yes no yes

Implementation Plans

Vendors in the XML Linking Working Group were polled during a recent teleconference (Member-only link) about their current and planned support for the three specifications. Their statements were:

Plans to build XInclude processor including framework and element() scheme support.
Currently implementing all three specifications for product. Beta release scheduled for January 2003.
Netscape has already implemented the FIXPTR proposal, but needs to update it to support the new syntax for the element() scheme name.
Currently supports all features from last CR. Only element() syntax of child sequences not currently supported. Currently working to support all features.
The implementation from Univ. Bologna will also need similar modifications.

Ron Daniel Jr., 2002-11-07