Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XSL计算XML中的端点_Xml_Xslt - Fatal编程技术网

使用XSL计算XML中的端点

使用XSL计算XML中的端点,xml,xslt,Xml,Xslt,我希望能够使用XSL计算XML文件中的“端点”。 我所说的端点是指没有包含数据的子项的标记 i、 e 诺特诺日 无效看跌期权 2. 1. 这个XML应该返回4,因为有4个“端点”*[not(*)]用于没有子元素的元素 编辑:要计算它们,只需使用计数(元素)尝试:- <xsl:variable name="numOfLeafNodes" select="count(//*[not(*)])" /> 这将告诉您在正在转换的整个xml中找到了多少叶节点。使用:- <xs

我希望能够使用XSL计算XML文件中的“端点”。 我所说的端点是指没有包含数据的子项的标记

i、 e


诺特诺日
无效看跌期权
2.
1.
这个XML应该返回4,因为有4个“端点”

*[not(*)]
用于没有子元素的元素

编辑:要计算它们,只需使用
计数(元素)

尝试:-

 <xsl:variable name="numOfLeafNodes" select="count(//*[not(*)])" />

这将告诉您在正在转换的整个xml中找到了多少叶节点。使用:-

 <xsl:variable name="numOfLeafNodes" select="count(.//*[not(*)])" />


查找作为当前上下文节点的后代的叶节点的计数。

您是指没有子节点的节点吗?我们还需要知道您想要使用什么语言,否则您将得到一个松散的伪代码答案。XML格式非常松散,因此我想计算没有子节点但可能包含数据的任何内容。如何递归执行此操作?如果执行此操作,则返回2而不是4。@克里斯:确实如此,但这将返回4:
count(ParentTag/xmlsippet//*[not(*)))
注意
/
后代的捷径::
轴。我还注意到我遗漏了实际的count函数本身。这看起来不错,但我发布的XML只是一个片段,所以我需要调用类似于
select=“count(//ParentTag/xmlsippet/*[not(*)和normalize-space()!=”)“
-这返回2而不是4。我做错了什么?啊哈,我用了这个,它工作了
select=“count(ParentTag/xmlsippet/*[not(*)和normalize-space()!=””)
<xsl:template match="/>
  <xsl:value-of select="count(//*[not(*) and normalize-space() != ''])" />
</xsl:template>
<xsl:template match="/>
  <xsl:value-of select="count(//*[not(*) and normalize-space() != ''])" />
</xsl:template>