2012-09-10 68 views
2

如果我有以下XML:過濾器的for-each通過XML屬性

<Results> 
    <Option isDefault="true" value="1"> 
    <DisplayName> 
     One 
    </DisplayName> 
    </Option> 
    <Option value="2"> 
    <DisplayName> 
     Two 
    </DisplayName> 
    </Option> 
    <Option value="3"> 
    <DisplayName> 
     Three 
    </DisplayName> 
    </Option> 
</Results> 

我怎樣才能訪問它有isDefault="true"Optionvalue

到目前爲止,我曾嘗試:

<xsl:variable name="varName"> 
    <xsl:for-each select="Results/Option[isDefault='true']"> 
     <xsl:value-of select="@value" /> 
    </xsl:for-each> 
</xsl:variable> 

回答

3

如果你知道只有一個這樣的元素,或者如果你有興趣只在第一個這樣的元素,你可以簡單地使用

<xsl:value-of select="Results/Option[@isDefault = 'true']/@value"/> 

不需要for-each。這適用於XSLT 1.0和value-of,其中2.0將會輸出所有Results/Option[@isDefault = 'true']元素的value屬性值。

0
<xsl:variable name="varName"> 
    <xsl:for-each select="Results/Option[@isDefault='true']"> 
     <xsl:value-of select="@value" /> 
    </xsl:for-each> 
</xsl:variable> 
3

如果有保證是至多一個Option元件,其isDefault屬性具有"true"字符串值,

然後使用此Xpath的單行

/*/*[@isDefault='true']/@value