xslt - 比较本地和全局变量

时间:2014-07-30 08:35:02

标签: xslt xslt-2.0

如何比较两个值,其中一个内部为每个标签,一个变量在外面为每个标签,如下例所示

<xsl:variable name="uid" >
    <xsl:value-of select="/ctas/output/uid" />
</xsl:variable>
<xsl:for-each select="/ctas/user/row">
    <xsl:variable name="user_uid" select="user_uid" />
    <xsl:if test="$user_uid &ne; $uid" >
        //do something
    </xsl:if>
</xsl:for-each>

1 个答案:

答案 0 :(得分:1)

通常的方法是写

<xsl:variable name="uid" >
    <xsl:value-of select="/ctas/output/uid" />
</xsl:variable>

简单地说就是

<xsl:variable name="uid" select="/ctas/output/uid" />

因为它选择输入中的节点,然后在谓词中使用该变量,如

<xsl:for-each select="/ctas/user/row[not(user_uid = $uid)]">...</xsl:for-each>

为了提高效率,这些交叉引用通常使用密钥进行优化:

<xsl:key name="uid" match="ctas/output" use="uid"/>

然后

<xsl:for-each select="/ctas/user/row[not(key('uid', user_uid))]">...</xsl:for-each>