Forum Doku Wiki Blog

Forumsarchiv 2005, Juni
Split in 3 Felder

archivierte Beiträge lesen

  1. (XSL) Split in 3 Felder von Udo Martens, 20. 06. 2005, 10:22

Split in 3 Felder

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

Split in 3 Felder

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";

Split in 3 Felder

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

Split in 3 Felder

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