12

XSLTを使用して結果をユーザーに表示するGoogle検索アプライアンスをカスタマイズしています。私たちのデザインでは、いくつかの画像の1つを結果ページにランダムに含める必要があります。XSLTでランダム性を使用する方法はありますか?(このアプリケーションでは、疑似ランダム性で問題ありません。)

乱数を生成し、それに基づいて分岐できるのと同様に、ランダムなテンプレートを呼び出すことは問題ありません。

4

5 に答える 5

5

プラットフォームに応じて、XSLではC#などのユーザーコードを挿入できます。これはお勧めしません。より良いのは、XSLにパラメーターを受け入れさせ、XMLペイロードまたはXSLTを生成しているものは何でも、パラメーターを設定して乱数を生成することもできます。データがGではなくBingからのものであることを除いて、私はこのアプローチを使用してこれを正確に実行しました。

于 2010-03-01T21:22:06.200 に答える
4

Java ベースの XSLT エンジンを使用すると、java.lang.Math.random() などの Java ライブラリ内の任意の静的メソッドを呼び出すことができます。これが構文です...

<?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>
于 2010-03-01T21:58:43.203 に答える
2

ライブラリを含めることを嫌がらない場合は、EXSLTのrandom:random-sequenceなどの多くの利用可能なものがあります

于 2010-03-01T21:22:24.853 に答える
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>
于 2014-05-28T18:59:04.810 に答える