fjh: String auslesen?

Beitrag lesen

Hi,

Hallo allerseits,
ich habe folgendes Problem: Ich moechte aus Element

<Element>1,15,6</Element>

die Zahlen einzeln "herausfiltern", um sie irgendwo gesondert wieder aufrufen zu koennen. Ich weiss um die Funktionen "substring", "string-before", usw. aber da ich keine Erfahrung mit Programmiersprachen habe, weiss ich die irgendwie nicht richtig handzuhaben. Habe schon ziemlich viel herumprobiert. Faellt jemandem spontan ein Ansatz ein oder ist das eher kompliziert?

Kurze Antwort: eher kompliziert, v.a. ohne Kenntnisse in Programmiersprachen. Zudem ist es in XSLT nochmal etwas schwieriger, da XML originar dazu gedacht ist durch Tags strukturierte Inhalte zu bearbeiten und nicht Formate wie X, X, X.

Etwas längere Antwort:
Ein Ansatz wäre über den Einsatz von Variablen. In die erste liest du den Inhalt des Elements ein. Dann rufst du ein Template auf, und übergibst ihm den Wert der Variablen als Parameter. Mittels substring-before und substring-after teilst du dann das erste Token ab und bearbeitest den Rest rekursiv weiter, indem du das Template erneut aufrufst mit dem Reststring als Parameter. Also etwa sowas:

<xsl:template name="split-tokens">
  <xsl:param name="zahlenliste"/>
  <xsl:variable name="$vZahlenliste"/>
  <xsl:variable name="erstesToken" select="substring-before($vZahlenliste, ',')"/>
  <xsl:variable name="restlicheToken" select="substring-after($vZahlenliste, ',')"/>
  xsl:text<xsl:value-of select="$erstesToken"/>
  <xsl:if test="$restlicheToken">
    <xsl:call-template name="split-tokens">
      <xsl:with-param name="zahlenliste" select="restlicheToken"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>

Jo, so in etwa.

Vielleicht hilfts ja...

Gruß
Franz