有什么方法可以根据 for-each 中的当前值应用 count() 吗?
Is there any way to apply a count() depending on the current value in a for-each?
我有一个具有这种结构的 xml 文件
<?xml version='1.0' encoding='UTF-8'?>
<students>
<student>
<number>1</number>
<firstname>Sandrine</firstname>
<name>BERTIN</name>
<gender>F</gender>
<highschool>de la Côte d'Albâtre</highschool>
<city>Saint-Valéry-en-Caux</city>
<specialization>Physique chimie</specialization>
</eleve>
[...]
</students>
最终结果应该是一个 pdf 文档,每所高中将与其他信息一起显示在新页面上(属于该高中的所有学生列表等...)
其中一项信息是性别 ='M'(或 'F')的学生总数。
这是我的代码的一部分:
<fo:page-sequence master-reference="book">
<fo:flow flow-name="xsl-region-body">
<xsl:for-each select="students/student[count(. | key('cityKey',city)[1]) = 1]">
<xsl:sort select="city" />
<xsl:for-each select="key('cityKey', city)[count(. | key('highschoolKey',highschool)[1]) = 1]">
<xsl:sort select="highschool" />
<fo:block break-before="page"><xsl:value-of select="highschool"/> </fo:block>
<fo:block> City : <xsl:value-of select="city" /> </fo:block>
<!-- <fo:block> Number of male students : <xsl:value-of select="count(/students/student[gender='M'])" /> </fo:block> -->
</xsl:for-each>
</xsl:for-each>
</fo:flow>
</fo:page-sequence>
我想得到男学生的 count () 数量,并在我的 xsl:for-每个。但是我要么得到所有高中的所有男学生(/students/student[性别='M']),要么什么都没有。
理想情况下应该是这样的:
**de la Côte d'Albâtre**
City : Saint-Valéry-en-Caux
Number of male students: " "
Number of female students: " "
List of all the student in a Table : [...]
提前致谢
如果您按 city
对 student
进行分组,则:
<xsl:value-of select="count(key('cityKey', city)[gender ='M'])"/>
应该给你当前组中男学生的数量。
--
未经测试,因为你没有提供完整的例子。
我有一个具有这种结构的 xml 文件
<?xml version='1.0' encoding='UTF-8'?>
<students>
<student>
<number>1</number>
<firstname>Sandrine</firstname>
<name>BERTIN</name>
<gender>F</gender>
<highschool>de la Côte d'Albâtre</highschool>
<city>Saint-Valéry-en-Caux</city>
<specialization>Physique chimie</specialization>
</eleve>
[...]
</students>
最终结果应该是一个 pdf 文档,每所高中将与其他信息一起显示在新页面上(属于该高中的所有学生列表等...) 其中一项信息是性别 ='M'(或 'F')的学生总数。
这是我的代码的一部分:
<fo:page-sequence master-reference="book">
<fo:flow flow-name="xsl-region-body">
<xsl:for-each select="students/student[count(. | key('cityKey',city)[1]) = 1]">
<xsl:sort select="city" />
<xsl:for-each select="key('cityKey', city)[count(. | key('highschoolKey',highschool)[1]) = 1]">
<xsl:sort select="highschool" />
<fo:block break-before="page"><xsl:value-of select="highschool"/> </fo:block>
<fo:block> City : <xsl:value-of select="city" /> </fo:block>
<!-- <fo:block> Number of male students : <xsl:value-of select="count(/students/student[gender='M'])" /> </fo:block> -->
</xsl:for-each>
</xsl:for-each>
</fo:flow>
</fo:page-sequence>
我想得到男学生的 count () 数量,并在我的 xsl:for-每个。但是我要么得到所有高中的所有男学生(/students/student[性别='M']),要么什么都没有。
理想情况下应该是这样的:
**de la Côte d'Albâtre**
City : Saint-Valéry-en-Caux
Number of male students: " "
Number of female students: " "
List of all the student in a Table : [...]
提前致谢
如果您按 city
对 student
进行分组,则:
<xsl:value-of select="count(key('cityKey', city)[gender ='M'])"/>
应该给你当前组中男学生的数量。
--
未经测试,因为你没有提供完整的例子。