使用XPath访问XML节点

时间:2010-12-01 20:59:56

标签: xml xpath

<attributes>
  <attribute name="Mail Zone" property="alerts.p45" type="">
    <value>mailzone</value>
  </attribute>
  <attribute name="Employee Name" property="acm_alert_custom_attributes.cs11" type="">
    <value>employeename</value>
  </attribute>
  <attribute name="Manager Name" property="alerts.p23" type="">
    <value><managername></value>
  </attribute>

如何使用XPath基于上述XML的属性“name”选择节点<value>

1 个答案:

答案 0 :(得分:6)

假设您要选择value元素,该元素是attribute的子元素,其名称为“员工姓名”。

XPath表达式如下:

/attributes/attribute[@name="Employee Name"]/value

在XSL中你可以像这样使用它:

<xsl:value-of select="/attributes/attribute[@name='Employee Name']/value"/>

它以下列方式构建。首先,您要选择value属性,其父级是attribute元素,其父级是根(我假设)attributes/运算符表示元素之间的父子关系。因此,选择所有 value元素的表达式如下:

/attributes/attribute/value

以此为基础,您希望通过其他某些属性过滤结果。在这种情况下,您希望按name元素的attribute属性进行过滤(您选择的名称可能会使事情难以理解)。使用要过滤的元素上的[]子句进行过滤。在你的情况下是attribute元素:

/attributes/attribute[]/value 

现在你需要在过滤器中添加一些东西。 @符号表示您要过滤的元素的属性,后跟您想要的属性的名称。然后将属性与某个已知值进行比较,得到上面的表达式:

/attributes/attribute[@name='filter']/value