次のような XML ファイルがあります。
<components>
<comp>
<ref>q7</ref>
<partnumber>foo</partnumber>
</comp>
<comp>
<ref>q1</ref>
<partnumber>foo</partnumber>
</comp>
<comp>
<ref>q6</ref>
<partnumber>bar</partnumber>
</comp>
<comp>
<ref>q3</ref>
<partnumber>bar</partnumber>
</comp>
</components>
出力ファイルが次のようになるように、部品番号でグループ化し、ref でソートする必要があります。
q1 q7, foo
q3 q6, bar
しかし、私はこの出力を得ています:
q3 q6, bar
q1 q7, foo
ここに私のXSLがあります:
<!DOCTYPE xsl:stylesheet [
<!ENTITY nl "
"> <!--new line CR, LF, or LF, your choice -->
]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:key name='compspec' match="comp" use="partnumber" />
<xsl:template match="/components">
<xsl:for-each select="comp[generate-id(.)=generate-id(key('compspec',partnumber)[1])]">
<xsl:sort select="ref"/>
<xsl:for-each select="key('compspec',partnumber)">
<xsl:sort select="ref"/>
<xsl:value-of select="ref"/>
<xsl:text> </xsl:text>
</xsl:for-each>
<xsl:text>,</xsl:text>
<xsl:value-of select="partnumber"/>
<xsl:text>&nl;</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
このシーケンスを取得する理由は理解していますが、XSLT についてはかなり初心者であり、修正方法がわかりません。コードで何を修正する必要がありますか? XSLT 1.0 を使用しています。ありがとうございました!