2013-04-03 91 views
1

我有下面的XML返回屬性的值:XSL和XPath:搜索節點的節點內,並在發現節點

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

所以基本上,有「彼得」的價值,我想獲得「約翰」的價值(我當時不知道)。在我的xml中會有很多「w:style」節點。

如何獲得使用xslt(和xpath)1.0返回給我的「John」字符串的值(最好是調用一個命名模板來返回值)?

回答

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 
+0

謝謝你,我想你指的對嗎? (「選擇」將被替換爲「匹配」) –

+1

@HarveyDarvey很好發現。這會教會我從內存中輸入內容,而不是先測試它們。 –