XPointers

For various obscure architectural reasons, the URLs used in XPointer href attributes must not have fragment identifiers. Indeed, it is a fatal error if one does, in which case the XInclude processor will simply throw up its hands and give up. Instead, each xi:include element may have an xpointer attribute. This attribute contains an XPointer indicating what part of the document referenced by the href attribute should be included. For example, this xi:include element loads today’s news from Cafe con Leche (which is delimited by a today element in the http://www.w3.org/1999/xhtml namespace), but not the rest of the page:

<xi:include href="http://www.cafeconleche.org/" 
    xpointer="xmlns(pre=http://www.w3.org/1999/xhtml) 
    xpointer(//pre:today)"/>

You could also use the element( ) scheme:

<xi:include href="http://www.cafeconleche.org/" 
            xpointer="element(/1/2/4/1/1/4)"/>

If the href attribute is absent, then the XPointer refers to the current document.

XInclude processors are not required to support all XPointer schemes. In particular, they are not required to support the xpointer( ) or xmlns( ) schemes, although some processors, notably libxml2, do support it. All processors are required to support the element( ) scheme as well as bare-name XPointers, although in practice some implementations, especially those based on streaming APIs like SAX, do not support XPointers at all.

A syntax error in the XPointer is a resource error, which will cause the xi:fallback child element ...

Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.