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 to be processed if present. It is not necessarily a fatal error.
Since XPointers only apply to XML documents, they may only be used when parse="xml ". It is a fatal error if an xi:include element has an xpointer attribute and parse="text ".