Der folgende Beitrag wurde am 20. 06. 2005, 10:22 Uhr von Udo Martens veröffentlicht.
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
Der folgende Beitrag wurde am 20. 06. 2005, 13:21 Uhr von dedlfix veröffentlicht.
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";
Der folgende Beitrag wurde am 20. 06. 2005, 16:06 Uhr von Udo Martens veröffentlicht.
Hallo dedlfix, hallo Thomas,
vielen Dank für eure Hilfe. Das Script läuft und der Tag ist gerettet.
Udo
Der folgende Beitrag wurde am 20. 06. 2005, 13:24 Uhr von Thomas J.S. veröffentlicht.
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
--
Surftip: kennen Sie schon Pipolino's Clowntheater?
http://www.clowntheater-pipolino.net/
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4