11
votes

Articles aléatoires dans XSLT

Je personnifie un appliance de recherche Google, qui utilise XSLT pour présenter les résultats à l'utilisateur. Notre conception appelle à l'une des nombreuses images à inclure au hasard sur la page de résultats. Y a-t-il un moyen d'utiliser le hasard dans XSLT? (La pseudo-aléatoire est une bonne amende pour cette application.)

appeler des modèles aléatoires irait bien, comme cela pourrait simplement générer un nombre aléatoire et une branche basé sur cela.


2 commentaires

Étant donné que l'appareil de recherche ne semble être intéressé par XSLT 1.0, j'ai décidé d'utiliser la longueur de la chaîne de recherche pour déterminer quelle image est affichée. Ainsi, j'utilise quelque chose comme ceci pour obtenir une plage de numéros 0-3:


+1, bon et pratique de travail dans les circonstances. J'allais écrire quelque chose de semblable comme une réponse avant de lire ceci.


5 Réponses :


5
votes

Selon votre plate-forme XSL permet d'injecter du code utilisateur comme c #. Je ne recommande pas ça. Mieux vaut que votre XSL accepterait un paramètre et tout ce qui générera votre charge utile XML ou XSLT et peut également générer le nombre aléatoire, régler le paramètre. Je l'ai fait exactement en utilisant cette approche, à l'exception des données provenant de Bing, pas g.


2 commentaires

Comment avez-vous convaincu Bing de vous envoyer un nombre aléatoire? Ou avez-vous juste pris une chaîne de requête ou quelque chose et le traiter pour en avoir un numéro? Pour autant que je sache, je n'ai pas beaucoup de contrôle sur la charge utile XML que les appliances de recherche génèrent.


Le hasard est généré par l'appelant de l'API Bing et le nombre aléatoire transmis sous forme de paramètre. Bing vous donne XML. Vous avez un XSLT qui accepte les paramètres. Simplement amener l'acheteur et le vendeur ensemble.



2
votes

Si vous n'êtes pas opposé à inclure des bibliothèques, il existe de nombreuses personnes disponibles telles que Random: séquence aléatoire d'EXSLT


2 commentaires

Impossible de voir à l'aide d'une bibliothèque qui implémente aléatoire () lorsque vous y disposez d'un accès direct via l'environnement d'exécution.


@dacracot - Mais le OP n'a pas accès direct à celui-ci via l'heure d'exécution EnvT.



4
votes

Si vous utilisez un moteur XSLT basé sur Java, cela vous permettra de passer des appels à une méthode statique dans les bibliothèques Java, telles que Java.Lang.Math.Random (). Voici la syntaxe ...

<?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 commentaires

PS - Il doit être XSL version 1.1 ou plus.


Trick cool! Malheureusement, l'appareil de recherche ne semble que XSLT V1.0. Les rats!


Non disponible sous Saxon il, malheureusement. Aurait été trop beau pour être vrai.



8
votes

Vous pouvez générer des séquences de nombres aléatoires PURE XSLT et des permutations aléatoires des nombres dans [1 .. N].

Il suffit d'utiliser le bibliothèque FXSL (écrit en pure xslt) pour cela. < / p>

Cet article explique les modèles à utiliser et dispose d'exemples complets:

" jetter les dés avec FXSL: fonctions de génération de nombres aléatoires dans XSLT ".


0 commentaires

1
votes

Si vous le faites pour quelque chose de Microsoft, j'ai trouvé que l'utilisation de la fonction XSLT DDWRT: fonctionne aléatoire.

J'utilise ce qui suit pour créer le nombre aléatoire xxx

et ce qui suit pour présenter xxx


0 commentaires