我有两个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]
XPath 1.0表达式不能引用多个XML文档,除非通过托管语言在XPath引擎的上下文中设置了对其他文档的引用.例如,如果XSLT是托管语言,那么它使其document()函数可用于它托管的XPath引擎.
document($xml2Uri)/Authors/Author[BookId = $mainDoc/Books/Book/@id]
请注意,即使主XML文档也需要通过另一个名为$mainDoc的< xsl:variable>引用.
仅当XSLT托管Xpath时,document()函数才可用!这在布朗博士的回答中没有提到,并且误导了读者.
XPath 2.x表达式可以引用使用XPath 2.0 doc()
函数的任何其他XML文档.
for $doc in /,$doc2 in doc(someUri) return $doc2/Authors/Author[BookId = $doc/Books/Book/@id]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。