所以,我有两个变量,每个变量包含一个节点集(A和B)。我需要在节点集B中对行进行计数,其中@id存在于节点集A中。
这可能吗?如果是这样,我不确定如何在xslt 1.0中编写这个xpath?
<xsl:value-of select="count($B[])"/>
答案 0 :(得分:0)
从你的问题中不清楚这是否是你所需要的。也就是说,这种问题并不少见。
假设数据如下:
<?xml version="1.0" encoding="utf-8"?>
<test>
<nodeset_a>
<item id="1"/>
<item id="2"/>
<item id="3"/>
<item id="4"/>
<item id="2"/>
</nodeset_a>
<nodeset_b>
<item id="1"/>
<item id="4"/>
<item id="5"/>
<item id="6"/>
<item id="7"/>
</nodeset_b>
</test>
您的问题听起来好像想要计算nodeset_b
中id
中id
个nodeset_a
值与<xsl:value-of select="count(/test/nodeset_b/item[@id = /test/nodeset_a/item/@id])"/>
值匹配的项目数。以下表达式将生成正确的计数:
nodeset_b
相反的情况可能有点棘手 - 在id
中查找id
项nodeset_a
中没有匹配<xsl:variable name="Rows" select="/test/nodeset_b/item[@id != /test/nodeset_a/item/@id]"/>
item
值的项目}。
乍一看,您可能会想到以下内容:
nodeset_b
然而,这不能解决我们的问题。
打破这一点,它的作用是找到id
中所有id
元素的nodeset_a
值不匹配一个的元素id
中的nodeset_a
值。无论哪一个:只要item
中的任何nodeset_b
值不匹配,此XPath评估将从<test>
返回5
。对于上面的item
数据,这会返回所有数据,计算出nodeset_b
。
要查找id
中所有id
个nodeset_a
元素,其<xsl:variable name="Rows" select="/test/nodeset_b/item[not(@id = /test/nodeset_a/item/@id)]"/>
值与 <test>
值中的item
值不匹配nodeset_b
,我们不仅要否定等号,而是否定比较表达式本身:
id
对于上面的id
数据,这只会返回nodeset_a
中3
值与任何不匹配的select to_string(meta().cas) from sampledb where type = "PROD" and Id = "PROD_101"
个元素$('#login').click(function(e) {
e.preventDefault();
$('#main').fadeOut('slow', function() {
$(this).html($('#hidden-login-div').html()).fadeIn('fast');
});
});
中的{{1}}值,正确计算{{1}}。