XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XPath / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath 3.1: Map, xsl:map / random-number-generator
![]() |
![]() |
➪ random-number-generator() generiert eine Map, deren Schlüssel ein xs:string ist: Die zulässigen Werte dieses Schlüssels sind "number", "next" und "permute".
Auf dieser Seite:Signaturen:
random-number-generator()
as map(xs:string, item())
fn:random-number-generator(
$seed as xs:anyAtomicType?)
as map(xs:string, item())
Siehe https://www.w3.org/TR/xpath-functions-31/func-random-number-generator
Siehe map.
Der Aufruf von random-number-generator() bringt beispielsweise folgendes Ergebnis:
map {
"number": 3.091013594396578e-1,
"next": (anonymous-function)#0,
"permute": (anonymous-function)#1
}
Bei Aufruf von
declare namespace map = "http://www.w3.org/2005/xpath-functions/map";
map:for-each(random-number-generator(), function ($k, $v){$k})
... erhalten Sie dieses Ergebnis:
number
next
permute
Das Resultat:
<xsl:variable name="vngen"
as="map(xs:string, item())"
select="random-number-generator()"/>
Rufen Sie die Map-Variable vngen über den Schlüssel "number" auf,
<number>
<xsl:value-of select="map:get($vngen, 'number')"/>
</number>
so generiert das System eine Zufallszahl, die zwischen 0 und 1 liegt.
<number>0.020134109105953035</number>
Rufen Sie die map-Variable vngen über den Schlüssel permute auf und übergeben eine Zahlensequenz, z.B. 1 to 5,
<permute>
<xsl:for-each select="map:get($vngen, 'permute')(1 to 5)">
<nr>
<xsl:value-of select="."/>
</nr>
</xsl:for-each>
</permute>
so generiert das System eine zufällige Folge der vorgegebenen Zahlen.
<permute>
<nr>3</nr>
<nr>5</nr>
<nr>1</nr>
<nr>4</nr>
<nr>2</nr>
</permute>
Ähnlich können Sie auch in XQuery verfahren:
map:get(random-number-generator(19), 'permute')(1 to 5)
ergibt dann beispielsweise
5
3
4
1
2
for $w in (1 to 5) return
map:get( random-number-generator($w), 'number')
Das Ergebnis dieses XQuery-Aufrufs lautet beispielsweise:
0.00008958178688845
0.00017916355909342
0.00026874533129839
0.00035832710350336
0.00044790887570834
Alternative:
random-number-generator()?permute(1 to 5)
Resultat:
4
5
3
2
1
wg / 23. März 2020
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
ᐃ XPath
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de