# Keine Probleme mit XHTML 1.1 ?



## Atmosphinx (27. August 2005)

Hallo miteinander

 Ich habe vor Kurzem begonnen, für meine neusten Projekte der aktuellen W3C-Empfehlung zu folgen und XHTML 1.1 zu verwenden. Auf vielen Seiten, die sich mit Doctype-Deklarationen und ihren Auswirkungen befassen, wird von XHTML 1.1 abgeraten. Hauptargument gegen den neusten Standard ist meist, dass in ihm geschriebene Dokumente als "application/xhtml+xml" (bzw. "text/xml") ausgeliefert werden sollten, was jedoch der Internet Explorer nicht zu unterstützen scheint. Darum publizieren standardbewusste Entwickler lieber in XHTML 1.0 strict und liefern ihre Arbeit als "text/html" aus.

 Nun habe ich trotz dieser Einwände XHTML 1.1 (und "application/xhtml+xml") verwendet und kann keine Fehler erkennen. Alle meine verfügbaren IE-Versionen (IE 5.0 / IE 5.5 / IE 6.0) können mit den Seiten umgehen. Schon dies deutet darauf hin, dass irgendetwas nicht stimmen kann. Klar wird das, wenn ich "text/xml" (oder andere bisher nicht oder kaum unterstützte Auslieferungsarten) verwende und auch dies in allen getesteten Browsern ordnungsgemäss dargestellt wird. Da mich dies beunruhigt und die Folgen bei fehlerhaftem Parsing fatal sein können, bitte ich um Eure Hilfe.

 Seht Euch doch einmal die beiden unten verlinkten Pages an, insbesondere auch den Quellcode. Weshalb werden sie korrekt dargestellt, obwohl sie das gar nicht dürften? Könnte es etwas mit der Serverkonfiguration zu tun haben, nach der eventuell alle Dokumente implizit als "text/html" ausgeliefert werden?

http://www.ddr.arxantis.com
http://www.elefant.arxantis.com

        Vielen Dank für Eure Bemühungen
        Atmosphinx


----------



## Gumbo (27. August 2005)

Alle als ausgereift erachtete Spezifikationen des W3Cs werden „Empfehlung“ gennant. Dies bedeutet im Bezug auf die Hypertext-Auszeichnungssprachen jedoch nicht, dass XHTML 1.1 den „älteren“ Sprachen XHTML 1.0 sowie HTML 4 vorzuziehen ist.

Die Deklaration des auszuliefernden Media-Typen muss oder sollte bereits im HTTP-Header erfolgen und nicht erst innerhalb des Quellcodes beispielsweise als pseudo-HTTP-äquivalente Angabe eines meta-Elements. Anders könnte ich es mir nicht erklären, dass der Internet Explorer den Media-Typen „application/xhtml+xml“ interpretiert – es sei denn, du benutzt einen zusätzlichen Plugin, der dies möglich macht. Und ein Blick in die Antwort-HTTP-Header-Felder mit Web-Sniffer zeigt auch schnell, dass dem so ist.


----------



## Atmosphinx (28. August 2005)

*XHTML 1.1 als "text/html"*

Natürlich sind die XHTML-Spezifikationstypen ebenso "nur" eine Empfehlung wie HTML 4.01 (oder frühere Versionen). Die Ansicht, dass sie älteren Typen nicht vorzuziehen seien, teile ich jedoch nicht. Die allgemeine Tendenz läuft eindeutig in die Richtung, Internetdokumente auf XML-Basis auszutauschen, was ja nicht nur hinsichtlich der Maschinenlesbarkeit Vorteile bringt. Dass die Zukunft eher bei XML als bei SGML gesucht wird, zeigen die Bemühungen rund um XHTML 2.0 und die vermehrte (wenn auch häufig illusionsbehaftete) Anwendung von XHTML 1.x in Entwicklerkreisen.

 Tatsächlich wird in meinem HTTP-Header die Deklaration "text/html" mitgeliefert, weshalb die Angaben innerhalb des Quellcodes auch wirkungslos zu sein scheinen. Nun meint das W3C ja, XHTML 1.1-Dokumente sollten (SHOULD) mit "application/xhtml+xml" und sollten nicht (SHOULD NOT) als "text/html" ausgeliefert werden (vgl. hier). Viele Entwickler, welche neuere Standards umsetzen möchten, behelfen sich nun damit,  XHTML 1.0 strict zu benützen, weil das heilige W3C dort "text/html" erlaubt. Nun macht es meiner Ansicht nach jedoch ebenso wenig Sinn XHTML 1.0 strict als "text/html" auszuliefern wie XHTML 1.1, da diese beiden Typen bis auf wenige Unterschiede identisch sind.

   Konsequent wäre es darum wohl, solange HTML 4.01 zu verwenden, bis in ferner Zukunft auch einmal der Internet Explorer "application/xhtml+xml" verstehen wird und die Internetnutzer diese ferne Version auch grösstenteils anwenden werden. Doch weil ich in der Praxis keine Probleme damit sehe, XHTML 1.1 als "text/html" auszuliefern und der HTTP-Header bei gegebener Zeit leichter zu ändern ist als die Deklarationen einzelner Dokumente, werde ich wohl bis auf (un-)absehbare Zeit mit dem Widerspruch zwischen XHTML 1.1 und "text/html" leben. Oder sieht hier jemand auch in der Praxis irgendwelche Probleme?

   Atmosphinx


