Announcement

Collapse
No announcement yet.

for Schleife in XSL version 1.0?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • for Schleife in XSL version 1.0?

    Hallo,

    ich habe ein xml Datei und würde daraus gerne eine csv oder txt Datei erstellen.
    Das klappt auch aber jetzt habe ich eine neue herausforderung und habe noch keine Idee wie ich das umsetzen kann.

    Code:
    <property id="Count">
            <value>3</value>
    </property>
    <property id="Name">
            <value>Test</value>
    </property>
    Ich habe in der xml Datei einen Zähler wie in deiesem Beispiel der auf 3 steht.
    Jetzt würde ich gerne in der Ausgabedatei 3 mal den gleichen Code schreiben jedoch muss ich irgendwo den Schleifenzähler (1,2,3) miteintragen.

    Meine Frage ist nun, gibt es eine Schleifenfunktion wie bei java oder PHP auch in XSL?

    Ich stelle mir so eine AusgabeDatei vor:
    Code:
    Name1
    name2
    name3
    Bin für jede Hilfe dankbar..

  • #2
    XSLT ist eine deklarative Programmiersprache, keine prozedurale wie Java oder PHP. Ein sequentielles Schleifenkonstrukt gibt es in XSLT nicht.
    Du kannst aber einfach ein Template aufrufen, diesem einen Wert als Parameter übergeben, und dann im Template das Template selbst wieder mit einem geänderten Wert aufrufen.

    Comment


    • #3
      Hallo Martin,

      danke für die Antwort.

      Ich verstehe leider noch nicht ganz wie ich das umsetzen sollte.
      Hast du hierzu ein Beispiel für mich?

      Comment


      • #4
        Hier ein Beispiel-Template:
        Code:
          <xsl:template name="beispiel">
            <xsl:param name="n"/>
            <xsl:param name="s"/>
            <xsl:param name="i" select="1"/>
            <xsl:if test="$i &lt;= $n">
              <xsl:value-of select="concat($s, ' ', $i)"/>
              <xsl:call-template name="beispiel">
                <xsl:with-param name="n" select="$n"/>
                <xsl:with-param name="s" select="$s"/>
                <xsl:with-param name="i" select="$i + 1"/>
              </xsl:call-template>
            </xsl:if>
          </xsl:template>
        Aufrufen dann etwa per
        Code:
            <xsl:call-template name="beispiel">
              <xsl:with-param name="n" select="3"/>
              <xsl:with-param name="s" select="'Name'"/>
            </xsl:call-template>

        Comment

        Working...
        X