我有两个xml文档:
XML1:
<Books>
<Book id="11">
.......
<AuthorName/>
</Book>
......
</Books>
XML2:
<Authors>
<Author>
<BookId>11</BookId>
<AuthorName>Smith</AuthorName>
</Author>
</Authors>
我正在尝试执行以下操作:
获取XML2 / Author / AuthorName的值,其中XML1 / Book / @id等于XML2 / Author / BookId。
XML2/Author/AuthorName[../BookId = XML1/Book/@id]
答案 0 :(得分:4)
XPath 1.0表达式不能引用多个XML文档,除非通过托管语言在XPath引擎的上下文中设置了对其他文档的引用。例如,如果XSLT是托管语言,那么它使其document()
函数可用于它所托管的XPath引擎。
document($xml2Uri)/Authors/Author[BookId = $mainDoc/Books/Book/@id]
请注意,即使主XML文档也需要通过另一个名为<xsl:variable>
的{{1}}引用。
仅当XSL托管XSLT 时,$mainDoc
功能才可用!这在布朗博士的回答中没有提到,并且误导了读者。
XPath 2.x表达式可以引用使用XPath 2.0 doc()
函数的任何其他XML文档。
document()
答案 1 :(得分:0)
document
函数是你的朋友,here是一个如何组合多个输入文件的简短教程。
编辑:当然,只有在Xslt脚本中使用Xpath时才有效。