在XQuery中,如何在第二个列表中列出包含一个或多个子元素的文件?

时间:2011-10-25 10:05:57

标签: xquery

使用随处可见的书籍示例,如果我有许多文件,每个文件都包含书籍清单,我怎么能只列出包含存储在变量中的一个或多个ISBN号的文件?

即。

<Doc id="1">
  <ISBN code="734554656570317" 
  <ISBN code="234363495740647" 
  <ISBN code="833563495780345" 

<Doc id="2">
  <ISBN code="467467546756747" 
  <ISBN code="890473590555875" 
  <ISBN code="234557857667412" 

我怎样才能实现以下目标:

声明变量$ isbnList:=(“833563495780345”,“234557857667412”);

/ doc中的$ doc 其中$ doc / ISBN [$ isbnList中的@code]

1 个答案:

答案 0 :(得分:2)

如果$ isbnList包含一系列原子项,每个原子项都是一个字符串ISBN代码,这应该有效:

/Doc[ISBN/@code = $isbnList]

(=执行一般比较,如果左边的至少一个项目与右边的至少一个项目匹配,则返回true,例如(1,2)=(2,3)返回true)。