Re: [xsl] Random UUID in pure XSLT?
2020-11-11 16:35:56
I don't know how FP purists model this, but it seems to me that the content of
a web page is a function of two things: the URL, and the time. So probably we
should be treating unparsed-text() as if there is an implicit parameter
timestamp() which is potentially different on each call; though since order of
execution is unpredictable, forcing the calls to happen at different times
still requires some sleight-of-hand.
Where are the theorists when we need them?
Michael Kay
Saxonica
On 11 Nov 2020, at 22:03, Dimitre Novatchev dnovatchev(_at_)gmail(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
According to the spec, unparsed-text() is deterministic, which means that
two calls with the same argument should return the same result. You're
relying on a Saxon non-conformance, I fear!
It seems to me that tagging the function unparsed-text() as "deterministic"
was rather inaccurate... And definitely not useful, if we need hacks as
workarounds for its limitations...
Generally, determinism can have meaning within a closed system, the system of
Internet Http resources is an open one.
Thus, the Saxon non-conformance for me is a feature, not a bug!
Cheers,
Dimitre
According to the spec, unparsed-text() is deterministic, which means that two
calls with the same argument should return the same result. You're relying on
a Saxon non-conformance, I fear!
Except that if you make the call in a loop, Saxon will probably loop-lift it,
thus becoming conformant and making your code deliver a stream of identical
UUIDs.
You can probably get round it by using
unparsed-text("https://uuidgen.org/api/v/4 <https://uuidgen.org/api/v/4>?x="
|| position())
Michael Kay
Saxonica
On 11 Nov 2020, at 18:32, Dimitre Novatchev dnovatchev(_at_)gmail(_dot_)com
<mailto:dnovatchev(_at_)gmail(_dot_)com>
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com
<mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> wrote:
how can I go about producing random UUIDs, in dozens or hundreds, inside
an XSLT pipeline, without extension functions in Saxon.
This is actually very easy and doesn't require the use of any extension
functions:
unparsed-text("https://uuidgen.org/api/v/4 <https://uuidgen.org/api/v/4>")
or if you need N of them:
for $i in 1 to $N
return unparsed-text("https://uuidgen.org/api/v/4
<https://uuidgen.org/api/v/4>")
😆
HTH, Dimitre
On Tue, Nov 10, 2020 at 8:36 AM Piez, Wendell A. (Fed)
wendell(_dot_)piez(_at_)nist(_dot_)gov
<mailto:wendell(_dot_)piez(_at_)nist(_dot_)gov>
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com
<mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> wrote:
XSL Friends –
Today I write from the day job, where I am researching the question of how
can I go about producing random UUIDs, in dozens or hundreds, inside an XSLT
pipeline, without extension functions in Saxon. The Java randomUUID()
function works nicely when it’s available, but I need to distribute the
capability for SaxonHE and eventually SaxonJS.
We do not have an available implementation of RFC 4122 v4 “random UUID” in
pure XSLT do we, free to use (and study)? I know the functional nature of
the language makes randomness, um, problematic (when isn’t it?), which
sometimes means workarounds – that’s all fine. Indeed so would calling out
to a web service if it is known to be reliable. I have thought about handing
a list of UUIDs in at runtime, but as I said, there may sometimes be
hundreds and perhaps thousands, which makes that approach seem a bit scary.
Any thoughts or perspective would be most welcome.
Thanks, Wendell
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/782854> (by
email <>)
--
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
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/782854> (by
email <applewebdata://32C52F63-859D-4937-891F-5A246FB7D1EA>)
--
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
-------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all
------------------------------------
Quality means doing it right when no one is looking.
-------------------------------------
You've achieved success in your field when you don't know whether what you're
doing is work or play
-------------------------------------
To achieve the impossible dream, try going to sleep.
-------------------------------------
Facts do not cease to exist because they are ignored.
-------------------------------------
Typing monkeys will write all Shakespeare's works in 200yrs.Will they write
all patents, too? :)
-------------------------------------
Sanity is madness put to good use.
-------------------------------------
I finally figured out the only reason to be alive is to enjoy it.
XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- Re: [xsl] Random UUID in pure XSLT?, (continued)
Re: [xsl] Random UUID in pure XSLT?, Dimitre Novatchev dnovatchev(_at_)gmail(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, Norm Tovey-Walsh ndw(_at_)nwalsh(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, Christophe Marchand cmarchand(_at_)oxiane(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, Dave Pawson dave(_dot_)pawson(_at_)gmail(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, Liam R. E. Quin liam(_at_)fromoldbooks(_dot_)org
Re: [xsl] Random UUID in pure XSLT?, Norm Tovey-Walsh ndw(_at_)nwalsh(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, Dimitre Novatchev dnovatchev(_at_)gmail(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, David Carlisle d(_dot_)p(_dot_)carlisle(_at_)gmail(_dot_)com
Re: [xsl] Random UUID in pure XSLT?, Norm Tovey-Walsh ndw(_at_)nwalsh(_dot_)com
|
|
|