Сортировка XSL только на одном узле - PullRequest
3 голосов
/ 14 июля 2011

Я использую следующий XSLT, но порядок узлов после сортировки представляет для меня небольшую проблему, так как они не следуют тому же порядку, что и при вводе.

enter code here

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="Types">
            <xsl:sort select="Type1"/>
        </xsl:apply-templates>
        <xsl:apply-templates select="SecondTypes">
            <xsl:sort select="Type1"/>
        </xsl:apply-templates>        
        <xsl:apply-templates select="ServiceOption">
            <xsl:sort select="Issue"/>
        </xsl:apply-templates>    
        <xsl:apply-templates select="ServiceConcession">
            <xsl:sort select="Concession" data-type="number"/>
        </xsl:apply-templates>                                
        <xsl:apply-templates select="node()[not(self::Types|self::SecondTypes|self::ServiceOption|self::ServiceConcession)]|@*"/>
    </xsl:copy>
</xsl:template>

1 Ответ

2 голосов
/ 14 июля 2011

Просто измените преобразование идентичности, чтобы сортировка применялась только к нужным узлам:

<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="Types">
                <xsl:sort select="Type1"/>
            </xsl:apply-templates>
            <xsl:apply-templates select="node()[not(self::Types)]|@*"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...