У меня есть файл XML, как этотXSL Группировка по вложенному параметру
<fruits>
<fruit>
<name>banana</name>
<country>Morocco</country>
</fruit>
<fruit>
<name>orange</name>
<country>Morocco</country>
</fruit>
<fruit>
<name>grape</name>
<country>Egypt</country>
</fruit>
</fruits>
И мне нужно сгруппировать по-другому:
<fruits>
<country name="Morocco">
<fruit>
<name>banana</name>
</fruit>
<fruit>
<name>orange</name>
</fruit>
</country>
<country name="Egypt">
<fruit>
<name>grape</name>
</fruit>
</country>
</fruits>
Я пытался сделать это с for-each-group
из XSLT 2.0, но это было плохо: я не знаю, как обрабатывать группировку по вложенным параметрам, поэтому мой .xsl-файл не делает ничего хорошего.
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:for-each-group select="fruits/fruit" group-by="fruits/fruit/country">
<country name="{country}">
<xsl:for-each select="current-group()">
<fruit>
<name> '{name}'/</name>
</fruit>
</xsl:for-each>
</country>
</xsl:for-each-group>
</xsl:stylesheet>
Вы близки - 'группы by' выражение является XPath относительно' select'ed узлов, так что вам нужно только 'группы по =«страна»' –