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 ≠ $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”