XSLT 1.0使用字符串选择节点集中的值

时间:2011-02-22 17:31:35

标签: xslt

我在选择节点集中的值时遇到了一些麻烦。我有一个字符串变量, 它连接在xml中下一个存在节点的路径中。但是当我试图从中选择价值时, 它导致粘贴此变量的值,而不是节点的值。我无法找到我的能力 将字符串转换为节点集以进行正确选择。请帮忙。

<xsl:for-each select="result/node()">
    <xsl:copy>
        <xsl:for-each select="./node()">
            <xsl:copy>
                <xsl:attribute name="rating">
                    <xsl:text>0</xsl:text>
                </xsl:attribute>
                <xsl:choose>
                    <xsl:when test="translate(
                                       substring(.,1,3),
                                       $upCase,
                                       $lowCase
                                    ) = 'id_'">
                        <xsl:value-of  select="."/>
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:variable name="cval"
                                      select="concat(
                                                 '/survey/checkbox_value/',
                                                 local-name(),
                                                 '/.'
                                              )" />
                        <xsl:value-of select="$cval" />
                    </xsl:otherwise>
                </xsl:choose>
            </xsl:copy>
        </xsl:for-each>
    </xsl:copy>
</xsl:for-each>

1 个答案:

答案 0 :(得分:1)

您无需转换任何内容。它可以用普通的xpath完成。

<xsl:variable name="local_name" select="local-name()"/>
<xsl:value-of select="/survey/checkbox_value/node()[
                         local-name() = $local_name
                      ]"/>