このサイトのすべての良いヒントがあっても、xsltに問題があります。私はそれにかなり慣れていません。私はこのソースファイルを持っています:
<?xml version="1.0" encoding="utf-8"?>
<file>
<id>1</id>
<row type="A">
<name>ABC</name>
</row>
<row type="B">
<name>BCA</name>
</row>
<row type="A">
<name>CBA</name>
</row>
</file>
この結果を得るために、要素を追加し、タイプで行を並べ替えたい
<file>
<id>1</id>
<details>
<row type="A">
<name>ABC</name>
</row>
<row type="A">
<name>CBA</name>
</row>
<row type="B">
<name>BCA</name>
</row>
</details>
</file>
これを使用して行を並べ替えることができます:
<xsl:template match="file">
<xsl:copy>
<xsl:apply-templates select="@*/row"/>
<xsl:apply-templates>
<xsl:sort select="@type" data-type="text"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
これを使って行を動かすことができます
<xsl:template match="file">
<xsl:copy>
<xsl:copy-of select="@*" />
<xsl:apply-templates select="*[not(name(.)='row')]" />
<details>
<xsl:apply-templates select="row" />
</details>
</xsl:copy>
</xsl:template>
しかし、それらを組み合わせようとすると、正しい答えを出すことができません。物事がどのように組み合わされているかを見ると、XSLTについてもっと理解できれば幸いです。新しい要素を作成しているので、新しい要素を作成する<details>
前に並べ替えを行う必要があると思います<details>
。xslt1.0を使用する必要があります。