2012-04-24 38 views

回答

1

是,只要傳遞到變換排序順序和數據類型作爲參數

下面是一個簡單的例子:

<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="pSortField" select="'age'"/> 
<xsl:param name="pSortOrder" select="'descending'"/> 
<xsl:param name="pSortDataType" select="'number'"/> 

<xsl:template match="/*"> 
    <xsl:copy> 
     <xsl:for-each select="*"> 
     <xsl:sort select="*[name()=$pSortField]" 
        order="{$pSortOrder}" data-type="{$pSortDataType}"/> 
     <xsl:copy-of select="."/> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 
</xsl:stylesheet> 

當在下面的XML應用該變換文件:

<people> 
    <person> 
    <age>15</age> 
    <name>Anna</name> 
    </person> 
    <person> 
    <age>22</age> 
    <name>Kim</name> 
    </person> 
    <person> 
    <age>31</age> 
    <name>Harry</name> 
    </person> 
    <person> 
    <age>27</age> 
    <name>Peter</name> 
    </person> 
</people> 

的想要的,正確的結果產生(按年齡降序排列的號碼的所有元素person):

<people> 
    <person> 
     <age>31</age> 
     <name>Harry</name> 
    </person> 
    <person> 
     <age>27</age> 
     <name>Peter</name> 
    </person> 
    <person> 
     <age>22</age> 
     <name>Kim</name> 
    </person> 
    <person> 
     <age>15</age> 
     <name>Anna</name> 
    </person> 
</people> 

只要改變參數和其他排序結果的值會產生

使用這些參數

<xsl:param name="pSortField" select="'name'"/> 
<xsl:param name="pSortOrder" select="'ascending'"/> 
<xsl:param name="pSortDataType" select="'text'"/> 

現在的結果是

<people> 
    <person> 
     <age>15</age> 
     <name>Anna</name> 
    </person> 
    <person> 
     <age>31</age> 
     <name>Harry</name> 
    </person> 
    <person> 
     <age>22</age> 
     <name>Kim</name> 
    </person> 
    <person> 
     <age>27</age> 
     <name>Peter</name> 
    </person> 
</people> 
相關問題