Nicolas: XML durch Document.Write im IFRAME darstellen

Hallo Leute,

über Document.Write erzeuge ich ein XML-String, der wenn er als XML-Datei abgespeichert wurde und anschließend im IE 5 geladen wurde, korrekt als XML-Document vom Browser erkannt wird und sauber in der XML-Knotenstruktur dargestellt wird.

Wenn ich den XML-String allerdings direkt einem IFRAME ( also z.b. iframename.document.write(XML-String)...) übergebe, werden die Ergebniswerte unstrukturiert dargestellt.

  1. Hallo

    werden die Ergebniswerte unstrukturiert dargestellt.

    was heisst das?
    geht es dir nur um die optik?
    oder die datei wird nicht als xml sondern als z.B. plain text benhandelt?

    grüße
    thomas

    1. Hallo Thomas,

      richtig, der XML-String wird wenn ich ihn direkt an den IFRAME schreibe nur als PlainText dargestellt.

      Ich möchte ihn aber durch den Javascript-Befehl "iframe.document.write(xml-string)" aber als vollwärtiges XML Document sehen können.

      Ich muss diesen XML-String erst zur Laufzeit des Scriptes erzeugen. Er liegt also auf dem Server nicht als XML-Datei schon vor.

      Beispiel:

      Nehmen wir an ich habe im HTML Doku einen IFRAME mit dem Namen "Output", der leer ist, also src="" und ein Script wie folgt:

      <script>
      Output.document.write("<?xml version='1.0'?><hello>Hello world</hello>");
      </script>

      Dann erscheint im Iframe nur PlainText: "Hello world".

      Speichere ich diesen XML-String aber als lokale XML-Datei ab und lade diese anschließend im IE 5, so zeigt der Browser diese Datei als XML an und nicht PlainText.

      Gruss,
      Nicolas

      Hallo

      werden die Ergebniswerte unstrukturiert dargestellt.

      was heisst das?
      geht es dir nur um die optik?
      oder die datei wird nicht als xml sondern als z.B. plain text benhandelt?

      grüße
      thomas

      1. Hallo Nicolas

        richtig, der XML-String wird wenn ich ihn direkt an den IFRAME schreibe nur als PlainText dargestellt.

        Ich möchte ihn aber durch den Javascript-Befehl "iframe.document.write(xml-string)" aber als vollwärtiges XML Document sehen können.

        aha. ok.

        Beispiel:
        <script>
        Output.document.write("<?xml version='1.0'?><hello>Hello world</hello>");
        </script>

        du kannst auch sogenannte XML Data Islands schreiben:

        <SCRIPT LANGUAGE="xml" ID="XMLID">
          <poster>
            <name>Nicolas</name>
            <mail>habkeine@mail.com</mail>
          </poster>
        </SCRIPT>

        aber ich bin mir nicht sicher, ob das das ist was du willst.

        Speichere ich diesen XML-String aber als lokale XML-Datei ab und lade diese anschließend im IE 5, so zeigt der Browser diese Datei als XML an und nicht PlainText.

        das ist logisch. du muss dem IE beibringen dass es sich um einen xml dokument handelt.
        mit javascrip und DOM kannst du auf xml elemente zugreifen, aber ich weiss nicht ob die dann alles als xml so wie der IE es macht darstellen kannst (übrigens die darstellung von xml dateien im IE ist nicht anders als das ergebniss einer internen xsl transformation, also reine optik. wenn du nur das brauchst kannst es ansers machen)
        sonst kannst du dir den xml-sdk herunterladen, darin findest du auch beispiele.

        [link:http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/766/msdncompositedoc.xml9

        grüße
        thomas

        1. Hallo Thomas,

          vielen Dank für Deine Mühe.

          Erste Antwort, nein so habe ich das nicht gemeint.
          Zweite Antwort, ja. Das sind wir schon auf dem richtigen Weg.

          Und das ist das Problem, wie sage ich dem IE 5 das er den Content für den IFRAME als XML betrachten soll. Mit dem ActiveXObject('Microsoft.XMLDOM') Object kann ich ja mit loadXML einen XML String laden und durch eine 2 Instanz eine xsl-Datei angeben und diese für das erste Objekt zur Transformierung nehmen.

          Aber wie nutze ich die interne xsl-Transformierung vom Browser ?

          Gruss,
          Nicolas

          Hallo Nicolas

          richtig, der XML-String wird wenn ich ihn direkt an den IFRAME schreibe nur als PlainText dargestellt.

          Ich möchte ihn aber durch den Javascript-Befehl "iframe.document.write(xml-string)" aber als vollwärtiges XML Document sehen können.

          aha. ok.

          Beispiel:
          <script>
          Output.document.write("<?xml version='1.0'?><hello>Hello world</hello>");
          </script>

          du kannst auch sogenannte XML Data Islands schreiben:

          <SCRIPT LANGUAGE="xml" ID="XMLID">
            <poster>
              <name>Nicolas</name>
              <mail>habkeine@mail.com</mail>
            </poster>
          </SCRIPT>

          aber ich bin mir nicht sicher, ob das das ist was du willst.

          Speichere ich diesen XML-String aber als lokale XML-Datei ab und lade diese anschließend im IE 5, so zeigt der Browser diese Datei als XML an und nicht PlainText.

          das ist logisch. du muss dem IE beibringen dass es sich um einen xml dokument handelt.
          mit javascrip und DOM kannst du auf xml elemente zugreifen, aber ich weiss nicht ob die dann alles als xml so wie der IE es macht darstellen kannst (übrigens die darstellung von xml dateien im IE ist nicht anders als das ergebniss einer internen xsl transformation, also reine optik. wenn du nur das brauchst kannst es ansers machen)
          sonst kannst du dir den xml-sdk herunterladen, darin findest du auch beispiele.

          [link:http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/766/msdncompositedoc.xml9

          grüße
          thomas

          1. Hallo Nicolas,

            vielen Dank für Deine Mühe.

            Erste Antwort, nein so habe ich das nicht gemeint.
            Zweite Antwort, ja. Das sind wir schon auf dem richtigen Weg.

            Und das ist das Problem, wie sage ich dem IE 5 das er den Content für den IFRAME als XML betrachten soll. Mit dem ActiveXObject('Microsoft.XMLDOM') Object kann ich ja mit loadXML einen XML String laden und durch eine 2 Instanz eine xsl-Datei angeben und diese für das erste Objekt zur Transformierung nehmen.

            Aber wie nutze ich die interne xsl-Transformierung vom Browser ?

            da bin ich einfach überfragt. da ich mich mit dem MS eignen scriptingsachen nicht auskenne.
            empfehlen kann ich dir abernews://news.univie.ac.at/microsoft.public.windows.inetexplorer.ie5.programming.xml
            news://news.univie.ac.at/microsoft.public.xml
            oder bei deinen eigenen newsserver

            grüße
            thomas

          2. Hallo Nicolas,

            ich weiss nicht ob du hier noch mitliest: jetzt habe ich dir zwar doch etwas gefunden, aber das könnte ich nur per mail zusenden.
            deine e-mail hast du nicht angegeben, also zuschicken kann ich es nicht.

            tja ....

            grüße
            thomas