1
ノードの順序があり、指定された順序に従ってXMLのノードを並べ替える必要があります。入力はXMLファイルであり、指定されたリストに従ってノードが順序付けられたXMLファイルが出力されます。XSLTを使用してXMLのノードを並べ替える方法
XML:
<root>
<M node="C" home="zzz"/>
<X name="A"/>
<Z/>
<Y test="B"/>
</root>
XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pSortingValues" select="'Y,X,Z,M,N'"/>
<xsl:variable name="vSortingValues" select=
"concat(',', $pSortingValues, ',')"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*">
<xsl:sort data-type="number" select=
"string-length(substring-before($vSortingValues,concat(',',name,',')))"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
受け取った出力:
<root>
<M node="C" home="zzz"/>
<X name="A"/>
<Z/>
<Y test="B"/>
</root>
所望の出力:
<root>
<Y test="B"/>
<X name="A"/>
<Z/>
<M node="C" home="zzz"/>
</root>
上記のXSLTは現在、ノードの必要な順序でソートせずにXMLを解析します:'Y,X,Z,M,N'
。