鉴于这个XML,是否有一个xpath会给我'test'和'name'值?

时间:2008-09-18 22:03:56

标签: xml xslt

我需要在xsl:when标记中获取'test'属性的值,并在xsl:call-template标记中获取'name'属性。这个xpath让我非常接近:

..../xsl:template/xsl:choose/xsl:when

但是这只会返回'when'元素,而不是我需要的确切属性值。

以下是我的XML片段:

<xsl:template match="field">
    <xsl:choose>
    <xsl:when test="@name='First Name'">
        <xsl:call-template name="handleColumn_1" /> 
    </xsl:when>
</xsl:choose>

2 个答案:

答案 0 :(得分:2)

你想要.../xsl:template/xsl:choose/xsl:when/@test

吗?

如果你想从test属性中实际获得值'First Name',那你就不走运了 - 属性中的内容只是一个字符串,而不是一段xml,所以你可以' t xpath它。如果需要,则必须使用字符串操作(例如,子字符串)来获取正确的内容

答案 1 :(得分:1)

Steve Cooper回答了第一部分。对于第二部分,您可以使用:

.../xsl:template/xsl:choose/xsl:when[@test="@name='First Name'"]/xsl:call-template/@name

在上面的代码段中,它将特别匹配xsl:。如果您希望它一般匹配,那么您可以使用:

.../xsl:template/xsl:choose/xsl:when/xsl:call-template/@name