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.