简单排序(移到<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>
复杂排序(允许您定义任意顺序,通过参数动态或通过硬编码字符串静态):
<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>