An Example with XInclude and XPointer and how to reference them using IDs.
Process the file with:
$ xmllint --xinclude article.xml
The file article.xml
contains different XIncludes and XPointers:
-
xi:include href="author.xml" xpointer="xpointer(element(/1)/*)"/>
This is kind of what we know from SLE. Here it means: Include the "author.xml" file, start with the root element and return all children
-
<xi:include href="author.xml" xpointer="xpointer(id('author')/*)"/>
Includes the file
author.xml
, points to the element with thexml:id
"author" (that would be<author>
, the root element), and return all children. -
xi:include xpointer="xpointer(id('editor')/*)"/>
This is something special: it doesn't have an href attribute! That means, it points to the current document (which is
article.xml
). The XPointer points to the element with thexml:id
"editor" and returns all it's children. -
<xi:include href="intro.xml" xpointer="xmlns(d=http://docbook.org/ns/docbook)xpointer(id('sec.intro')/*[not(self::d:title)])"/>
For the XML nerds. ;-) Includes the file
intro.xml
, and points to the section with thexml:id
"sec.intro". Include all elements except thetitle
element. Useful if you want to specify another title. Use sparingly! (Thexmlns()
expression is needed to define the DocBook 5 namespace for the XPointer.)