匹配特定父节点XSLT的特定子属性

时间:2014-07-24 09:20:07

标签: xml xslt xpath

我正在尝试使用XSL匹配并更改以下XML中方面名称​​ x displayHeight 属性的值,但以下XSL模板会更改所有displayHeight值。我需要以下模板来匹配仅在方面名称为x的情况下的displayHeight属性。

<xsl:template match="@value[parent::property[@name='displayHeight']]">
    <xsl:attribute name="value">
        <xsl:value-of select="'Value Has Been Changed By XSL'"/>
    </xsl:attribute>
</xsl:template>

XML来源

<?xml version="1.0" encoding="utf-8"?>
<a>
    <b>
        <aspect name="x">
           <properties>
                 <property name="displayHeight" value="600"/>
                 <property name="displayWidth" value="800"/>
            </properties>
         </aspect>
         <aspect name="y">
             <properties>
                    <property name="displayHeight" value="1280"/>
                    <property name="displayWidth" value="720"/>
                </properties>
         </aspect>
    </b>
</a>

1 个答案:

答案 0 :(得分:2)

使用

<xsl:template match="aspect[@name = 'x']/properties/property[@name = 'displayHeight']/@value">
    <xsl:attribute name="value">
        <xsl:value-of select="'Value Has Been Changed By XSL'"/>
    </xsl:attribute>
</xsl:template>