我试图将a.xml中元素的所有子元素(部分)包含到带有xi:include的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()方案的使用不正确吗?
答案 0 :(得分:3)
您对element()
计划的使用不正确。
*
)。 “子序列”只能包含正斜杠和数字。这是一个有效的表达式:
element(TheChapter/1)
它将选择由TheChapter
ID标识的元素的第一个子元素。使用element()
方案无法完成您想要的任务。
您可以使用xpointer()
计划:
xpointer(id('TheChapter')/*)
xpointer()
计划从未成为W3C推荐(它仍然只是一个草案),并没有得到广泛实施。
XMLmind XML Editor确实支持xpointer()
的子集。这是一个邮件列表帖子,其中包含更多详细信息:http://permalink.gmane.org/gmane.editors.xxe.general/10220。
答案 1 :(得分: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')/*)"/>