String auffüllen

rolbeh

Grünschnabel
Zahl auffüllen [gelöst]

Hi

Ich hab ein Ausgangselement mit einem Wert im algemeinen eine Zahl. Diese Zahl ist zunächst einstellig so eine Art Auftragnummer. Jetzt muss diese Zahl nach links aufgefüllt werden mit 0 .

von 3 zu 0000000000000003

ist das mit xslt machbar?

Gruß
 
Zuletzt bearbeitet:
Ja, das müßte mit der Funktion format-number gehen.


Code:
<xsl:variable name = "A" >3</xsl:variable>
<xsl:value-of select = "format-number($A,'00000000000')" />
output: 00000000003

(ungetestet)
 
Ich weiß, das Thema hier ist schon uralt, aber ich dachte, hier kann man gut anknüpfen.
Gibt es auch eine ähnlich schöne Möglichkeit mit Leerzeichen in strings.
So dass die Länge der Strings immer mit Leerzeichen rechts aufgefüllt werden?
 
mmm, ich bin nicht gerade ein alter Hase in der Programmierung, von daher: Kannst du das kurz erläutern? Sind die Zeichen zwischen "" die Länge des gesamten Strings? Was bedeuten die 0, 15?
 
mmm, ich bin nicht gerade ein alter Hase in der Programmierung, von daher: Kannst du das kurz erläutern?
Erst 15 Leerzeichen an den String dranhängen und die 15 ersten Zeichen des String abschneiden.
Sind die Zeichen zwischen "" die Länge des gesamten Strings?
Ja.
Was bedeuten die 0, 15?
Liest du hier: http://devguru.com/Technologies/xslt/quickref/xslt_functions_xpath.html#substring
Außerdem sehe ich gerade, dass die Ausgabe in der nächsten XML nur ein Leerzeichen angefügt hat...
Du müßtest output-method "text" verwenden oder die Ausgabe für das Element auf preserve-space schalten. (http://saxon.sourceforge.net/saxon6.5.5/xsl-elements.html#xsl:preserve-space)

Gruß
 
Hallo,

du hast mit XSLT 1.0 folgende Möglichkeiten:

  • Mit der XPath-Funktion normalize-space() kannst du alle Zeichen aus dem Weißraum (also $x20, $x9, $xD und $xA) am Anfang und am Ende des Strings entfernen.
  • Mit der XPath-Funktion substring-before() und substring-after() kannst du ermitteln, welche Zeichen aus dem Weißraum vor bzw. nach dem normalisierten String im Original-String stehen.
  • Mit diesen drei Komponenten und einem vierten eigenen String (z.B. 15 Leerzeichen) kannst du nun einen neuen String zusammenbauen.

Die EXSLT-Stringerweiterung str: padding(number, string?) oder str:align(number, string, string?) könnte dazu auch verwendet werden.
 
Zurück