Random XML record

Status
Niet open voor verdere reacties.

mjvis

Gebruiker
Lid geworden
29 apr 2009
Berichten
17
Hallo,

Uit een XML lijst wil ik de waarde uit een veld van een random geselecteerd record tonen.
XSL heeft zelf geen random functie dus daarvoor gebruik ik Javascript.

Het lukt me om met een XSL variable een random getal te krijgen, maar ik kan vervolgens dat getal niet gebruiken om een XML record te selecteren.

Mijn XSL bestand ziet er als volgt uit:
-------
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">

aantal records bepalen
<xsl:variable name="aantal" select="count(/quotelist/quotes)+1"/>

een random getal genereren tussen 1 en aantal records
<script language="javascript" type="text/javascript">document.write(Math.floor(Math.random()*<xsl:value-of select="$aantal"/>));</script>

<table border="0">
<xsl:for-each select='quotelist/quotes[hier moet iets komen om het random record te selecteren]'>
<tr valign="middle">
<td style='width:18px; height:"18px"'>
<xsl:if test='picture!=""'>
<img src="{picture}" alt="" height="16" width="16" />
</xsl:if>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
--------

Kan iemand mij verder helpen?
 
Javascript variabelen naar XSL

Laat ik mijn vraag wat ver-algemenen. Wat ik wil is eigenlijk het volgende:

Ik heb een XSL variabele "aantal" dat het aantal nodes bepaald uit een XML lijst.
<xsl:variable name="aantal" select="count(/quotelist/quotes)"/>

Ik wil terug een willekeurig getal tussen 1 en "aantal". XSL kent hiervoor geen functie. Javascript wel, namelijk Math.random().
<script language="javascript" type="text/javascript">
...
... = Math.floor(Math.random()*<xsl:value-of select="$aantal"/>+1
...
</script>


Hoe ziet dit javascript er verder uit en hoe krijg ik die waarde weer terug in XSL?
 
oplossing

Ik heb het opgelost met HTML/Java:

-----
<html>
<head>
<script language="javascript">
function SetNodeID(AantalNodes)
{
SetNode = Math.floor(Math.random()*AantalNodes);
SetPicture = "Quote"+SetNode+".jpg";
return SetPicture;
}
</script>
</head>

<body>
<p align="center">
<script language="javascript">
document.write('<img src="'+SetNodeID(97)+'" width="200" height="100"/>');
</script>
</p>
</body>
</html>
----

Heeft echter nog 1 nadeel. Ik had de info graag gehaald uit een XML lijst. Nu moet ik de url en aantal items handmatig in de broncode opnemen. Maar het werkt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan