Frustrating issue with XInclude / XPointer here.
The aim is to include entries from a list of XML-formatted price-entries into another document. I have a document with a list of prices that looks like this:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE preise [
<!ELEMENT preise (preis+)>
<!ELEMENT preis (#PCDATA)>
<!ATTLIST preis id ID #REQUIRED>
]>
<preise>
<preis id="a0">./.</preis>
<preis id='foo100'>136,10</preis>
<preis id='foo101'>163,32</preis>
</preise>
The following include fails
<xi:include href="../listen/preise.xml#xpointer(/preise/preis[@id='foo100']/text())" />
with
element include: XInclude error : failed build URL
Now if I change the format of the ids in the price-list to be exclusively numerical
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE preise [
<!ELEMENT preise (preis+)>
<!ELEMENT preis (#PCDATA)>
<!ATTLIST preis id ID #REQUIRED>
]>
<preise>
<preis id="a0">./.</preis>
<preis id='100'>136,10</preis>
<preis id='101'>163,32</preis>
</preise>
and use this include without the apostrophes
<xi:include href="../listen/preise.xml#xpointer(/preise/preis[@id=100]/text())" />
suddenly everything works. So the issue seems to be related to the apostrophes, but how do I get around that?
Also, here's my xmllint version info:
xmllint: using libxml version 20706
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib
From the XInclude W3C Spec:
So, "Fragment identifiers must not be used; their appearance is a fatal error."
Solution: Try to omit the
href
attribute and to use thexpointer
attribute.However, be aware of the following text from the same spec:
Finally, here is an example from the spec of using XPointer fragment inclusion: