Subject: Re: [xsl] Re: question on random numbers for browser XSLT From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Fri, 24 Jul 2009 16:06:51 -0700 |
Hermann, > Now these values look different for different browsers, and need to > "somehow" > be converted to a seed value for FXSLs random generator. > > Ideas? You could try something simple as the following: sum(string-to-codepoints($pId)) mod 65536 and see that the results' variety is satisfactory. -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play On Fri, Jul 24, 2009 at 3:28 PM, Hermann Stamm-Wilbrandt<STAMMW@xxxxxxxxxx> wrote: > Dimitre, > >> > If you have decided to go with a service providing random numbers then >> > xslt-ish way (set based) to do it would be a service receiving a number > and >> > returning an xml with a specified number of random numbers. >> > >> >> Using a service to provide a random sequence is much more unreliable >> and inefficient than just doing this in pure XSLT, as this has been >> done by FXSL for many years: >> >> > http://fxsl.sourceforge.net/articles/Random/Casting%20the%20Dice%20with%20FXS L-htm.htm > > first of all, FXSL is a cool library and the documentation at the link is > informative. > > I tried fxsl-1.2 and installed these necessary files on my webserver: > curry.xsl B iter.xsl B map.xsl B random.xsl B test-random.xsl > > First I realized that it did work on FF3 and not on FF2 (because of the > missing > support of exslt:node-set there). Then I tried it on IE6 and it did not > work first. > After applying below patch it worked under IE6, too. > You may try it out here: > http://www.stamm-wilbrandt.de/en/xsl-list/random/fxsl-1.2/test-random.xml > > The output is the same as generated by eg. "xsltproc test-random.xsl > some.xml", but > it is ALWAYS THE SAME output (try it repeatedly). > > I knew of the different techniques in generating pseudo random numbers but > what > is really needed is to be able to provide a changing seed (eg. initialize > with > the number of seconds since 1/1/1970, time(NULL) in C). > > Then I remembered the generate-id use of Scott, and after reading Michaels > last > post the following fragment seems to be an always changing value: > http://www.stamm-wilbrandt.de/en/xsl-list/random/scott.xml > > B B B B <xsl:variable name="seed"><a/></xsl:variable> > B B B B <xsl:value-of select="generate-id(exsl:node-set($seed))" /> > > Now these values look different for different browsers, and need to > "somehow" > be converted to a seed value for FXSLs random generator. > > Ideas? > > > ============================================================================= > from "http://dpcarlisle.blogspot.com/2007/05/exslt-node-set-function.html" > $ diff random.xsl.orig random.xsl > 20c20,21 > < B exclude-result-prefixes="xsl ext randScale myRandNext > mySingleRandDistFun x" > --- >> B xmlns:msxsl="urn:schemas-microsoft-com:xslt" >> B exclude-result-prefixes="xsl ext msxsl randScale myRandNext > mySingleRandDistFun x". > 30a32,36 >> B <msxsl:script language="JScript" implements-prefix="ext"> >> B B this['node-set'] = B function (x) { >> B B B return x; >> B B } >> B </msxsl:script> > $ > > > > Mit besten GrC<Cen / Best wishes, > > Hermann Stamm-Wilbrandt > Developer, XML Compiler > WebSphere DataPower SOA Appliances > ---------------------------------------------------------------------- > IBM Deutschland Research & Development GmbH > Vorsitzender des Aufsichtsrats: Martin Jetter > GeschC$ftsfC<hrung: Erich Baier > Sitz der Gesellschaft: BC6blingen > Registergericht: Amtsgericht Stuttgart, HRB 243294 > > > > B B B B B B Dimitre Novatchev > B B B B B B <dnovatchev@gmail > B B B B B B .com> B B B B B B B B B B B B B B B B B B B B B B B B B B B To > B B B B B B B B B B B B B B B B B B B xsl-list@xxxxxxxxxxxxxxxxxxxxxx > B B B B B B 07/24/2009 11:00 B B B B B B B B B B B B B B B B B B B B B cc > B B B B B B PM > B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B Subject > B B B B B B B B B B B B B B B B B B B Re: [xsl] Re: question on random > B B B B B B Please respond to B B B B numbers for browser XSLT > B B B B B B xsl-list@xxxxxxxx > B B B B B B B lberrytech.com > > > > > > > > >> If you have decided to go with a service providing random numbers then >> xslt-ish way (set based) to do it would be a service receiving a number > and >> returning an xml with a specified number of random numbers. >> > > Using a service to provide a random sequence is much more unreliable > and inefficient than just doing this in pure XSLT, as this has been > done by FXSL for many years: > > > http://fxsl.sourceforge.net/articles/Random/Casting%20the%20Dice%20with%20FXS L-htm.htm > > > > -- > Cheers, > Dimitre Novatchev > --------------------------------------- > Truly great madness cannot be achieved without significant intelligence. > --------------------------------------- > To invent, you need a good imagination and a pile of junk > ------------------------------------- > Never fight an inanimate object > ------------------------------------- > You've achieved success in your field when you don't know whether what > you're doing is work or play > > > > On Fri, Jul 24, 2009 at 1:48 PM, Vladimir > Nesterovsky<vladimir@xxxxxxxxxxxxxxxxxxxx> wrote: >> If you have decided to go with a service providing random numbers then >> xslt-ish way (set based) to do it would be a service receiving a number > and >> returning an xml with a specified number of random numbers. >> -- >> Vladimir Nesterovsky >> http://www.nesterovsky-bros.com/ >> >> >>> To Ben: >>> The cache-append idea was my first thought, but I couldn't think of a >> >> good >>> >>> way to pull together how to have each request be unique. It's possible >>> using node-set(), though: >>> ... >>> ... >>> B B <xsl:choose> >>> B B B <xsl:when test="function-available('exsl:node-set')"> >>> B B B B <xsl:value-of select="document(concat('/cgi-bin/rand.pl?', >> >> $scale, >>> >>> '&x=', generate-id(exsl:node-set($seed))))" /> >>> B B B </xsl:when> >>> B B B <xsl:when test="function-available('msxsl:node-set')"> >>> B B B B <xsl:value-of select="document(concat('/cgi-bin/rand.pl?', >> >> $scale, >>> >>> '&x=', generate-id(msxsl:node-set($seed))))" /> >>> B B B </xsl:when> >>> ... >> >> I tried your solution and after replacing '&x=' with '+' it directly >> worked on my local web server! >> (I did not know that generate-id works in a browser) >> >> But as already posted it did not work after installed on my real > webserver >> because that does not have enough power to handle the six document opens. >> >> Btw, I really like the solution of David Carlisle to provide > exslt:node-set >> for IE browsers (and not having to deal with exslt/msxml): >> http://dpcarlisle.blogspot.com/2007/05/exslt-node-set-function.html > > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Re: question on random nu, Hermann Stamm-Wilbra | Thread | Re: [xsl] Re: question on random nu, Dimitre Novatchev |
Re: [xsl] Re: question on random nu, Hermann Stamm-Wilbra | Date | Re: [xsl] Re: question on random nu, Dimitre Novatchev |
Month |