lars: String auslesen?

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?
Gruss, lars

  1. Moin Lars!

    <Element>1,15,6</Element>
    [...]
    Faellt jemandem spontan ein Ansatz ein oder ist das eher kompliziert?

    Wäre vielleicht gut, wenn du noch den Kontext dazuposten würdest, z.B. in welcher Programmiersprache du das machen willst. In Perl bietet sich zum XML-Parsing z.B. das Modul XML::Simple an, mit dem du XML-Files ziemlich einfach in Perl-Hash-Srukturen parsen kannst.

    Das Auslesen der enthaltenen Informationen wäre dann mit Hilfe von RegExps, split() usw. auch kein Problem mehr, z.B. wäre...

    @zahlen = split(',', $string);

    ...eine simple Lösung, um die 3 von Kommas getrennten Zahlen in ein Array zu kriegen.

    Ciao!
    Buggi

    1. Wäre vielleicht gut, wenn du noch den Kontext dazuposten würdest, z.B. in welcher Programmiersprache du das machen willst.

      Hi Buggi,
      erstmal danke fuer die Antwort. Ich habe mich wahrscheinlich missverstaendlich ausgedrueckt. Das spaetere "Auslesen" soll ebenfalls per XSL geschehen.
      Soll also alles in XSL stattfinden.
      Ich muss praktisch jede Zahl fuer sich in meinen Text-Output kriegen.
      Hmmm...macht das jetzt mehr Sinn?
      Gruss, Lars

  2. 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