Split in 3 Felder
Udo Martens
- xsl
0 dedlfix
0 Thomas J.S.
Hallo,
ich möchte mit XSLT ein Quellfeld in 3 Zielfelder mappen. Das Quellfeld enthält die Werte durch 1-n Leerzeichen getrennt, welche dann verschwinden sollen. Also zum Beispiel:
<quelle> aa bbb cccc </quelle>
sollte dann in
<ziel>
<feld1>aa</feld1>
<feld2>bbb</feld2>
<feld3>cccc</feld3>
gemappt werden.
Ist das überhaupt möglich mit XSLT? Schließlich kann man die Substrings nur mit (festen) Positionen rausholen. Oder gibt es irgendeinen Schmutztrick?
Grüße,
Udo
echo $begrüßung;
ich möchte mit XSLT ein Quellfeld in 3 Zielfelder mappen.
Dieses Beispiel sollte helfen: http://www.dpawson.co.uk/xsl/sect2/N7240.html#d9396e343
echo "$verabschiedung $name";
Hallo dedlfix, hallo Thomas,
vielen Dank für eure Hilfe. Das Script läuft und der Tag ist gerettet.
Udo
Hallo,
ich möchte mit XSLT ein Quellfeld in 3 Zielfelder mappen. Das Quellfeld enthält die Werte durch 1-n Leerzeichen getrennt, welche dann verschwinden sollen. Also zum Beispiel:
Ist das überhaupt möglich mit XSLT?
Ja.
Schließlich kann man die Substrings nur mit (festen) Positionen rausholen. Oder gibt es irgendeinen Schmutztrick?
Ich weiss nicht was du mit "Schmutztrick" meinst. Ein recursives Template erledigt diese Aufgabe.
<xsl:template match="quelle">
<xsl:variable name="thisnode" select="normalize-space(.)" />
<ziel>
<xsl:call-template name="split">
<xsl:with-param name="node" select="$thisnode" />
<xsl:with-param name="startCounter" select="0" />
</xsl:call-template>
</ziel>
</xsl:template>
<xsl:template name="split">
<xsl:param name="node" />
<xsl:param name="startCounter" />
<xsl:variable name="nrCounter" select="$startCounter + 1" />
<xsl:variable name="split" select="substring-before($node, ' ')" />
<xsl:variable name="rest" select="substring-after($node, $split)" />
<xsl:if test="$split != ''">
<xsl:element name="feld{$nrCounter}">
<xsl:value-of select="$split" />
</xsl:element>
<xsl:call-template name="split">
<xsl:with-param name="node" select="concat(normalize-space($rest), ' ')" />
<xsl:with-param name="startCounter" select="$nrCounter" />
</xsl:call-template>
</xsl:if>
</xsl:template>
Grüße
Thomas