1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

String auffüllen

Dieses Thema im Forum "XML Technologien" wurde erstellt von rolbeh, 26. Oktober 2005.

  1. rolbeh

    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: 1. November 2005
  2. Rick Dangerous

    Rick Dangerous Mitglied

    Ja, das müßte mit der Funktion format-number gehen.


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

    (ungetestet)
     
  3. rolbeh

    rolbeh Grünschnabel

    Joop, Genau so hab ich es gemacht ;)
     
  4. Markus Zurbrüggen

    Markus Zurbrüggen Grünschnabel

    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?
     
  5. deepthroat

    deepthroat Erfahrenes Mitglied

    Hi.

    Also spontan würde mir das einfallen:
    Code (Text):
    1. substr(concat($string, "                 "), 0, 15)
    Gruß
     
  6. Markus Zurbrüggen

    Markus Zurbrüggen Grünschnabel

    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?
     
  7. Markus Zurbrüggen

    Markus Zurbrüggen Grünschnabel

    Außerdem sehe ich gerade, dass die Ausgabe in der nächsten XML nur ein Leerzeichen angefügt hat...
     
  8. deepthroat

    deepthroat Erfahrenes Mitglied

    Erst 15 Leerzeichen an den String dranhängen und die 15 ersten Zeichen des String abschneiden.
    Ja.
    Liest du hier: http://devguru.com/Technologies/xslt/quickref/xslt_functions_xpath.html#substring
    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ß
     
  9. hela

    hela Premium-User

    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.
     
Die Seite wird geladen...