3

嗨,我想弄清楚例如仅展示“CC130”课程中的所有书籍的功能是什么?

我有这个“/bookcollection/items/item/courses/course”,它显示了所有可能的课程?

     <?xml version="1.0" encoding="utf-8"?>
     <bookcollection>
     <item id="59113">  
     <title>Computer science : a modern introduction /</title>
     <isbn>0131659456</isbn>
     <url>http://library.hud.ac.uk/catlink/bib/59113</url>
     <borrowedcount>29</borrowedcount>
     <courses>
        <course>CC100</course>
        <course>CC130</course>
        <course>CX290</course>
     </courses>
  </item>
  <item id="59118">
     <title>Computer networks : protocols, standards, and interfaces /</title>
     <isbn>0131660918</isbn>
     <url>http://library.hud.ac.uk/catlink/bib/59118</url>
     <borrowedcount>19</borrowedcount>
     <courses>
        <course>CC100</course>
     </courses>
  </item>
  <item id="59131">
     <title>Computer-based instruction : methods and development /</title>
     <isbn>0131685929</isbn>
     <url>http://library.hud.ac.uk/catlink/bib/59131</url>
     <borrowedcount>43</borrowedcount>
     <courses>
        <course>CC100</course>
        <course>CC300</course>
     </courses>
  </item>
  <item id="59176">
     <title>Computer networks : protocols, standards, and interfaces /</title>
     <isbn>0131756052</isbn>
     <url>http://library.hud.ac.uk/catlink/bib/59176</url>
     <borrowedcount>10</borrowedcount>
     <courses>
        <course>CC100</course>
     </courses>
  </item>
  </bookcollection>
4

2 回答 2

1

你需要一个谓词

/bookcollection/item[courses/course = 'CC130']

这将匹配 中item的所有元素,bookcollection其中至少有一个courses子元素包含至少一个course值为 的子元素CC130。当 XML 结构是这样的规则时,通常更有效地明确说明所有步骤而不是使用//or descendant::(例如//item[.//course = 'CC130']也可以工作,但需要在所有级别搜索整个树以查找命名的元素item- 但您知道唯一有趣的item元素是直接在bookcollection) 之下的那些。

于 2013-02-26T14:31:46.583 回答
1

我认为您正在寻找:

//item[descendant::course/text() = 'CC300']

工作示例:http ://chris.photobooks.com/xml/default.htm?state=CF

于 2013-02-26T14:14:34.440 回答