1

xi:include を使用して、a.xml の要素のすべての子要素 ​​(セクション) を b.xml に含めようとしています。どちらの XML ファイルも有効な docbook 5 ファイルです。

a.xml

<chapter xml:id="TheChapter">
    <section>
        <title>section 1</title>
    </section>
    <section>
        <title>section 2</title>
    </section>
    <section>
        <title>section 3</title>
    </section>
</chapter>

b.xml

<section>
      <xi:include href="a.xml" xpointer="element(/TheChapter/*)"/>
</section>

エラーを報告する XMLMind を使用しています。

cannot parse inclusion directive: cannot parse XPointer "element(/TheChapter/*)": "/TheChapter/*", XPointer element() scheme syntax error

私の element() スキームの使用は正しくありませんか?

4

2 に答える 2

4

スキームの使用はelement()正しくありません。

  • ID によって要素を識別する式の最初の部分は、スラッシュで始めてはなりません。
  • ワイルドカード ( *) は使用できません。「子シーケンス」には、スラッシュと数字のみを含めることができます。

これは有効な式です:

element(TheChapter/1)

IDで識別される要素の最初の子を選択しTheChapterます。あなたが望むことは、element()スキームを使用して行うことはできません。


xpointer()次のスキームを使用できます。

xpointer(id('TheChapter')/*)

このxpointer()方式は W3C の勧告にはなりませんでした (これはまだ単なる草案です)。広く実装されているわけではありません。

XMLmind XML エディタは のサブセットをサポートしていxpointer()ます。詳細が記載されたメーリング リストの投稿を次に示します: http://permalink.gmane.org/gmane.editors.xxe.general/10220

于 2014-10-05T10:57:29.037 に答える
0

次の使用法は正常に機能します。

<xi:include href="a.xml" xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('TheChapter')/db:section)"/>

または

<xi:include href="a.xml" xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('TheChapter')/*)"/>
于 2014-10-09T09:03:38.317 に答える