Ответ 1
Если вы группируете по странам, вы начинаете, например,
<xsl:template match="Person">
<xsl:for-each-group select="Student/Info" group-by="@Country">
<country name="{current-grouping-key()}">
</country>
</xsl:for-each-group>
</xsl:template>
Затем вам нужно решить, хотите ли вы далее группировать элементы Info
в каждой группе стран, например, по имени:
<xsl:template match="Person">
<xsl:for-each-group select="Student/Info" group-by="@Country">
<country name="{current-grouping-key()}">
<xsl:for-each-group select="current-group()" group-by="@Name">
<student name="{current-grouping-key()}">
<classes>
<xsl:for-each select="current-group()">
<class><xsl:value-of select="@Class"/></class>
</xsl:for-each>
</classes>
</student>
</xsl:for-each-group>
</country>
</xsl:for-each-group>
</xsl:template>