如何比较两个值,其中一个内部为每个标签,一个变量在外面为每个标签,如下例所示
<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>
答案 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>