我想使用XSLT查找父元素中当前元素的计数
当我使用XSLT分析当前节点为“c”时,我想找到“a”中的“b”计数。我想使用XSLT查找父元素中当前元素的计数,xslt,xslt-1.0,xslt-2.0,Xslt,Xslt 1.0,Xslt 2.0,当我使用XSLT分析当前节点为“c”时,我想找到“a”中的“b”计数。 是否可以使用XSLT执行此操作? 我不知道元素名“b”是什么,即它前面的同级元素。如果您位于c标记上,或者不管元素实际被调用了什么,那么要获得前面同级元素的计数,您可以这样做 <a> <z/> <b/> <b/> <b/> <c/> </a> 在本例中,您可以定义一个键,如下所示,根据具有不同名称的第一个元素的唯一id对
是否可以使用XSLT执行此操作?
我不知道元素名“b”是什么,即它前面的同级元素。如果您位于
c
标记上,或者不管元素实际被调用了什么,那么要获得前面同级元素的计数,您可以这样做
<a>
<z/>
<b/>
<b/>
<b/>
<c/>
</a>
在本例中,您可以定义一个键,如下所示,根据具有不同名称的第一个元素的唯一id对元素进行分组:
<a>
<z/>
<b/>
<b/>
<b/>
<c/>
<z/>
<b/>
<c/>
</a>
然后你可以得到这样的计数:
<xsl:key name="keyc" match="*" use="generate-id(following-sibling::*[name() != name(current())][1])" />
以下是正在实施的三个选项
<xsl:value-of select="count(key('keyc', generate-id()))" />
如果您位于
c
标记上,或者不管实际调用的元素是什么,那么要获得前面同级的计数,您可以这样做
<a>
<z/>
<b/>
<b/>
<b/>
<c/>
</a>
在本例中,您可以定义一个键,如下所示,根据具有不同名称的第一个元素的唯一id对元素进行分组:
<a>
<z/>
<b/>
<b/>
<b/>
<c/>
<z/>
<b/>
<c/>
</a>
然后你可以得到这样的计数:
<xsl:key name="keyc" match="*" use="generate-id(following-sibling::*[name() != name(current())][1])" />
以下是正在实施的三个选项
<xsl:value-of select="count(key('keyc', generate-id()))" />
使用
xsl:number
。它打印出当前元素的数字,并根据需要进行格式化
关于如何进行计算,有多种选择,
e、 g.多级或字母级
实际上,它是一个非常强大的工具。使用
xsl:number
。它打印出当前元素的数字,并根据需要进行格式化
关于如何进行计算,有多种选择,
e、 g.多级或字母级
实际上,它是一个非常强大的工具
当分析当前节点为“c”时,我想在“a”中找到“b”的计数
让我换一种说法:您希望统计与
处于同一级别的所有
的出现次数
此XSLT通过调用带有参数的
来完成此任务:待计数元素的
本地名称
(在本例中为“b”):
在您的示例中,输出仅为:
三,
当分析当前节点为“c”时,我想在“a”中找到“b”的计数
让我换一种说法:您希望统计与
处于同一级别的所有
的出现次数
此XSLT通过调用带有参数的
来完成此任务:待计数元素的
本地名称
(在本例中为“b”):
在您的示例中,输出仅为:
三,
在你的问题中,你说你不知道元素名“b”,所以如果你不知道它是什么,你就不能真正计算它。你是说你想得到紧靠前一位的
c
,然后计算出现的次数?我已经修改了我的答案,显示了许多不同的选项,你可以尝试。谢谢你,很多选项第一个选项解决了我的问题。它得到了我想要的所有计数,只计算“b”在你的问题中,你说你不知道元素名称“b”
,所以如果你不知道是什么,你就不能真正数数。你是说你想得到前一个兄弟的c
,并计算出现的次数吗?我已经修改了我的答案,显示了许多不同的选项,你可以尝试。谢谢,很多选项第一个解决了我的问题。你的问题不清楚。您的标题说您想要“当前元素在其父元素中的计数”。如果您在c
的上下文中,那么这将意味着名为c
的所有兄弟姐妹的计数。但是你说你想数b
——但是你不知道b
的名字。那么您打算如何识别b
?您的问题不清楚。您的标题说您想要“当前元素在其父元素中的计数”。如果您在c
的上下文中,那么这将意味着名为c
的所有兄弟姐妹的计数。但是你说你想数b
——但是你不知道b
的名字。那么您打算如何识别b
?