Wie kann ich header/footer per XSL erzeugen?

Hallo,

ich habe mich gerade in XSL eingelesen und bin auf ein Problem gestoßen:

Erstmal grob: Ich möchte aus XML-Daten + einem XSL-Template eine HTML-Ausgabe erzeugen.

Ich habe für das Webdesign eine „Standard“-HTML-Struktur, welche standardmäßig bei den meisten Seiten oberhalb und unterhalb (header/footer) vom eigentlich Inhalt eingefügt werden soll.

Konkreter mal ein kurzes Beispiel:

Header:


Footer:


Ich möchte diesen Teil als getrennte XSL-Datei pflegen und in andere, komplexe XSLs inkludieren können, damit im Falle einer Änderung nur an einer Stelle etwas ändern muss.

Das Problem ist jetzt leider, dass im Header ein paar Tags geöffnet werden und diese erst im Footer geschlossen werden.

Dieses XSL ist daher nicht wellformed:

<?xml version="1.0" encoding="UTF-8"?>

Wie kann man das am Besten lösen?

Kann man evtl. eine Art „Variable“ wie „Content“ anlegen, die man dann wie mit einfügen kann?
Dann könnte man nämlich header/footer zusammen in ein -Tag setzen und alle Tags sauber schließen…

Danke fürs Lesen und ggf. Antworten!

Grüße
Stefan

kennst du xsl:text? damit könntest du wahrscheinlich ein tag öffnen und schließen, ohne dass es im xml direkt als tag erscheint und somit valid und wellformed sein sollte.

z.b. so:

Du kannst in deine Basis-XSL weitere XSLs einbinden und auf deren Inhalte an den betreffenden Stellen verweisen.
Etwa so:
Basis:

<?xml version="1.0" encoding="UTF-8"?>

headerTemplate.xsl:

<?xml version="1.0" encoding="UTF-8"?>

Ich bin der Titel

footerTemplate.xsl:

<?xml version="1.0" encoding="UTF-8"?>

Ich bin der Footer

Damit sind alle XSLs in sich wellformed und können getrennt bearbeitet werden. Wenn Du einen XSL-Debugger verwendest, wird dieser zur Laufzeit auch in diese externen XSLs springen.

Ich hoffe, das beantwortet Deine Frage

Wenn noch Fragen sind, einfach nochmal posten. Wenn es etwas eher einfaches ist wie eine normale HTML-Seite würde ich es aber lieber in EINER XSL abhandeln. Sonst verliert man den Überblick, wenn mehrere an diesem Projekt arbeiten.

Hi Snoopy,

die Variante in der Art hab ich jetzt umgesetzt.

Ich habe jetzt das gesamte HTML (header+footer) zusammen in einem XSL.
Allerdings habe ich title und sowas direkt per eingefügt und dann den Teil „content“ als ausgelagert.

Ein XLS welches das template benutzen will, definiert dann ein und inkludiert das header/footer-XLS…

Leider hat es wohl wiedermal fast 24 Stunden gedauert, bis die Frage an die Experten gegangen ist (so hab ichs dann doch schon selbst gelöst bekommen). Ich hab bisher nur selbst Fragen beantwortet (und auch ständig die Fragen erst nen Tag später zu sehe bekommen). Und ich dachte die schreiben die Experten so zeitversetzt an, bis 3 Antworten zusammen sind, damit nicht sinnloserweise alle Antworten. Naja, nächstes Mal weiß ich’s…

Aber immerhin war Deine Lösung von allen bisher die Beste. Vielleicht hilft Dir im Gegenzug meine Lösung, falls Du mal ein ähnliches Problem hast.

LG und Danke,
Stefan

Kannte ich noch nicht… Danke!

Danke für Deine Antwort…

Hilft es?
Konnte es leider nicht ausprobieren…

Ich bin nur immer verblüfft, wofür ich alles der Experte bin. Und ich finde es auch schade, dass das Facebook-Posting nicht geklappt hat.
Weiterhin frohes Schaffen

MfG,
Rocco

Habs mal getestet… Scheint wohl nicht zu gehen, habe es aber schon anders gelöst:

Der Test war sowas hier:

Heraus kommt dann das:

PHP Warning: XSLTProcessor::importStylesheet(): /home/sdwarfs/html/test/std_lay out2.xsl:34: parser error : Opening and ending tag mismatch: i line 34 and xsl:t ext in /home/sdwarfs/html/test/xsl.php on line 36
PHP Warning: XSLTProcessor::importStylesheet(): in /home/sdwarfs/html/test/xsl.php on line 36

Meine Lösung:

Ich habe header+footer zusammen in ein XLS gepackt und den Teil „content“ als ausgelagert.

Ein XLS welches das template benutzen will, definiert dann ein und inkludiert das header/footer-XLS…

Auf jeden Fall trotzdem Danke für deinen Tipp, das Tag kann ich bestimmt anderweitig noch sinnvoll einsetzen.

hallo stefan,

Ich habe für das Webdesign eine „Standard“-HTML-Struktur,
welche standardmäßig bei den meisten Seiten oberhalb und
unterhalb (header/footer) vom eigentlich Inhalt eingefügt
werden soll.

wie wärs, wenn du header und footer in eine grid-datei statt in zwei, eine header-datei und eine footer-datei, machst?
oder hab ich da irgendwas falsch verstanden?

gruß
people