I was wondering about this requirement a few days ago, as it happens.
One approach might be to add an extra "method" to the object returned by
fn:random-number-generator.
If you don't like extension functions then an alternative now we have
first-class functions is to construct an XDM function object in the calling
application and pass it in to the stylesheet as a global stylesheet parameter.
The function in this case might be a function that takes a random xs:double and
delivers a random UUID. You could then call this function supplying random
numbers generated using fn:random-number-generator.
To construct your own XDM function object in the calling application, implement
net.sf.saxon.expr.Callable and wrap your implementation in a s9api
XdmFunctionItem.
Michael Kay
Saxonica
On 10 Nov 2020, at 16:36, Piez, Wendell A. (Fed)
wendell(_dot_)piez(_at_)nist(_dot_)gov
<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
EasyUnsubscribe (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
--~--