XSLT中的随机项目

时间:2010-03-01 21:16:43

标签: xslt random fxsl

我正在自定义Google Search设备,该设备使用XSLT向用户展示结果。我们的设计要求在结果页面上随机包含多个图像之一。有没有办法在XSLT中使用随机性? (伪随机性适用于此应用程序。)

调用随机模板就行了,因为只能生成随机数和分支。

5 个答案:

答案 0 :(得分:7)

您可以使用随机数的纯XSLT序列生成,也可以在[1 .. N]中生成数字的随机排列。

只需使用FXSL library(用纯XSLT编写)就可以了。

本文介绍了要使用的模板,并提供了完整的示例:

Casting the Dice with FXSL: Random Number Generation Functions in XSLT”。

答案 1 :(得分:5)

根据您的平台,XSL允许注入像C#这样的用户代码。我不推荐这个。更好的是,我希望你的XSL接受一个参数以及生成XML有效负载或XSLT的任何内容,并且还可以生成随机数,设置参数。我完全使用这种方法完成了这个,除了数据来自Bing,而不是G。

答案 2 :(得分:4)

如果使用基于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>

答案 3 :(得分:2)

如果您不反对包含图书馆,可以使用许多图书馆,例如random:random-sequence from EXSLT

答案 4 :(得分:1)

如果您正在为Microsoft的任何事情做这件事,我发现使用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>