关于xslt:鉴于此XML,是否有一个xpath可以给我“测试”和“名称”值?

关于xslt:鉴于此XML,是否有一个xpath可以给我“测试”和“名称”值?

Given this XML, is there an xpath that will give me the 'test' and 'name' values?

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

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

但这只是返回"何时"元素,而不是我需要的确切属性值。

这是我的XML的代码段:

1
2
3
4
5
6
<xsl:template match="field">
    <xsl:choose>
    <xsl:when test="@name='First Name'">
        <xsl:call-template name="handleColumn_1" />
    </xsl:when>
</xsl:choose>

您是否要.../xsl:template/xsl:choose/xsl:when/@test

如果您想从测试属性中实际获取值" First Name",那么您就不走运了-属性内的内容只是一个字符串,而不是一段xml,因此您无法对其进行xpath 。 如果需要获取该内容,则必须使用字符串操作(例如,子字符串)来获取正确的内容


史蒂夫·库珀回答了第一部分。 对于第二部分,您可以使用:

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

在上述代码段中,该代码将与xsl:专门匹配。 如果您希望它与一般匹配,则可以使用:

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


推荐阅读