簡単な順序付け (<searfchpage>
一番上に移動し、残りの子を元の順序に保ちます):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="home">
<xsl:copy>
<xsl:apply-templates select="@*" />
<xsl:apply-templates select="searfchpage" />
<xsl:apply-templates select="*[not(self::searfchpage)]" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
複雑な順序付け (param を介して動的に、またはハードコードされた文字列を介して静的に、任意の順序を定義できます):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="sortOrder" select="'searfchpage,standardpage,otherpage'" />
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
<xsl:template match="home">
<xsl:copy>
<xsl:apply-templates select="@*">
<xsl:apply-templates select="*">
<xsl:sort select="string-length(
substring-before(concat($sortOrder, ',', name()), name())
)" />
<xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>