2011-07-07 78 views
0

我想知道,是否有任何方法可以在XSLT 1.0中進行隨機排序?在xslt 1.0中隨機排序?

這裏是我的XML

<root><DO status="a">text comes here</DO><DO status="b">text comes here</DO><DO status="c">text comes here</DO><DO status="d">text comes here</DO><DO status="e">text comes here</DO></root> 

所需的輸出:

<root><DO status="c">text</DO><DO status="a">text comes here</DO><DO status="b">text comes here</DO><DO status="e">text comes here</DO><DO status="d">text comes here</DO></root> 

希望我的問題是清楚了嗎?

在此先感謝

回答

1

我想知道,有沒有辦法做到隨機排序在XSLT 1.0嗎?

香草XSLT 1.0 - 第

你可以使用一個擴展來訪問外部語言的隨機數發生器,並將該功能爲xsl:sort。例如,使用msxsl擴展訪問Windows腳本語言:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
    xmlns:my="http://tempuri.org/myscripts" 
    exclude-result-prefixes="msxsl my" 
> 

    <msxsl:script language="JScript" implements-prefix="my"> 
    function random() { 
     return Math.random(); 
    } 
    </msxsl:script> 

    <xsl:template match="root"> 
    <xsl:for-each select="DO"> 
     <xsl:sort select="my:random()" data-type="number" /> 
     <xsl:copy-of select="." /> 
    </xsl:for-each> 
    </xsl:template> 

</xsl:stylesheet> 
0

您可以使用XSLT generate-id() function返回唯一標識文檔中的一個節點的字符串。按照說明書中:

的實現可以自由地生成 以任何方便的方式 的標識符,只要它總是產生同節點和 相同標識符 不同標識符總是從不同的節點產生 。 實現沒有義務 生成相同的標識符,每個 時間文檔被轉換。 不能保證生成的 唯一標識符將與 源文檔中指定的任何唯一標識不同 。

所以它取決於你的XSLT處理器。