Inspektor DOM: XML > XSLT... Wie kann ich auf den Quellbaum zugreifen

Hallo liebe Foristen,

ich möchte eine XML-Datei mit XSLT darstellen lassen, aber trotzdem via DOM auf den ursprünglichen Datenbaum zu dynamischen Ausgabezwecken (Telefonliste).

"document" ist die oberste Instanz des angezeigten Konvertats. Der Quellbaum ist aber noch im Speicher. Anzeigen lassen kann ich ihn mir ja auch.

Frage nun: gibt es via JS eine Möglichkeit, das dortige Wurzelelement beim Schopf zu packen?

Ich hoffe schon :)

mfg
DOMI

  1. Tach Inspektor DOM,

    Frage nun: gibt es via JS eine Möglichkeit, das dortige Wurzelelement beim Schopf zu packen?

    document.documentElement

    Man liest sich,
    svg4you

    1. Tach Inspektor DOM,

      Frage nun: gibt es via JS eine Möglichkeit, das dortige Wurzelelement beim Schopf zu packen?

      document.documentElement

      Man liest sich,
      svg4you

      Damit habe ich das nachgeordnete Wurzelelement (HTML). Ich will aber das Wurzelelement des Original-XML-Dokuments.

      neistrei und danke trotzdem
      DOMI

      1. Tach Inspektor DOM,

        Damit habe ich das nachgeordnete Wurzelelement (HTML). Ich will aber das Wurzelelement des Original-XML-Dokuments.

        beim Verarbeiten von einem XML- mit einem XSL-Dokument mit JS-Mitteln werden doch zuvor die jeweiligen Dokumentenobjekte erzeugt und danach verarbeitet. Diese sollten mittels DOM-Methoden zugänglich sein.

        Wende also document.documentElement auf das Eingabe-XML-Dokumentenobjekt an und nicht auf den Ergebnisbaum.

        Man liest sich,
        svg4you

        1. beim Verarbeiten von einem XML- mit einem XSL-Dokument mit JS-Mitteln werden doch zuvor die jeweiligen Dokumentenobjekte erzeugt und danach verarbeitet. Diese sollten mittels DOM-Methoden zugänglich sein.

          Mit "JS-Mitteln"??? Nein. Es geht darum, daß die XSL-Stylesheet-Anweisung ein "document" erzeugt (per definitionem das im Brauser *angezeigte* Dokument), und das kennt das XML-Originaldokument nicht. Ich will aber eben nicht auf das angezeigte Dokument zugreifen, sondern auf das Originaldokument, das nicht mehr angezeigt wird, aber noch im Speicher ist.

          Wende also document.documentElement auf das Eingabe-XML-Dokumentenobjekt an und nicht auf den Ergebnisbaum.

          Würde ich ja gerne. Aber wie geht das?

          Man liest sich,
          svg4you

          Wer viel liest, weiß immer mehr... :)
          DOMI

          1. Hi,

            wer sagt dir denn, dass das Original-Dokument noch im Speicher ist bzw. dass du Zugriff darauf nehmen können solltest? Woher kommt denn eigentlich das JavaScript, das den Zugriff machen soll? Wenn es im neu erstellten Dokument ist, dann ist es auch erstmal darauf beschränkt. Es kann lediglich per Request das Original nochmal anfordern.

            MfG
            Rouven

            --
            -------------------
            Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
            1. Hi,

              wer sagt dir denn, dass das Original-Dokument noch im Speicher ist

              Wenn es das nicht wäre, könnte ich es mir auch nicht anzeigen lassen.

              bzw. dass du Zugriff darauf nehmen können solltest? Woher kommt denn eigentlich das JavaScript, das den Zugriff machen soll? Wenn es im neu erstellten Dokument ist, dann ist es auch erstmal darauf beschränkt. Es kann lediglich per Request das Original nochmal anfordern.

              Genau das ist das Problem. Es wird über die XSL-Datei eingelesen und im HTML-Konvertat aktiviert. Die Frage ist nun, ob bzw. wo im Brauser noch das XML-Original angesprochen werden kann.

              MfG
              Rouven

              mfg
              DOMI

          2. Tach Inspektor DOM,

            Mit "JS-Mitteln"??? Nein. Es geht darum, daß die XSL-Stylesheet-Anweisung ein "document" erzeugt (per definitionem das im Brauser *angezeigte* Dokument), und das kennt das XML-Originaldokument nicht. Ich will aber eben nicht auf das angezeigte Dokument zugreifen, sondern auf das Originaldokument, das nicht mehr angezeigt wird, aber noch im Speicher ist.

            Soll heißen, dass ein XML-Dokument mit <?xml-stylesheet ...?>-PI in den Browser geladen wird? Dann bringt ein im XSL-Stylesheet ausgegebenes script-Element mit dem Inhalt

            alert(top.document.documentElement.tagName); tastsächlich das Ergebnis HTML.

            Einen Zugriff auf das XML-Dokument sehe ich hier nicht, da der Browser ja nun das erzeugte HTML-Dokument beinhaltet.

            Eine Alternative könnte das nochmalige Einlesen des XML-Dokuments innerhalb eines erzeugten script-Elementes via AJAX sein. Da aber offenbar sowieso JS im Spiel ist, würde ich die clientseitige Transformation auch damit ausführen.

            Man liest sich,
            svg4you

            1. Tach Inspektor DOM,

              Tach nochmal

              Eine Alternative könnte das nochmalige Einlesen des XML-Dokuments innerhalb eines erzeugten script-Elementes via AJAX sein. Da aber offenbar sowieso JS im Spiel ist, würde ich die clientseitige Transformation auch damit ausführen.

              Genau das mache ich bis jetzt, finde die Lösung aber unelegant und suche eine bessere, sprich:flexiblere, die es mir erlaubt, ohne JS die Daten "nackt" darstellen lassen, bei Verfügbarkeit aber einen JS-Client Manager darauf loszulassen, der zwecks besserem Handling das XML-Bäumchen rauf und runterklettert, und nicht den HTML-Code.

              Man liest sich,
              svg4you

              man schreibt sich
              DOMI