borobudur: XML zweimal durchlaufen

Hallo, kann mir jemand sagen, wie ich aus dem XSL die XML-datei zweimal durchlaufen kann.
Danke für die hilfe.
Gruss
borobudur

  1. Hallo,

    Hallo, kann mir jemand sagen, wie ich aus dem XSL die XML-datei zweimal durchlaufen kann.

    Was meinst du mit "durchlaufen"? Die Transformation als solches oder meinst du das XML z.B. nach bestimmten Kritierien sortieren?
    Was möchtest du erreichen?

    Grüße
    Thomas

    1. Im xml gehts doch mit dem root-tag los. Anschliessend marschiere ich durch den ganzen baum. Mit <xsl:template match="text"> kann ich dann aus dem xsl auf die einzelnen tags konkret zugreifen. Nun bin ich am ende des xml-file angelangt und möchte nochmals durch den ganzen baum. Ich hätte mir vorgestellt, dass es da etwas geben muss, wo ich den zeiger wieder auf den root node setzen kann.
      Bin ich mit dieser idee völlig falsch?
      Gruss aus Zürich
      borobudur

      1. Hallo,

        Im xml gehts doch mit dem root-tag los. Anschliessend marschiere ich durch den ganzen baum. Mit <xsl:template match="text"> kann ich dann aus dem xsl auf die einzelnen tags konkret zugreifen.

        Ja, xsl:template und xsl:apply-templates stellen die eine Möglichkeit (so genannte push processing) und z.B. xsl:for-each oder xsl:value-of stellen die andere Möglichkeit dar (pull processing).

        Nun bin ich am ende des xml-file angelangt und möchte nochmals durch den ganzen baum. Ich hätte mir vorgestellt, dass es da etwas geben muss, wo ich den zeiger wieder auf den root node setzen kann.
        Bin ich mit dieser idee völlig falsch?

        Du kannst jederzeit und von überall auf den Wurzelknoten zugreifen, aber es kommt darauf an was du wirklich machen willst. So lange das du nicht sagst, ist es kaum möglich dir wirkich effizient zu helfen.
        Wenn ich dir z.B. <xsl:for-each select="/root/bla"> schreibe, hilft das dir wohl kaum, wenn der Kontext nicht stimmt.

        Du kannst auch für ein und dasselbe Element mehrere Templates definieren (mit dem "mode" oder "name" Attribut) und diese Templates dann kontextabhängig aufrufen.

        Also: was möchtest du konkret machen?

        Grüße
        Thomas

        1. Hallo Thomas, danke für deine hilfe. Das war genau was mir gefehlt hat. Ich habe nicht begriffen, dass ich so auf jeden beliebigen node zugreifen kann. Ich hatte nur einen sequenziellen durchlauf durch die xml-datei im kopf. Super danke!

          <xsl:for-each select="/root/bla">

          Gruss
          borobudur