xsl和xpath:搜索节点内的节点,并返回找到的节点中的属性值

时间:2013-04-03 12:11:29

标签: xml xslt xpath xslt-1.0

我有以下xml:

<w:style w:styleId="John">
  <w:name w:val="Peter" />
</w:style>

所以基本上,拥有“彼得”的价值,我想得到“约翰”的价值(我当时不知道)。我的xml中会有很多“w:style”节点。

如何使用xslt(和xpath)1.0(最好是调用命名模板来返回值)将“John”字符串的值返回给我?

1 个答案:

答案 0 :(得分:2)

将提取所需内容的基本XPath表达式

//w:style[w:name/@w:val = 'Peter']/@w:styleId

但是当你标记了你的问题“XSLT”并且你说你有很多这些节点时你可能最好使用密钥

<xsl:key name="nameByVal" match="w:name" use="@w:val" />

然后您可以使用

更有效地查询
key('nameByVal', 'Peter')/../@w:styleId

或者如果w:name可能嵌套在其他元素中而不是w:style的直接子元素中,那么

key('nameByVal', 'Peter')/ancestor::w:style/@w:styleId