xsl-list
[Top] [All Lists]

Re: [xsl] Random selection

2008-11-30 11:39:27
If you are working in Java environment, you could use the Java class
'Random' for random number support.

(http://java.sun.com/javase/6/docs/api/java/util/Random.html).

Supposing your input XML is (this is just an example for illustration.
your real XML could be different.):

<images>
  <image val="a.jpg" />
  <image val="b.jpg" />
  <image val="c.jpg" />
  <image val="d.jpg" />
  <image val="e.jpg" />
  <image val="f.jpg" />
</images>

The stylesheet could be:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                       xmlns:java="http://xml.apache.org/xalan/java";
                       exclude-result-prefixes="java"
                       version="1.0">
                
  <xsl:output method="html" />

  <xsl:template match="/">
    <xsl:variable name="max" select="count(images/image)" />
    <xsl:variable name="random" select="java:java.util.Random.new()"/>
    <xsl:variable name="x" select="java:nextInt($random, $max) + 1" />
<!-- this is the random number -->
    <html>
      <head>
        <title/>
      </head>
      <body>
        <img src="{images/image[$x]/@val}" />
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

Here I have used the Java extension mechanism provided by Xalan.

On Sun, Nov 30, 2008 at 8:43 PM, sudheshna iyer 
<sudheshnaiyer(_at_)yahoo(_dot_)com> wrote:
Here is the more clear explanation of what I am looking for:

I need to select an image from pool of images randomly and produce <img src> 
element of html.

This xsl should read the image tags from xml and based on the number of image 
tag nodes in the xml, it
should display random image by producing <img src> element of html.

Thank you for your help.



-- 
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>