XSLT generieren UUID
Wie kann ich das erzeugen einer UUID mit reinem XSLT? Im Grunde auf der Suche nach einem Weg, um erstellen Sie einzigartige Sequenzen mit XSLT. Die Sequenz kann beliebig lang sein.
Ich bin mit XSLT 2.0.
mögliche Duplikate von "Generieren" GUID, die in XSLT
InformationsquelleAutor Ayyoudy | 2011-11-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da XSLT ist eine funktionale Sprache, die Generierung von Zufallszahlen ist nicht Bestandteil der Sprache. Das heißt, es gibt Erweiterungs-Pakete (EXSLT) und einige Prozessoren (Saxon) , unterstützen die Erzeugung von Zufallszahlen. Wenn Sie nicht verwenden können, Erweiterungen oder sächsischen, dann glaube ich, hast du Pech.
Saxon kommt mit der EXSLT random-Modul eingebaut. Siehe saxonica.com/documentation/extensions/intro.xml
Danke. Schade, dass die eingebauten EXSLT-Module sind nicht verfügbar für die sächsischen HE (Home Edition).
Nicht wirklich viel Glück... es ist nur weniger bequem. Die meisten Zufallszahlengeneratoren in software sowieso. Also wenn die CPU-Leistung ist nicht zu einem Engpass, können Sie implementieren standard random number generation algorithmen in reiner, standard XSLT.
E. g. Braaksma ist timestamp-basierte Implementierung (stylusstudio.com/xsllist/200703/post40430.html) verwendet nur eine Erweiterung Funktion
math:power()
. Undmath:power()
umgesetzt werden (als Vorlage) mit reinen XSLT, hier: exslt.org/math/functions/power/math.power.template.xslInformationsquelleAutor Jim Garrison
Hier ein gutes Beispiel. Im Grunde richten Sie eine Erweiterung, die Punkte, um die java-UUID-Klasse, und klicken Sie dann verweisen Sie in der XSL:
xsl:value-of
nicht ein Kind vonxsl:stylesheet
...Ich habe von Ihnen positiv bewertet werden, da dies für mich gearbeitet. Jedoch, es ist erwähnenswert, dass reflexive java-Aufrufe wie dieser sind auch nicht verfügbar für die sächsischen ER Lizenzen (obwohl, wie andere bemerkt haben, es ist mehr oder weniger ein problem gelöst zu schreiben Ihre eigenen Funktionen, um es zu tun).
PS - never mind xsl:stylesheet/xsl:value-of unwirksam sein, es ist nicht einmal wohlgeformt, ohne einen schließenden xsl:stylesheet-tag 😉 - ich bin sicher, wir können alle was gemeint ist, aber!
InformationsquelleAutor Jacob Mattison
Können Sie xslt-snippet für das (Quelle: http://code.google.com/p/public-contracts-ontology/source/browse/transformers/GB-notices/uuid.xslt?r=66e1d39a1c140079a86d219df5b3e031007cc957):
Vielen Dank für das teilen. Die Quelle (öffentlich-Verträge-Ontologie) ist ein Toter link 🙁
Es ist möglich, 4 verschiedene UUID mit diesem code "<xsl:value-of select="concat(' ', uuid:get-uuid()), concat(' ', uuid:get-uuid())" /><xsl:value-of select="concat(' ', uuid:get-uuid()), concat(' ', uuid:get-uuid())" />": 23CD00A6-8952-11E6-2114-09173F13E4C5 23CD00A5-8952-11E6-2114-09173F13E4C5 23CD00A3-8952-11E6-2114-09173F13E4C5 23CD00A4-8952-11E6-2114-09173F13E4C5
Aber mit "<xsl:for-each...", es beginnt immer mit der gleichen UUID. E. g. "<xsl:for-each select="Test"><xsl:value-of ... /></xsl:for-each - >": 382967A6-8952-11E6-2114-09173F13E4C5 382967A5-8952-11E6-2114-09173F13E4C5 382967A3-8952-11E6-2114-09173F13E4C5 382967A4-8952-11E6-2114-09173F13E4C5 382967A6-8952-11E6-2114-09173F13E4C5 382967A5-8952-11E6-2114-09173F13E4C5 382967A3-8952-11E6-2114-09173F13E4C5 382967A4-8952-11E6-2114-09173F13E4C5 eine Idee, wie man neue UUIDs mit "xls:for-each"?
InformationsquelleAutor Mikel Vysotsky
Werfen Sie einen Blick auf eine andere Frage Generieren der GUID in XSLT.
Wahrscheinlich diese Artikel wird Ihnen helfen, - es definiert die XSLT-Funktionen zum generieren der GUID
InformationsquelleAutor Vitaliy
Zum erzeugen von Zufallszahlen in XSLT, siehe Gießen Sie die Würfel mit FXSL: Random Number Generation-Funktionen in XSLT. Die einzige Erweiterung-Funktion verwendet wird, ist node-set(), das ist nicht mehr erforderlich, in XSLT 2.0.
Auch, wenn die Anforderung ist nur, dass die IDs eindeutig sein (nicht unbedingt zufällig), werfen Sie einen Blick auf wie generieren Sie eindeutige Zeichenfolge. Wenn Sie zum Beispiel bei der Generierung einer UUID für jedes element des Eingabe-XML-Dokuments, können Sie eine Kombination aus der URL des input-Dokuments, und
<xsl:number>
zu generieren, die eine eindeutige Zeichenfolge für jedes element.InformationsquelleAutor LarsH
Wenn mit
.Net
'sXslCompiledTransform
für die Transformation von XSL können Sie dieEnableScripts
Eigenschafttrue
, dann verwenden Sie code wie unten:NB: ich habe diese custom-Funktionen den Namen/Präfix
csharp
in die oben genannten; aber Sie können es nennen, was Sie wollen.Nähere Informationen zum aktivieren von Skripts finden Sie unter https://stackoverflow.com/a/1873265/361842.
Vollständige XSLT-Datei unten, um einige zusätzliche Kontext:
InformationsquelleAutor JohnLBevan