Thomas J.S.: Split in 3 Felder

Beitrag lesen

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/