加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xslt – XPath – 查询两个XML文档

发布时间:2020-12-16 05:33:47 所属栏目:百科 来源:网络整理
导读:我有两个xml文档: XML1: Books Book id="11" ....... AuthorName/ /Book ....../Books XML2: Authors Author BookId11/BookId AuthorNameSmith/AuthorName /Author/Authors 我正在尝试执行以下操作: 获取XML2 / Author / AuthorName的值,其中XML1 / Book
我有两个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]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读