Martin: Zeichen an einer bestimmten stelle positionieren

Hallo,
Hab folgendes Problem:
Ich habe ein XML-Datei, die Daten über einen Einsender bereit hält.
Ich möchte diese nun mit dem xslProzessor Xalan und einer Xsl Datei in eine Text Datei umwandeln. An sich kein Problem. Das Problem besteht darin:

  • Die Datei beginnt mit einer Zeichenfolge die eine bestimmte max Länge haben darf. die Länge ist ansonsten aber variabel
  • ab einer genau bestimmten spalte kommt dann die nächste Zeichenfolge, die entsprechend wieder eine bestimmte Länge hat.
    Das Ergebnis müsste so aussehen:
    Code:

LUAxxxx               xx.xx.xxxxxx:xxxx/xxxx/xxxxxx      xxxx

Die XML Datei sieht so aus:
Code:

<?xml version="1.0" encoding="iso-8859-1" ?>
<header>
 <Probenstelle>xxxx(kann länger sein)</Probenstelle>
 <Datum>xx.xx.xxxx</Datum>
 <Zeit>xx:xx</Zeit>
 <Analysennummer>xx/xxxx/xxxxxx</Analysennummer>
 <Preis>xxxx</Preis>
</header>

Der Stylesheet müsste so aussehen irgendwie
Code:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
LUA<xsl:value-of select="header/Probenstelle"/>
<!--Hier müssten 15 Leerstellen rein-->
<xsl:value-of select="header/Datum"/>
<xsl:value-of select="header/Zeit"/>
<xsl:value-of select="header/Analysennummer"/>
<!--Hier müssten 6 Leerstellen rein-->
<xsl:value-of select="header/Preis"/>
</xsl:template>
</xsl:stylesheet>

Die frage ist nun. wie kriege ich das so hin, das auch wenn sich eine Zeichenfolgenlänge ändert die entsprechenden Zeichenfolgen immer an gleicher Stelle sind?

Viele Grüße,
Martin

  1. hier ist eine kleine loesung:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    LUA<xsl:value-of select="header/Probenstelle"/>
    <!--Hier müssten 15 Leerstellen rein-->
    xsl:text/&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;
    <xsl:value-of select="header/Datum"/>
    <xsl:value-of select="header/Zeit"/>
    <xsl:value-of select="header/Analysennummer"/>
    <!--Hier müssten 6 Leerstellen rein-->
    &#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;
    <xsl:value-of select="header/Preis"/>
    </xsl:template>
    </xsl:stylesheet>

  2. Das Ergebnis müsste so aussehen:
    Code:

    LUAxxxx               xx.xx.xxxxxx:xxxx/xxxx/xxxxxx      xxxx

    Die XML Datei sieht so aus:
    Code:

    <?xml version="1.0" encoding="iso-8859-1" ?>
    <header>
     <Probenstelle>xxxx(kann länger sein)</Probenstelle>
     <Datum>xx.xx.xxxx</Datum>

    Hallo Martin,

    vielleicht solltest du versuchen den String aus Probenstelle mit concat um die erforderlichen 14 oder 15 Leerzeichen zu verlängern um dann mit substring die ersten 19 (?) Zeichen aus dem verlängerten String zu entnehmen.

    Gruß Mia