Björn: XML-Dateninsel in Netscape 6/Mozilla

Hallo!

Ich beschäftige mich gerade mit XML-Dateninseln, was im Internet Explorer 5.0 auch wunderbar funktioniert (wen wundert's?). Nun würde ich das Ganze aber auch gerne im Netscape 6 bzw. Mozilla 0.9.2 zum Laufen bekommen, aber irgend etwas haut da nicht hin.
Wahrscheinlich habe ich das DOM nicht korrekt interpretiert, da Mozilla sich angeblich sehr streng an den Standard halten soll.
Hier also ein Ausschnitt aus meinem HTML-Quellcode:

....

<!-- .... Die HTML-Datei, das Übliche ... -->

<xml id="Ergebnistabelle" src="ergebn.xml"></xml>

<script language="JavaScript" type="text/javascript">
<!--

var Ergebnisse = Ergebnistabelle.getElementsByTagName("ergebnis");
var Turnierrunden = Ergebnistabelle.getElementsByTagName("runden").item(0).text;

// Verarbeitung der einzelnen Ergebnisse

for ( i = 0; i < Ergebnisse.length; i++ )
{

// usw. Bis in die for-Schleife kommt Mozilla sowieso nicht

}

Irgend etwas stört Mozilla an den ersten beiden Zuweisungen, aber was? Weiß jemand einen Rat? Danke!

Björn

  1. Hallo,

    <!-- .... Die HTML-Datei, das Übliche ... -->
    <xml id="Ergebnistabelle" src="ergebn.xml"></xml>
    <script language="JavaScript" type="text/javascript">
    <!--
    var Ergebnisse = Ergebnistabelle.getElementsByTagName("ergebnis");
    var Turnierrunden = Ergebnistabelle.getElementsByTagName("runden").item(0).text;
    // Verarbeitung der einzelnen Ergebnisse
    for ( i = 0; i < Ergebnisse.length; i++ )

    » {

    // usw. Bis in die for-Schleife kommt Mozilla sowieso nicht

    }

    Irgend etwas stört Mozilla an den ersten beiden Zuweisungen, aber was? Weiß jemand einen Rat? Danke!

    irgend etwas? das wetter? ...er wird dir doch eine fehlermeldung ausgegeben habe, oder?
    auserdem, wocher soll er wissen, das er ein xml doku auch einlesen soll??

    probiere damit:
    <html>
    <body>
    <h1>document.load() test</h1>
    <script>
    var xmlDoc = document.implementation.createDocument("", "test", null);

    function documentLoaded(e) {
      alert(xmlDoc.getElementById("id1").firstChild.nodeValue);
    }

    xmlDoc.addEventListener("load", documentLoaded, false);

    xmlDoc.load("test.xml");
    </script>
    </body>
    </html>

    natürlich muss du was im text xml haben, z.B:
    <?xml version="1.0"?>
    <!DOCTYPE doc [
    <!ATTLIST p id ID #IMPLIED>
    ]>
    <doc>
    <p id="id1">Text from sample XML document.</p>
    </doc
    funktioniert schon Gecko/20001106 Netscape6/6.0

    weter infos findest du unter:
    http://www.mozilla.org/newlayout/xml/
    beispiel auch von der seite.

    und <http://www.mozilla.org/newlayout/faq.html#embedding APIs compatible>

    grüße
    thomas

    1. Irgend etwas stört Mozilla an den ersten beiden Zuweisungen, aber was? Weiß jemand einen Rat? Danke!

      irgend etwas? das wetter? ...er wird dir doch eine fehlermeldung ausgegeben habe, oder?

      Nicht direkt, aber jetzt wo Du es erwähnt hast, habe ich nach Aufruf der Javascript-Konsole auch die entsprechende Fehlermeldung bekommen:

      Ergebnistabelle not defined

      Komisch, ich dachte einfach, dass der Browser von sich aus auf Fehler aufmerksam machen würde, so wie es Netscape und der IE ja auch tun, aber dass war wohl ein Irrtum. Nun gut, mein Fehler, sehe ich ja auch ein! Ist wohl die späte Stunde... ;-)

      auserdem, wocher soll er wissen, das er ein xml doku auch einlesen soll??

      Hmmm, gute Frage, der IE tut es jedenfalls, vielleicht auch erst nach dem JavaScript-Zugriff? Muss es erst noch online testen, dann werde ich es anhand der Ladezeit ja merken.
      Im übrigen funktioniert das alles ja auch bestens, ich habe damit immerhin schon zwei Tabellen mit jeweils mehreren Dutzend Zeilen generiert,  die per JavaScript je nach Inhalt mit verschiedenen Zellenformatierungen versehen werden.
      Klappt einfach super, aber eben nur mit dem IE.
      Das Fernziel soll sein, dass ich für Daten, die sich ständig ändern nur noch XML-Daten pflegen muss, während die HTML-Dateien sich ihre Daten aus diesen XML-Dateien "herauslesen". Ginge wohl auch mit einer  Datenbank oder vielleicht mit ASP und mit tausend anderen Techniken, aber XML scheint mir einfach am geeignetsten für Zukunftssichere Datenspeicherung.
      Aber bis dahin ist es noch ein langer Weg, da erst Netscape 4.x von der Bildfläche verschwinden muss (wird langsam mal Zeit).

      probiere damit:
      <html>
      <body>
      <h1>document.load() test</h1>
      <script>
      var xmlDoc = document.implementation.createDocument("", "test", null);

      function documentLoaded(e) {
        alert(xmlDoc.getElementById("id1").firstChild.nodeValue);
      }

      xmlDoc.addEventListener("load", documentLoaded, false);

      xmlDoc.load("test.xml");
      </script>
      </body>
      </html>

      natürlich muss du was im text xml haben, z.B:
      <?xml version="1.0"?>
      <!DOCTYPE doc [
      <!ATTLIST p id ID #IMPLIED>
      ]>
      <doc>
      <p id="id1">Text from sample XML document.</p>
      </doc
      funktioniert schon Gecko/20001106 Netscape6/6.0

      weter infos findest du unter:
      http://www.mozilla.org/newlayout/xml/
      beispiel auch von der seite.

      und <http://www.mozilla.org/newlayout/faq.html#embedding APIs compatible>

      Werd's mir auf jeden FAll ansehen, vielen Dank für Deine/Eure Hilfe!!

      grüße
      thomas

      Gute N8

  2. Hi

    versuch mal anstatt:
    getElementsByTagName("...");
    getElementByTagName("..."); (also ohne "s")

    --------------------

    wenn das nicht geht, versuch folgendes:

    var Ergebnisse = document.getElementById("Ergebnistabelle").getElementsByTagName("ergebnis");

    denn sonst weiss der nicht, was Ergebnistabelle ist....document.all ist ja IE und eigenltich optional, der erkennt ein objekt auch so wie du es (bis) jetzt gemacht hast.

    PS: ich hab eigentlich keine ahnung, ob es funzt :-)
    trotzdem...

    schöne, cu