----------



## Gumbo (28. August 2005)

> […] bis in ferner Zukunft auch einmal der Internet Explorer "application/xhtml+xml" verstehen wird und die Internetnutzer diese ferne Version auch grösstenteils anwenden werden.


Das steht ganz oben auf meiner Weihnachts-Wunschliste, die ich bald nach Himmelspforten an den Weihnachtsmann schicken werde.



> […] werde ich wohl bis auf (un-)absehbare Zeit mit dem Widerspruch zwischen XHTML 1.1 und "text/html" leben. Oder sieht hier jemand auch in der Praxis irgendwelche Probleme?


Da es sowieso kaum Browser mit SGML-konformen HTML-Parsern gibt, sollte es eigentlich keine Probleme geben. Allerdings ist aber auch nicht im Sinne des Erfinders.
Wieso möchtest du denn überhaupt XHMTL 1.1 verweden, wenn du es sowieso als stinknormales HTML auslieferst?


----------



## Atmosphinx (28. August 2005)

*IE7 und "application/xhtml+xml"*



> Wieso möchtest du denn überhaupt XHMTL 1.1 verweden, wenn du es sowieso als stinknormales HTML auslieferst?


 Gute Frage. Ich liefere es ja erzwungenermassen als "stinknormales" HTML aus. Wenn ich nicht etwa 80% aller Webnutzer durch die andere Auslieferungsart ausschliessen würde, hätte ich längst umgestellt. Eine spätere Umstellung jedoch ist umso einfacher, je weniger Änderungen man vornehmen muss. Wenn ich die Dokumente XHTML 1.1 konform schreibe und sie nur durch eine entsprechende Angabe im HTTP-Header als HTML ausliefere, brauche ich später lediglich an einer Stelle etwas zu verändern. Nun, aller Vorausicht nach dürfte dieser Zeitpunkt aber noch sehr weit in der Zukunft liegen.

 Weiss eigentlich jemand, ob der IE mit Version 7 "application/xhtml+xml" endlich unterstützen wird? Wenn nicht, dürfte einer echten Verwendung von XHTML für längere Zeit ein (zu) grosses Hemmnis im Weg stehen. Da würden auch diesbezügliche Wünsche an den Weihnachtsmann leider wohl nicht allzu viel helfen.

        Atmosphinx


----------



## SilentWarrior (28. August 2005)

*Re: IE7 und "application/xhtml+xml"*

Der IE 7 wird XHTML nicht unterstützen.

