xslt计数最大同级数

xslt计数最大同级数,xslt,Xslt,我有大量具有如下结构的文件: <html> <body> <div class="a">aaa <div class="b">bbb</div> <div class="c">ccc1 <div class="d">ddd11 <div class="e">eee11</div> <div c

我有大量具有如下结构的文件:

<html>
  <body>
    <div class="a">aaa
      <div class="b">bbb</div>
      <div class="c">ccc1
        <div class="d">ddd11
          <div class="e">eee11</div>
          <div class="f">fff11
            <div class="g">ggg111</div>
            <div class="g">ggg112</div>
            <div class="g">ggg113</div>
            <div class="g">ggg114</div>
            <div class="g">ggg115</div>
            <div class="g">ggg116</div>
          </div>
        </div>
        <div class="d">ddd12
          <div class="e">eee12</div>
          <div class="f">fff12
            <div class="g">ggg121</div>
            <div class="g">ggg122</div>
            <div class="g">ggg123</div>
            <div class="g">ggg124</div>
          </div>
        </div>
      </div>
      <div class="c">ccc2
        <div class="d">ddd21
          <div class="e">eee21</div>
          <div class="f">fff21
            <div class="g">ggg211</div>
            <div class="g">ggg212</div>
            <div class="g">ggg213</div>
            <div class="g">ggg214</div>
            <div class="g">ggg215</div>
          </div>
        </div>
      </div>
    ...
    </div>
  </body>
</html>

aaa
bbb
ccc1
ddd11
eee11
fff11
ggg111
ggg112
ggg113
ggg114
ggg115
ggg116
ddd12
eee12
fff12
ggg121
ggg122
ggg123
ggg124
ccc2
ddd21
eee21
fff21
ggg211
ggg212
ggg213
ggg214
ggg215
...
  • div class=“c”的数量在每个文件中都是可变的(零或更多)
  • div class=“d”的数量在每个内部都是可变的 (零或更多)
  • div class=“g”的数量在每个内部都是可变的 (零或更多)
对于每个文件,我想找出兄弟姐妹的最大数量

对于上面的示例,兄弟姐妹的最大计数为6

我尝试了以下xslt:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="div[@class='a']">
  <xsl:for-each select="div[@class='c']/div[@class='d']">
   <xsl:value-of select="count(div[@class='f']/div[@class='g'])" />
  </xsl:for-each>
 </xsl:template>

</xsl:stylesheet>

这将返回:645,这是第一组、第二组和第三组的计数,即6、4和5

我希望它只返回最大计数,即6

我有什么办法可以这样做吗

我提前感谢您的帮助。

请尝试以下方法:

<xsl:template match="div[@class='a']">
    <xsl:for-each select="div[@class='c']/div[@class='d']">
    <xsl:sort select="count(div[@class='f']/div[@class='g'])" data-type="number" order="descending"/>
    <xsl:if test="position() = 1">
        <xsl:value-of select="count(div[@class='f']/div[@class='g'])" />
    </xsl:if>
  </xsl:for-each>
</xsl:template>

这真漂亮。非常感谢。