xslt-比较局部变量和全局变量

xslt-比较局部变量和全局变量,xslt,xslt-2.0,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_u

我如何对两个值进行比较,一个值在每个标记的内部,另一个值在每个标记的外部,如下面的示例所示

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

//做点什么

通常的方法是写

<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>
。。。

您绑定了什么实体引用
&ne到?通常,您会使用
=
=
not()
等。创建DTD只是为了替换
=带有一个神秘的实体引用对我来说似乎有点奇怪(没有它,它就不是格式良好的XML,所以每次复制和粘贴都必须添加DTD部分)。在您的情况下,将缺少一些行。在另一种情况下,当user_uid=$uid和“text B”时,我只想添加“text A”