XPath - 查询两个XML文档

时间:2010-05-25 12:35:13

标签: xslt xpath

我有两个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]

2 个答案:

答案 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时才有效。