0

私はまだ多くの XSLT を理解するのに苦労していますが、具体的な質問があります。

属性 (名前) で並べ替えたい単純なネストされた構造があります。

このファイルには、1 つのルート ノードと一連のネストされたノードがあります。ルートの下のすべてのノードをレベル内でソートする必要があります。階層は、指定されていないレベルにネストされています。

入力:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <node name="A">
    <node name="C"/>
    <node name="B"/>
  </node>
  <node name="F"/>
  <node name="E"/>
</root>

次のように変換する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <node name="A">
    <node name="B"/>
    <node name="C"/>
  </node>
  <node name="E"/>
  <node name="F"/>
</root>

これを解決するための私の実行可能な試みであなたを退屈させるつもりはありません.

4

2 に答える 2

0

この回答はTim Cの回答に似ていますが、恒等変換を使用しているだけxsl:sortです. こうすることで、コメントや処理命令が存在する場合でもそれらを失うことはありません。

XSLT1.0

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()">
                <xsl:sort select="@name"/>
            </xsl:apply-templates>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>
于 2013-10-24T01:43:42.597 に答える