使用XSL计算XML中的端点

Chr*_*ris 3 xml xslt

我希望能够使用XSL计算XML文件中的"端点".通过端点我的意思是标签没有包含数据的子节点.

<xmlsnippet> 
    <tag1>NOTENOUGHDAYS</tag1> 
    <tag2>INVALIDINPUTS</tag2> 
    <tag3> 
        <tag4> 
            <tag5>2</tag5> 
            <tag6>1</tag6> 
        </tag4> 
    </tag3> 
</xmlsnippet> 
Run Code Online (Sandbox Code Playgroud)

这个XML应该返回4,因为有4个"端点"

Tom*_*lak 6

<xsl:template match="/>
  <xsl:value-of select="count(//*[not(*) and normalize-space() != ''])" />
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

这通过后代轴(//)递归整个XML树,查看*没有子元素节点(not(*))并包含除空格(normalize-space() != '')之外的数据的所有元素节点().

计算得到的节点集(在您的情况下返回4).