Ausserdem – warum schreibst du dir nicht ein Script  (oder holst dir eins), das überprüft, ob der Browser XHTML versteht und wenn ja, lieferst du das Dokument als application/xhtml+xml aus, und sonst (sprich: wenn der IE kommt … oder Lynx, aber der zählt nicht) mit text/html. Ich mach das bei meiner Seite auch so (weil ich – genau wie du – den Sinn dahinter nicht sehe, dass man XHTML 1.0 noch als text/html senden darf, aber 1.1 nicht mehr, obwohl da nur minimale Änderungen vorgenommen wurden (zumindest gegenüber XHTML 1.0 Strict).


----------



## Gumbo (28. August 2005)

Leider deutet die bisherige Vorab-Version des Internet Explorers 7 – eine Beta-Version, bei der man eigentlich davon ausgehen kann, dass bereits alle Features implementiert sind und nur noch minimalste Fehler ausgebessert werden müssen – nicht darauf hin, dass dies in der Vollversion unterstützt wird. Es wurden hauptsächlich CSS-Bugs behoben (vgl. Mezzoblue – IE7 CSS Update).

Ich glaube, die Herren Entwickler von Microsoft kümmert das auch kaum. Denn wenn der Internet Explorer neben RSS-Feeds auch noch die beliebten Tabs unterstützt, wird es für viele bestimmt keinen Grund mehr geben auf einen anderen Browser zu wechseln – leider.


----------



## Inspector (1. September 2005)

Hi,

ich verwende seit einiger Zeit auf meiner HP xhtml 1.0. Dabei habe ich auch längere Zeit keine Probleme festgestellt. Die Dateien haben nach wie vor die Endung ".html" und werden als "text/html" ausgeliefert. So weit kein Problem.

Neulich allerdings ist mir da ein dicker Hund untergekommen. Seit Kurzem generiere ich meine Seiten per xsl aus einem html Template und einer vereinfachten html-Datei. Im Template steht, wie das für html 4.x gefordert wird:

```
<script type="javaScript" ... blah blubber></script>
```
Daraus macht xsl:

```
<script type="JavaScript ... blah blubber />
```

Und ratet mal, welcher Browser damit massive Probleme hat? In xhtml ist letzteres ja perfekt legal. Aber der IE zeigt dann von der Seite nur noch den Hintergrund an, sonst Nix. Und Opera zeigt gar Nix mehr an.

Und ich kann xalan nicht überreden, für script die Langform zu verwenden. Es gibt also durchaus Stellen, wo diverse Browser mit xhtml komplett überfordert sind.


----------



## fish-guts (2. September 2005)

Moin

 Naja ich denke mal, solange der IE das nicht frisst, sollte man eh verzichten.

 Die Webseiten im Geschäft schreiben ich in XHTML1.0, das frisst der Feuerfuchs problemlos, aber der IE hat gröber mühe.

 Belass deinen Code doch einfach in Html 4.01. Jag ihn durch den Validator und dan frisst jeder Browser deinen Code (* html bei den Tabellen angeben nicht vergessen )

 Gruss FG


----------



## Inspector (2. September 2005)

Hi,

ich hab 'ne andere Lösung praktiziert: Das JavaScript entfernt. War ein Styleswitcher. Für den Firefox gibt's Sowas als Extension. Das ist eh besser  Der IE kann sowieso keine alternativen Stylesheets, also Schwamm drüber. Bleibt nur noch Opera.

Ich habe xhtml gewählt, weil ich viel mit xsl arbeite. Auch die fertigen html-Seiten werden noch mal weiter verarbeitet, um z.B. rdf-Daten daraus zu extrahieren. Das geht nur, wenn es wohlgeformtes xml ist. Das trifft zu für valides xhtml, nicht jedoch für html 4.

Allenfalls könnte ich zusätzlich, extra für den IE, eine aus der xhtml automatisch generierte html 4 Version vorhalten. Einen Link darauf auf der Startseite, der nur für IE sichtbar ist, wäre auch noch möglich. Allerdings erinnert mich das stark an Südafrika und die Apartheit: "Schwarze müssen hier rein, Weiße dürfen dort rein". Nicht unbedingt mein Ziel. So, wie es jetzt ist, ist es zwar auch nicht optimal, aber akzeptabel.


----------



## Gumbo (2. September 2005)

> Und ratet mal, welcher Browser damit massive Probleme hat? In xhtml ist letzteres ja perfekt legal. Aber der IE zeigt dann von der Seite nur noch den Hintergrund an, sonst Nix. Und Opera zeigt gar Nix mehr an.


Rein syntaktisch ist es XML-konform und damit auch XHTML-konform. Allerdings ist das script-Element kein leeres Element, womit die Leere-Element-Schreiweise nicht korrekt ist. (Vgl. DTD-Abschnitt zur script-Element-Definition).


----------



## Inspector (2. September 2005)

Hi,

hmmm, soo firm bin ich nun nicht mit DTDs. Aber daß das Script-Element nicht leer sein darf, geht da für mich nicht draus hervor.

Zitat: "script statements, which *may* include CDATA sections".

So weit ich weiß, kann in xhtml *jedes* Element leer sein, manche *müssen* leer sein.

Bei der Gelegenheit gleich noch eine Frage: Wo gehört eigentlich das "noscript" Element hin?


----------



## Gumbo (3. September 2005)

Ein leeres Element ist etwas anderes als ein Element ohne Inhalt! Allgemein muss zwischen leeren Elementen und Elementen, die keinen Inhalt besitzen, unterschieden werden.

Ob ein XHTML-Element leer sein muss, ist in der DTD nachzulesen.


----------

