Christian: SSI: Eingebundener Inhalt soll auch durch den Parser

Hallo

Mir stellt sich gerade die Frage, welcher Weg der korrekte ist.

Aufgabe
In einer SHTML-Datei binde ich mit #include verschiedene andere Inhalte ein. Jetzt möchte ich aber, dass in so einem eingebundenen Inhalt noch weitere SSI-Befehle ausgeführt werden. Das funktioniert nur, wenn ich auf meiner eigentlichen Seite über #include eine weitere SHTML-Datei einbinde.

Problem
Die eingebundene SHTML-Datei ist für sich gesehen nicht nach dem HTML Standard geschrieben da hier head, body usw. fehlen. Sehe ich das richtig?

Lösung 1
Ich benutze es so wie oben beschrieben und verstoße somit gegen den HTML Standard (falls das wirklich so ist).

Lösung 2
Ich binde eine Textdatei ein, und gebe dem Server über .htaccess die Info, dass der Parser auch bei Textdateien ausgeführt wird.

Wie seht ihr die Sache?

Grüße, Christian

  1. Hallo Christian.

    Problem
    Die eingebundene SHTML-Datei ist für sich gesehen nicht nach dem HTML Standard geschrieben da hier head, body usw. fehlen. Sehe ich das richtig?

    Na und? Selbst wenn in dem gesamten SHTML-Dokument nur:

    <!--#include virtual="seite.htm" -->

    stehen würde, wäre es dem Browser egal. Du kannst mittels SSI alles einbinden, was sich in deinem Verzeichnis befindet

    Lösung 1
    Ich benutze es so wie oben beschrieben und verstoße somit gegen den HTML Standard (falls das wirklich so ist).

    SHTML hat keinen Standard

    Lösung 2
    Ich binde eine Textdatei ein, und gebe dem Server über .htaccess die Info, dass der Parser auch bei Textdateien ausgeführt wird.

    Das ist unnötig.

    Wie seht ihr die Sache?

    Ich sehe dein Problem nicht.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:( ls:# js:|
    Try it: Become an Opera Lover in 30 days
    1. hallo Ashura,

      Selbst wenn in dem gesamten SHTML-Dokument nur:
      <!--#include virtual="seite.htm" -->
      stehen würde, wäre es dem Browser egal.

      Das ist leider nur _im Prinzip_ richtig. Wenn du das so machst, _muß_ die eingebundene "seite.htm" einen Doctype und mindestens <html></html> enthalten. Sonst stellen moderneBrowser sie möglicherweise nicht als HTML dar. Enthält dagegen die SHTML selbst bereits Doctype und <html></html> _darf_ "seite.htm" diese Elemente nicht enthalten, es gibt sonst invalides HTML.

      Du kannst mittels SSI alles einbinden, was sich in deinem Verzeichnis befindet

      Nein. Es kann nur das eingebunden werden, was als als Text im Verzeichnis liegt. Und es kann erhebliche Mühe machen, per "include" ausführbaren PHP-Code einzustellen. Oftmals läßt sich mit Servereinstellungen (manchmal auch in einer .htaccess) etwas tricksen, aber es kann eben nicht "alles" eingebunden werden.

      SHTML hat keinen Standard

      Wie erläuterst du diese Aussage?

      Ich binde eine Textdatei ein, und gebe dem Server über .htaccess die Info, dass der Parser auch bei Textdateien ausgeführt wird.
      Das ist unnötig.

      Nicht unbedingt.

      Wie seht ihr die Sache?
      Ich sehe dein Problem nicht.

      Ich sehe sehr wohl ein Problem, bin aber nicht sicher, ob es gemeint ist. Was denn soll hier unter "Parser" verstanden werden?

      Grüße aus Berlin

      Christoph S.

      1. Hallo Christoph.

        Das ist leider nur _im Prinzip_ richtig. Wenn du das so machst, _muß_ die eingebundene "seite.htm" einen Doctype und mindestens <html></html> enthalten.

        Ich habe das vorausgesetzt.
        Also:

        seite1.shtml
        |
        |->head.html (alles von <?DOCTYPE... bis </head>)
        |
        |->body.html (alles von <body> bis </html>)

        Sonst stellen moderneBrowser sie möglicherweise nicht als HTML dar.

        Leider _nur_ möglicherweise. ;)

        Enthält dagegen die SHTML selbst bereits Doctype und <html></html> _darf_ "seite.htm" diese Elemente nicht enthalten, es gibt sonst invalides HTML.

        Auch das habe ich vorausgesetzt. Wenn seite1.shtml bereits alle Grundelemente enthält und diese dann _noch einmal_ aufgrund von includes eingebettet werden, wird die Seite zwar in den meisten Fällen noch dargestellt, jedoch ist jeglicher Sinn in der Dokumentenstruktur dahin. Ganz zu schweigen von der Validität und der Fehleranfälligkeit.

        Nein. Es kann nur das eingebunden werden, was als als Text im Verzeichnis liegt.

        Ja, ich habe mich unpräzise ausgedrückt, danke für die Korrektur.

        SHTML hat keinen Standard

        Wie erläuterst du diese Aussage?

        Wiederum unpräzise meinerseits. Ich bezog mich auf den Inhalt der *.shtml Datei selbst, die mit hoher Wahrscheinlichkeit nur Bruchstücke eines validen Dokumentes enthält.
        Natürlich ist davon nichts mehr zu merken, wenn die Datei schließlich vom Server vervollständigt wird.

        Das ist unnötig.

        Nicht unbedingt.

        Zugegeben, man kann dies in Betracht ziehen. Doch muss man dann zugleich den Zusatzaufwand bedenken. Denn es ist direkter, wenn man *.shtml Dateien einbindet, die sowieso geparst werden, als wenn man den Parser erst noch zusätzlich über *.txt Dateien jagt.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:( ls:# js:|
        Try it: Become an Opera Lover in 30 days
        1. Hallo Ashura

          Natürlich ist davon nichts mehr zu merken, wenn die Datei schließlich vom Server vervollständigt wird.

          Ich habe mich ein bisschen ungenau ausgedrückt, das ist mir jetzt im Verlauf der Diskussion aufgefallen, sorry.

          Also, wenn die eigentliche SHTML-Seite mit allen Includes fertig gerendert im Browser dargestellt wird, dann habe ich bei mir valides HTML. Ich achte auch darauf (bei diesem Projekt geht das), dass bei fehlenden Includes trotzdem fehlerfreies HTML geschrieben ist.

          Die Includes selbst, die die Dateinamenendung *.shtml haben, die bestehen ja selbst nicht aus validem HTML, denn hier habe ich nur einzelne Inhaltssegmente die im Projekt mehrfach vorkommen. Hier hatte sich mir dir Frage gestellt, ob die Includes mit (oder gerade wegen) der Endung *.shtml selbst valides HTML enthalten müssen, oder ob es nur wichtig ist, dass am Ende, wenn alle Icludes eingebunden sind, valides HTML entsteht.

          Grüße, Christian

          1. Hallo Christian,

            Hier hatte sich mir dir Frage gestellt, ob die Includes mit (oder gerade wegen) der Endung *.shtml selbst valides HTML enthalten müssen, oder ob es nur wichtig ist, dass am Ende, wenn alle Icludes eingebunden sind, valides HTML entsteht.

            Alles am Ende sollte valides HTML ergeben - nur das kommt im Browser an. Die einzelnen Seiten werden ja im Normalfall nie einzeln an den Browser übermittelt, deswegen ist es vollkommen egal, was diese enthalten, solange sie zusammengewürfelt etwas sinnvolles ergeben.

            Viele Grüße,
            Christian

            1. Hallo Christian,

              »»Alles am Ende sollte valides HTML ergeben - nur das kommt im Browser an. Die einzelnen Seiten werden ja im Normalfall nie einzeln an den Browser übermittelt, deswegen ist es vollkommen egal, was diese enthalten, solange sie zusammengewürfelt etwas sinnvolles ergeben.

              OK, damit kann ich was anfangen. Macht ja auch Sinn so, irgendwie hat mir hierfür die Perspektive am Wochenende gefehlt :)

              Viele Grüße,
              Christian