[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: question on random numbers for browser XSLT

Subject: RE: question on random numbers for browser XSLT
From: Scott Trenda <Scott.Trenda@xxxxxxxx>
Date: Fri, 24 Jul 2009 08:48:47 -0500
RE:  question on random numbers for browser XSLT
Out of curiosity, wouldn't the Perl external-document approach be inaccurate
due to the way XSLT function results are (supposed to be) evaluated and
stored? That is, if you had this:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8" />

  <xsl:template match="/">
    <html>
      <body>
        <div>rand(6): <xsl:value-of select="document('/cgi-bin/rand.pl?6')"
/></div>
        <div>rand(6): <xsl:value-of select="document('/cgi-bin/rand.pl?6')"
/></div>
        <div>rand(6): <xsl:value-of select="document('/cgi-bin/rand.pl?6')"
/></div>
        <div>rand(6): <xsl:value-of select="document('/cgi-bin/rand.pl?6')"
/></div>
        <div>rand(6): <xsl:value-of select="document('/cgi-bin/rand.pl?6')"
/></div>
        <div>rand(6): <xsl:value-of select="document('/cgi-bin/rand.pl?6')"
/></div>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

Wouldn't that output the same result six times because (theoretically) the
XSLT processor should only have to retrieve the contents of
document('/cgi-bin/rand.pl?6') once, and just use the retrieved content for
each successive call? It is the same URI, after all, but I'm not sure just how
the gears of the big XSLT processors work in this situation.


~ Scott

-----Original Message-----
From: Hermann Stamm-Wilbrandt [mailto:STAMMW@xxxxxxxxxx]
Sent: Wednesday, July 22, 2009 7:43 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject:  question on random numbers for browser XSLT


I want random numbers in a stylesheet but I am bound to XSLT 1.0 and
not able to make use of "http://exslt.org/random" extensions because
the stylesheet should be accessed by <?xml-stylesheet ...?> in a
browser XML document.

Is there a pure XSLT solution?
(the quality of the generated random numbers is not that important)


After some playing around I found below (not pure XSLT) solution.
Important is that the PERL script lives in the same domain as the
stylesheet. You may try it out (random number "0-5") by clicking here:
http://stamm-wilbrandt.de/en/xsl-list/random/rand6.xml


$ cat rand6.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="rand6.xsl"?>
<tag/>

$ cat rand6.xsl
<xsl:stylesheet
  version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8"/>

  <xsl:template match="/">
    <xsl:variable name="rand"
      select="document('/cgi-bin/rand.pl?6')"/>
    <html><body>rand(6): <xsl:value-of select="$rand"/></body></html>:
  </xsl:template>

</xsl:stylesheet>
$

$ cat cgi-bin/rand.pl
#!/usr/bin/perl -w.

print "Content-type: text/xml\n\n";

printf("<?xml version=\"1.0\"?>\n");
printf("<rand>%d</rand>\n", rand($ARGV[0]));
printf("<!-- PERL rand(%d) -->\n",$ARGV[0]);


Mit besten Gr|_en / Best wishes,

Hermann Stamm-Wilbrandt
Developer, XML Compiler
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschdftsf|hrung: Erich Baier
Sitz der Gesellschaft: Bvblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.