Случайные объекты в XSLT

Я настраиваю устройство Google Search, которое использует XSLT для представления результатов пользователю. Наш дизайн призывает, чтобы одно из нескольких изображений было включено случайным образом на странице результатов. Существует ли способ использовать случайность в XSLT? (Псевдослучайность очень хорошо для этого приложения.)

Вызов случайных шаблонов был бы прекрасен, как будет просто способность генерировать случайное число и ответвление на основе этого.

11
задан Dimitre Novatchev 18 December 2010 в 21:08
поделиться

4 ответа

В зависимости от вашей платформы XSL позволяет вводить пользовательский код наподобие C #. Я этого не рекомендую. Лучше, если бы ваш XSL принимал параметр и все, что генерирует ваши полезные данные XML или XSLT, а также мог бы генерировать случайное число, задав параметр. Я сделал это именно так, используя этот подход, за исключением того, что данные были получены из Bing, а не G.

5
ответ дан 3 December 2019 в 06:21
поделиться

Вы можете генерировать в чистом XSLT последовательности случайных чисел, а также случайные перестановки чисел в [1 .. N].

Просто используйте для этого библиотеку FXSL (написанную на чистом XSLT).

В этой статье объясняются используемые шаблоны и приведены полные примеры:

« Игра в кости с FXSL: функции генерации случайных чисел в XSLT ».

7
ответ дан 3 December 2019 в 06:21
поделиться

Если вы не прочь включить библиотеки, есть много доступных например random: random-sequence из EXSLT

2
ответ дан 3 December 2019 в 06:21
поделиться

Если вы используете XSLT-движок на базе Java, это позволит вам делать вызовы любого статического метода из библиотек 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>
4
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: