HP: XSLT Firefox & IE verschiedene Darstellung

Guten Tag.
Sowohl im Firefox als auch im IE sollen Infos gleich angezeigt werden.
Die Grundlage ist ein Buch (XSLT-Anwendungen und Referenz) von Stefan Holzner bei Markt+Technik erschienen 2002.
Daraus ein Beispiel für eine einfache Übung:
Die xml-datei:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="c://XSLT/planets.xsl"?>
<planets>

<planet>
  <name>Merkur</name>
  <mass UNITS="(Erde = 1)">0,0553 (Erde = 1)</mass>
  <day UNITS="Tage">58,68 Tage</day>
  <radius UNITS="(Erde = 1)">2440 Kilometer</radius>
  <density UNITS="(Erde = 1)">0,983</density>
  <distance UNITS="Millionen km">69,8 Millionen km</distance><!--im sonnennahen Punkt der Bahn-->
 </planet>

<planet>
  <name>Venus</name>
  <mass UNITS="(Erde = 1)">0,815 (Erde = 1)</mass>
  <day UNITS="Tage">116,75 Tage</day>
  <radius UNITS="(Erde = 1)">5980 Kiloemter</radius>
  <density UNITS="(Erde = 1)">0,943</density>
  <distance UNITS="Millionen km">107,5 Millionen km</distance><!--im sonnennahen Punkt der Bahn-->
 </planet>

<planet>
  <name>Erde</name>
  <mass UNITS="(Erde = 1)">1 (Erde = 1)</mass>
  <day UNITS="Tage">1 Tage</day>
  <radius UNITS="(Erde = 1)">3391 Kilometer</radius>
  <density UNITS="(Erde = 1)">1</density>
  <distance UNITS="Millionen km">206,6 Millionen km</distance><!--im sonnennahen Punkt der Bahn-->
 </planet>
</planets>

Dann die xsl-datei:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Diese Zeilen habe ich noch eingefügt:------
   <xsl:output method="html" encoding="utf-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0
Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"/>
Bis hier----------

<xsl:template match="/">
  <html>
   <head>
    <title>
     Die Planetentabelle
    </title>
   </head>
   <body>
    <h1>
     Die Planetentabelle
    </h1>
    <table border="2">
     <tr>
      <td>Name</td>
      <td>Masse</td>
      <td>Radius</td>
      <td>Tag</td>
      <td>Dichte</td>
      <td>Entfernung</td>
     </tr>
     xsl:apply-templates/
    </table>
   </body>
  </html>
 </xsl:template>

<xsl:template match="planets">
  xsl:apply-templates/
 </xsl:template>

<xsl:template match="planet">
  <tr>
   <td><xsl:value-of select="name"/></td>
   <td><xsl:value-of select="mass"/></td>
   <td><xsl:value-of select="radius"/></td>
   <td><xsl:value-of select="day"/></td>
   <td><xsl:value-of select="density"/></td>
   <td><xsl:value-of select="distance"/></td>
  </tr>
 </xsl:template>

<xsl:template match="mass">
  <xsl:value-of select="."/>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>

<xsl:template match="radius">
  <xsl:value-of select="."/>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>

<xsl:template match="day">
  <xsl:value-of select="."/>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>

<xsl:template match="density">
  <xsl:value-of select="."/>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>

<xsl:template match="distance">
  <xsl:value-of select="."/>
  <xsl:value-of select="@UNITS"/>
 </xsl:template>
</xsl:stylesheet>

Der IE zeigt eine Tabelle mit den Planeten an.(so wie es sein soll)
Firefox zeigt nur die Inhalte in einem String an.

Nachdem ich über google zu diesem Forum gekommen bin, und mitlerweile keinen Plan mehr habe, was hier noch fehlt, hoffe ich, dass mir jemand sagen kann, was hier mit diesem Beispiel schief läuft.

  1. Hi,

    Diese Zeilen habe ich noch eingefügt:------
       <xsl:output method="html" encoding="utf-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0
    Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"/>

    method="html" und Doctype XHTML widerspricht sich meiner Meinung nach.

    Hast Du das irgendwo online zum Ausprobieren? Hier die Einzelteile zusammenzusammeln ist mir zu aufwendig.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi Andreas
      Die von mir noch eingefügten Zeilen habe ich hier im Forum gefunden.
      Das Problem funktioniert auch ohne diese Ergänzung.
      Sprich im IE wird eine Tabelle mit den Überschriften und den Rahmen angezeigt, im Firefox(1.0.6) nur der Text als String.
      Leider habe ich dieses Beispiel nur lokal auf dem Rechner.
      Der code ist vollständig. Habe 2 Dateien angelegt(im selben Verzeichnis)
      Für den Firefox muß der absolute Pfad mit angegeben werden, sonst parst er nicht.(Fehler beim parsen des Styleshits)

      Danke erstmal für die schnelle Antwort. Falls du den Firefox & den IE hast, kannste den code jeweils in die Datei kopieren(Planets.xml & Planets.xsl)

  2. Hallo,

    <?xml-stylesheet type="text/xsl" href="c://XSLT/planets.xsl"?>

    ^Das ist kein gültiger Wert für das href-Attribut. Und was bezweckst Du mit den doppelten Slashes? Soll "c" damit wie ein Protkoll aussehen?

    Wenn die .xml und die .xsl-Datei im selben Verzeichnis liegen, dann probiers mal so:
    <?xml-stylesheet type="text/xsl" href="planets.xsl"?>
    oder so:
    <?xml-stylesheet type="text/xsl" href="./planets.xsl"?>

    Wenn Du wirklich absolut referenzieren willst, dann, je nach Protokoll,
    bei Auslieferung via HTTP:
    <?xml-stylesheet type="text/xsl" href="http://www.example.com/xslt/planets.xsl"?>

    bei Auslieferung via FILE:
    <?xml-stylesheet type="text/xsl" href="file://c|/xslt/planets.xsl"?>

    viele Grüße

    Axel

    1. Hallo Axel.

      Danke für die ausführliche Antwort. Mit href="planets.xsl"? funktioniert es auch im Firefox.

      Jetzt muss ich nur noch die relativen Pfade gebacken bekommen.

      Schöne und sonnige Tage

  3. Hallo,

    Die xml-datei:

    <?xml-stylesheet type="text/xsl" href="c://XSLT/planets.xsl"?>

    Das ist schon mal eigentlich für alle Browser falsch.

    Für den IE reicht es ein C:\XSLT\planets.xsl
    Korrekt fuktioniert mit FF und mit dem IE folgendes:
    <?xml-stylesheet type="text/xsl" href="file:///c:/XSLT/planets.xsl"?>

    Aber es ist eigentlich unsinn so Pfade anzugeben, besser du stellt die Dateien im selben Verzeichnis und gibst die XSL-Datei so an:
    <?xml-stylesheet type="text/xsl" href="planets.xsl"?>
    Funktioniert ebenfalls mit IE und FF.

    noch eingefügt:------
       <xsl:output method="html" encoding="utf-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0
    Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"/>
    Bis hier----------

    Wenn du XHTML erzeugen willst:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
    <xsl:output method="xml" encoding="utf-8" indent="yes" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"/>
    ...

    was hier noch fehlt, hoffe ich, dass mir jemand sagen kann, was hier mit diesem Beispiel schief läuft.

    Das  Beispiel funktioniert mit richtig verlinkten Dateien einwandfrei.

    Grüße
    Thomas

    1. Hallo Thomas

      Danke für die ausführliche Antwort. Mit href="planets.xsl"? funktioniert es auch im Firefox.
      Jetzt kann ich auch die Zusammenhänge besser verstehen.

      Schöne und sonnige Tage