我正在自定義一個Google搜索設備,該設備使用XSLT向用戶呈現結果。我們的設計要求將幾個圖像之一隨機包含在結果頁面上。有沒有在XSLT中使用隨機性的方法? (僞隨機性對於這個應用程序來說是很好的。)XSLT中的隨機項目
調用隨機模板會很好,就像剛纔能夠生成一個隨機數和基於此的分支一樣。
我正在自定義一個Google搜索設備,該設備使用XSLT向用戶呈現結果。我們的設計要求將幾個圖像之一隨機包含在結果頁面上。有沒有在XSLT中使用隨機性的方法? (僞隨機性對於這個應用程序來說是很好的。)XSLT中的隨機項目
調用隨機模板會很好,就像剛纔能夠生成一個隨機數和基於此的分支一樣。
根據您的平臺,XSL允許注入像C#這樣的用戶代碼。我不推薦這個。更好的是,我會讓你的XSL接受一個參數,並且生成你的XML負載或XSLT,並且還可以生成隨機數,設置參數。我正是使用這種方法只是將數據從兵,不是G.
你是如何說服Bing向你發送一個隨機數的?或者你只是拿一個查詢字符串或其他東西,並處理它來獲得一個數字?據我所知,我無法控制Search Appliance生成的XML有效負載。 – 2010-03-01 21:47:54
隨機性是由API API調用者和隨機數作爲參數傳遞生成的。 Bing爲您提供XML。你有一個接受參數的XSLT。僅僅把買賣雙方放在一起。 – 2010-03-01 23:42:35
來到如果你不反對包括圖書館這樣做,有許多可用的,如random:random-sequence from EXSLT
如果您使用一個基於Java的XSLT引擎,這將允許您調用Java庫中的任何靜態方法,例如java.lang.Math.random()。下面是語法...
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:math="java.lang.Math"
version='1.1'>
<xsl:template match="/">
<xsl:variable name="myRandom" select="math:random()"/>
<xsl:value-of select="$myRandom"/>
</xsl:template>
</xsl:stylesheet>
PS - 它必須是XSL 1.1或更高版本。 – dacracot 2010-03-01 21:59:34
酷招!不幸的是,Search Appliance只對XSLT v1.0感興趣。老鼠! – 2010-03-01 22:14:23
不幸的是,在Saxon HE下不可用。本來是太好了,不可能是真的。 – 2013-06-11 07:44:04
可以在隨機數的純XSLT序列以及數字的隨機置換在[1 ... N]生成。
只需使用FXSL library(用純XSLT編寫)即可。
本文介紹使用的模板,並擁有完整的例子:
「Casting the Dice with FXSL: Random Number Generation Functions in XSLT」。
如果你對微軟做的任何事情,我發現使用XSLT的函數ddwrt:Random可行。
我使用以下方法來創建隨機數
<xsl:variable name="RowCount" select="count($Rows)" />
<xsl:variable name="RandomNumber" select="ddwrt:Random(1, $RowCount)" />
,並提出
<xsl:for-each select="$Rows[position() = $RandomNumber]">
<xsl:value-of select="@Title" /></xsl:for-each>
由於Search Appliance似乎只熱衷於XSLT 1.0以下,我決定去與使用長度的搜索字符串來確定顯示哪個圖像。因此,我正在使用類似這樣的方式來獲得0-3的數字範圍: –
2010-03-01 22:17:03
+1,好和實用在這種情況下進行變通。在我讀這本書之前,我會寫一些類似的答案。 – Tomalak 2010-03-02 13:26:57