Sasch: mit PHP XML document erstellen

Hi, ich habe mit PHP ein XML document erstellt(im browser wird genau der quellcode von der xml datei angezeigt). Nur leider greift diese xml datei nicht auf die xsl datei zu.

<?php

print "<?xml version="1.0" encoding="ISO-8859-1"?>\n";
print "<!DOCTYPE test SYSTEM "news.dtd">\n";
print "<?xml-stylesheet type="text/xsl" href="news.xsl" ?>\n\n";

$link = mysql_connect("localhost","usern","userp");
if (!$link)
 die("Kann den Server nicht erreichen.");
if (!mysql_select_db("mhw", $link))
 die("Kann die Datenbank nicht auswählen.");

$query = sprintf("select * from news order by id");
$result = mysql_query($query, $link);
if (!$result)
 {
  print mysql_error();
   die("Query $query ist ungültiges SQL.");
}

$zeilen = mysql_num_rows($result);

print "<news>\n";

while($avar = mysql_fetch_array($result))
 {
  print "<eintrag>\n<datum>";
  printf("%s", $avar["datum"]);
  print "</datum>\n<titel>";
  printf("%s", $avar["titel"]);
  print "</titel>\n<nachricht>";
  printf("%s", $avar["nachricht"]);
  print "</nachricht>\n<autor><email>";
  printf("%s", $avar["email"]);
  print "</email><name>";
  printf("%s", $avar["name"]);
  print "</name></autor>\n</eintrag>\n";
 }

mysql_free_result($result);
mysql_close($link);

print "</news>";
?>

Was muss ich nun machen, dass das generierte xml document auf die xsl datei zugreift?

Die dateien sind übrigens alle im gleichen ordner..

Danke Sascha

  1. Hallo,

    Hi, ich habe mit PHP ein XML document erstellt(im browser wird genau der quellcode von der xml datei angezeigt). Nur leider greift diese xml datei nicht auf die xsl datei zu.

    1. Ich sehe kein Wurzelelement test in der Ausgabe.
    2. Mit welchem Content-type wird die XML-Datei ausgeliefert?
    3. Wie verhalten sich IE bzw. Mozilla?
    4. Wenn Du schon PHP zur Verfuegung hast, dann waere IMHO serverseitiges Prozessieren (z. B. mittels Sablotron) eine Browser-uebergreifendere Loesung.

    MfG, Thomas

    1. 1. Ich sehe kein Wurzelelement test in der Ausgabe.

      1. Mit welchem Content-type wird die XML-Datei ausgeliefert?
      2. Wie verhalten sich IE bzw. Mozilla?
      3. Wenn Du schon PHP zur Verfuegung hast, dann waere IMHO serverseitiges Prozessieren (z. B. mittels Sablotron) eine Browser-uebergreifendere Loesung.

      irgendwie ist mein problem damit nicht gelößt..

  2. Moin,

    wie Thomas schon fragte: welche Content-Type (MIME-Type) wird für die Datei gesendet? Wenn du (dein Script) kein Header("") mit ausgibst der annäherungsweise was mit XML-Daten zu tun hat, landet die Datei als text/html im Brwoser (default bei PHP), da kann sie .xml heissen wie sie will: der Content-type entscheidet und eine HTML-Datei(!!) hat nunmal mit <xml-stylesheet> nix am Hut. So einfach ist das.

    Schau die Info zu Header() im PHP-Manual an, ohne das gehtz nicht.
    Such dir ein Beispielscript, der Dateien ausliest und an den Browser senden, denn das wirst du wohl machen müssen - ziemlicher Akt.
    Vielleicht steht was bei PHPSelf drin - musdugucken.

    Abgesehn davon kann bestenfalls MSIE4+ mit dem XSLT was anfangen, weil NS6 und Opera nämlich nir XML+CSS verstehen. Dazu kommt, das der XML-Parser der mit dem IE (bis 6.0) kommt, kurzum sch... ist, deine Besucher müssten also wenigstens MSXML3 installieren, was sicher keiner macht. Dann geht das nur unter Windoze, weil es den nur dafür gibt. Dumm gelaufen.

    Ergo: dein XML ist ok, kommt aber falsch deklariert bei Browser an (als HTML-Seite), anzeigen könnte es nur ein Bruchteil der Besucher (trotz IE).

    XML serverseitig ist ja ok und löblich, aber dann solltest du auch das XSLT auf dem Server drübernudeln lassen. Auch hier hat dir Thomas gesagt was du dazu brauchst: Sablotron.

    Viel Spaß dabei,das ganze dann auch noch unter Windows zu testen <g>
    CirTap

    1. Hallo,

      Abgesehn davon kann bestenfalls MSIE4+ mit dem XSLT was anfangen, weil NS6 und Opera nämlich nir XML+CSS verstehen. Dazu kommt, das der XML-Parser der mit dem IE (bis 6.0) kommt, kurzum sch... ist, deine Besucher müssten also wenigstens MSXML3 installieren, was sicher keiner macht. Dann geht das nur unter Windoze, weil es den nur dafür gibt. Dumm gelaufen.

      Das stimmt so nicht. Netscape kann ab 6.1 (6.0 habe ich nicht mehr vefuegbar) auch XSLT im Browser, noch besser natuerlich Mozilla. Schau Dir zum Testen mein Winamp3-Beispiel an: http://www.styleassistant.de/tips/beispiel94.xml.

      Beim IE ist es so, dass 5.0 mit MSXML 2.0 kommt, 5.5 MSXML 2.5 dabei hat und der IE6 den XSLT 1.0/XPath 1.0-kompatiblen Parser 3.0 mitbringt.

      MfG, Thomas

    2. Hallo René

      Dich gibt es noch auch!? :-)

      schöne grüße
      thomas