xpath按属性获取节点值等于另一个节点的值

时间:2014-02-22 02:59:06

标签: xml xpath

我是XPath新手,我有以下xml:

`<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <colors>
    <color id="1">green</color>
    <color id="2">red</color>
    <color id="3">yellow</color>
  </colors>
  <items>
    <item id="095">
       <title>pencil</title>
      <colorId>3</colorId>
    </item>
    <item id="100">
      <title>pen</title>
      <colorId>1</colorId>
    </item>
    <item id="200">
      <title>ruler</title>
      <colorId>2</colorId>
    </item>
  </items>
</catalog>`

如您所见,colorId值对应于颜色id属性,因此“pencil”为“yellow”(3),“pen”为“green”(1),“ruler”为“red”(2) 。 问题是我如何通过colorId值获得每个项目的价值?

提前致谢。

2 个答案:

答案 0 :(得分:4)

这将根据title

返回id
/catalog/items/item[colorId = /catalog/colors/color/@id]/title

这将返回与color对应的colorId

/catalog/colors/color[@id = /catalog/items/item/colorId]

然后,您可以添加位置谓词以选择特定关系。

答案 1 :(得分:0)

假设我理解这个问题 - 您想要查找特定颜色的<item> - 您正在寻找的是XPath Predicates。例如:

/catalog/items/item[colorId=2]

会找到孩子的内容等于2的s。