XInclude/XPointerのイライラする問題はこちら。
目的は、XML形式の価格エントリのリストからのエントリを別のドキュメントに含めることです。次のような価格のリストが記載されたドキュメントがあります。
<?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>
次のインクルードは失敗します
<xi:include href="../listen/preise.xml#xpointer(/preise/preis[@id='foo100']/text())" />
と
element include: XInclude error : failed build URL
価格表のIDの形式を数値のみに変更すると、
<?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>
アポストロフィなしでこのインクルードを使用します
<xi:include href="../listen/preise.xml#xpointer(/preise/preis[@id=100]/text())" />
突然すべてが機能します。したがって、この問題はアポストロフィに関連しているようですが、どうすればそれを回避できますか?
また、これが私のxmllintバージョン情報です:
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