XSLT-für jeden Buchstaben in einem string
Schreibe ich eine XSLT-transformation (für XSL-FO) und die Notwendigkeit, etwas zu wiederholen, für jeden Buchstaben in einen string-Wert, zum Beispiel:
Wenn der string gespeichert ist, in MyData/MyValue
string (z.B. MyData.MyValue = "etwas") ich benötige eine for-each-Beispiel:
<xsl:for-each select="MyData/MyValue"> <!-- What goes here to iterate through letters? -->
<someTags>
<xsl:value-of select="Letter" /> <!-- What goes here to output current letter? -->
</someTags>
</xsl:for-each>
Irgendwelche Ideen?
- Ich denke, dass die XSLT-version Anzeige relevant ist.
- ja, du hast absolut Recht, ich mache es in .net framework, es ist also v1
- Eigentlich ist dies eine doppelte: XSLT 1.0 : Iterieren über Zeichen in einem string
- die Frage ist eine doppelte, nicht die Antworten :). Ich denke, @veljkoz annehmen sollte, dass er Sie verwenden werden, endlich.
- Wow, sehr freundliche xslt-community hier SO 🙂 Danke an alle die so viel, jede Antwort geholfen, aber das ist die, die ich verwenden werde, so ich habe das als Antwort... aber alle du hast +1 von mir 😉 nochmal danke! Und danke für die Verlinkung auf die gleiche Frage verschiedene Antworten hier, aber, nicht schlecht, mehr 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
könnte man eine call-template und Parameter übergeben, dann verwenden Sie die Rekursion aufrufen, um die Vorlage, bis es keine verbleibenden Zeichen.
Beispiel Hinzugefügt unten.
auf diese xml -
- und das xslt -
dann werden Sie in der Lage zu manipulieren, in der if-Anweisung noch weitere Sachen!
Können Sie versuchen, diese Schmutz-hässlicher hack, der schon bewiesen hat, funktioniert immer wieder:
Dies funktioniert, wenn
//*
mit mehr Knoten als die Anzahl der Zeichen im string... natürlich würde dies auch verdienen die ungerade Zeile-Kommentar für den Armen Kerl lese dein code hinterher... 😉Hinweis: ich weiß, es sind XSLT-Puristen da draußen. Aber wenn Sie brauchen, um den job zu erledigen und kümmern sich nicht viel über den hyper-Ausführlichkeit von XSLT -, dann manchmal diese tricks sind genial! IMO
Beachten Sie auch: ich hob eine performance-Frage ist hier, um zu sehen, ob die iteration oder Rekursion führt besser: XSLT-iteration oder Rekursion Leistung
Ich bin mir nicht sicher über die Machbarkeit der iteration. Sie können Rekursion obsviously, wie gezeigt, in anderen Antworten. Dies ist mein Vorschlag (nicht viel anders als die anderen, neben der Tatsache, ich bin mit template match Muster und nicht benannte Vorlagen):
Können Sie die Rekursion:
Ausgabe:
s o m e t h i n g
Gute Frage, +1.
Dies ist, was die Vorlage/Funktion
str-map
von FXSL ist für:wenn diese transformation wird angewendet auf beliebigen XML-Dokument (nicht verwendet), die das erwartete Ergebnis produziert wird:
Mehrere XSLT 1.0-Lösungen wurden gepostet (denn das ist, was das ursprüngliche Plakat benötigt). Für den Vergleich, aber, hier ist, wie dieses getan werden könnte, in XSLT 2.0 mit xsl:analyze-string: