XPath函数寻找“CC130”

时间:2013-02-26 14:09:06

标签: xml xpath

嗨,我想弄清楚功能是什么,只展示当然“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>

2 个答案:

答案 0 :(得分:1)

我认为你在寻找:

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

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

答案 1 :(得分:1)

您需要谓词

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

这将匹配item中至少有一个bookcollection子项包含至少一个courses子项值course的所有CC130个元素。当XML结构像这样规则时,通常更明智地拼出所有步骤而不是使用//descendant::(例如//item[.//course = 'CC130']也可以工作但是会涉及搜索整个树在所有级别上,名为item的元素 - 但您知道唯一有趣的item元素是直接位于bookcollection下的元素。