Я бы использовал что-то вроде этого:
<xsl:for-each-group select="instance" group-by="code/text()">
<tr>
<td><xsl:value-of select="current-grouping-key()" /></td>
<td><xsl:apply-templates select="current-group()" /></td>
</tr>
</xsl:for-each-group>
Он группирует элементы instance
вместе на основе текста в элементе кода.Функция current-grouping-key()
возвращает строку, которая группирует вещи, а current-group()
возвращает последовательность узлов для этого ключа.Вам все равно придется заполнить бит, чтобы ввести точку с запятой, но это не должно быть слишком сложно.
for-each-group
- это конструкция XSLT 2.0, поэтому убедитесь, что вы используете процессор XSLT, которыйпонимает это.Саксонский является отличным примером одного.