我有大量文件,其结构如下:
<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>
对于每个文件,我想找出兄弟姐妹的最大数量。
对于上面的例子,兄弟姐妹的最大数量是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。
我有什么方法可以做到这一点吗?
我事先感谢你的帮助。
答案 0 :(得分:2)
以这种方式尝试:
<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>