Thomas J.S.: include in XSL-Datei nutzen

Beitrag lesen

Hallo,

Übrigens, für weitere Hilfe wird es notwendig sein, dass du _uns_ auch mal ein wenig mehr Informationen lieferst.

Ich habe die beiden einzufügenden PHP-Dateien und eines der XML/XSL-Dokumente mal hier zusammengefasst, damit ihr euch mal einen Überblick verschaffen könnt:

»

Danke, aber damit kommen wir nicht weiter.

Wie machst du die XML/XSL-Transformation: per PHP, oder überläßt du es dem Browser?

Ich bearbeite die XML/XSL-Dateien auf der Festplatte mit dem Programm XML Writer und lade sie dann per FTP auf meinen Webspace bei Strato hoch.

OK, mir scheint wir haben da ein kleines Kommunikationsproblem.

Also: damit PHP-Anweisungen (wie <?php include "menu.php"?>) ausgeführt werdne, muss die Datei die so eine anweisung enthält, vom PHP-Interpreter am Server verarbeitet werden.(1)

Alles so lang kein Problem, bis der Server weiß, welche Dateien der dem PHP-Interpreter übergeben muss, damit er diese Dateien verarbeitet, so dass der Serven dann am Ende dem Browser nur noch HTML schickt.(2)

Jetzt kommt dein XML und XSL ins Spiel:
So wie ich deine Dateien gesehen habe, überläßt du die XML/XSL-Transformation dem Browser (d.h. in der Adressenzeile des Browser steht dann so etwas: http://www.example.org/foo/auswaerts.xml).

Wenn das wirklich der Fall ist, musst du die Sache mit dem PHP im XSL gleich vergessen. Die Browser können nichts mit PHP-Anweisungen anfangen, also werden sie auch keine <?php include "menu.php"?> ausführen.

Wenn du aber die XML/XSL-Transformation am Server machst (d.h. das XML wird am Server mit dem XSLT transformiert und der Server sendet am Ende wieder nur schlichtes HTML an den Browser.), dann hast du gute Chancen, dass du dein Vorhaben verwirklichen kannst. Trotzdem muss du einige Dinge überlegen.

(1) und (2) sind auch hier noch wichtig.
Und wieder kommt dein XML und XSL ins Spiel.
Was passiert jetzt: der Besucher deiner Seite hat jetzt so etwas in der Adressenzeile seines Browsers: http://www.example.org/foo/auswaerts.php.
Der Server weiß nun, dass er .php Dateien dem PHP-Interpreter übergeben muss.
Nun stehen in deinem PHP-Script die Anweisungen für PHP wie er die XML/XSL-Transformation machen kann und soll.
PHP sucht also deine XML-Datei und transformiert sie mit deiner XSL-Datei zu HTML. Und da hast du das Problem: du hast hier als Ergebnis der Tranformation HTML, dass der Server dann auch gleich dem Browser schickt, der natürlich noch immer keine Ahnung hat was er mit einem "<?php include "menu.php"?>" im HTML machen soll.

Was kannst du machen?
Du musst dieses HTML abfangen und es wieder dem den PHP-Interpärter übergeben, damit er dann die Anweisung <?php include "menu.php"?> ausführt.
Das kannst du auf zweiterlei Arten machen:

  • du bringst deinem PHP-Skript bei, dass der _vor_ einer XML/XSL-TRansformation das XSL wie eine PHP-Datei behandeln soll: also die Datei verarbeiten, die PHP-Anwesungen in der Datei ausführen und so an Ende ein XSL-Datei zu haben, in der schon alles inkludiert ist (also auhc das Menü etc.) Dann kannst du erst dein XML mit diesem neuen XSL transformieren.

  • die andre Variante: du führst zuerst die XML/XSL-Transformation am Server aus: fängst du das Ergebniss der TRansformation ab, und übergibts diese Ergebnis dem PHP-Interpreter, damit er die PHP-Anweisungen die in dieser Datei stehen ausführt und erst dann über den Server das endgültige HTML an den Browser sendet.
    Diese Variante wäre die einfachere.

Ab hier muss du also die Sache eben vergessen (Transformation im Browser) oder du musst dich kräftig in die PHP-Dokumentation einarbeiten.

Grüße
Thomas