我正在自定义一个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