给定这种XML,是否有一个xpath可以给我"测试"和"名称"值?

时间:2020-03-06 14:23:45  来源:igfitidea点击:

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

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

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

这是我的XML的代码段:

<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。如果需要获取该内容,则必须使用字符串操作(例如,子字符串)来获取正确的内容

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

.../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