zurück zur Startseite
  


Zurück XHTMLforum > Sonstiges > Fragen, Konstruktive Kritik, Lob / Bekanntmachungen
Seite neu laden - X!HTML & XSL / W3C Workaround -

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 09.01.2007, 03:34
Benutzerbild von .::TRON::.
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.01.2007
Ort: Erfurt
Beiträge: 6
.::TRON::. befindet sich auf einem aufstrebenden Ast
Beitrag - X!HTML & XSL / W3C Workaround -

Liebe XHTMLforum Gemeinde,

da dies mein erster Forenbeitrag ist, gestattet mir ersteinmal mich kurz vorzustellen (im Usenet ist das ja auch üblich).

Ich beschäftige mich seit einigen Jahren mit Webdesign und demnach auch den damit verbundenen Technologien. Im Interesse meines "Selbststudiums" (im RL studiere ich auch) steht jedoch vielmehr die Erkenntniss grundlegender Zusammenhänge als die Präsentation toller Websites.

Vor kurzem habe ich (wie fast jden Tag) die Seiten der W3C besucht und nach langem Überlegen eine E-Mail an die Betreiber der entsprechenden Subsite verfasst.
(Übersetzung ins Deutsche angefügt)

--------------------------------------------------------------------------
Original Nachricht an das W3C (www-html-editor@w3.org )
--------------------------------------------------------------------------

Dear Sir, dear Madam,
(Sehr geehrte Damen und Herren)

I'm responding to your well established FAQ (XHTML Frequently Answered Questions) section 12 (Does Microsoft Internet Explorer accept the media type application/xhtml+xml?)
(Ich beziehe mich hiermit auf Ihre gut gestaltete FAQ (URL) Abschnitt 12 (Akzeptiert der Microsoft Internet Explorer den Mdientyp (MIME) application/xhtml+xml?))

In short a printout from my "index.html" to make it easier to understand.
(In kürze ein Ausdruck meiner "index.html" und dtd.sxl um es leichter verständlich zu machen.)

[ index.html ]

Zitat:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="./database/d@ta/style/xsl/dtd.xsl" type="text/xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
Now the modifierd "copy.xsl" (renamed to dtd.xsl here!)
(Nun die veränderte "copy.xsl" (hier in dtd.xsl umbenannt!))

[dtd.xsl]

Zitat:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns: xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="/">
<copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
My question is, if my version of that XSL-file is better formed than yours. As you have probably noticed I was including a new line at first. Furthermore I included the FO namespace. Any changes made by me are marked in red.
(Meine Frage ist nun, ob meine Version der XSL-Datei besser geformt ist als die Ihre. Wie Sie vermutlich bemerkt haben fügte ich zu beginn eine neue Zeile ein. Weiter fügte ich eine Deklaration des FO Namesraums ein. Alle Veränderungen, die meinerseits durchgeführt wurden, sind rot markiert.)

Lastly I'd like to know if the "lang="en-US" xml:lang="en-US"" specification within the <html>-tag is well formed.
(Zuletzt würde ich gerne noch wissen ob die "lang="en-US" xml:lang="en-US"") Spezifikation innerhalb des HTML-Tags korrekt geformt ist.)


Yours sincerely, J.C.
(Mit freundl. Grüßen, J.C.)

--------------------------------------------------------------------------

Meine Frage ist nun was Ihr davon haltet. Nach ausführlichen Recherchen und ausgiebiger Validierung (die NUR die "wellformedness" untersuchen, da das XSL standalone ist - keine Dokumenttypdeklaration) bin ich noch kein bisschen schlauer.

Die meisten XSL Documente die im Netz auffindbar sind leiten mit dem <stylesheet>-Tag ein und verzichten meist auf Versionsangabe, Zeichensatz oder ähnliches. Dass die Angabe von FO optional ist - sie macht in dtd.xsl nicht wirklich Sinn - ist mir klar. Dennoch ist es (wie z.B. in Hochsprachen wie C, C++ oder D) auch immer besser mal 'nen include mehr zu machen als etwas unspezifiziert zu lassen. Es ist mehr meine 'Angst' die daher rührt.

Die Angabe von "xml:" in jedem Tag schein korrekt zu sein, aber wohl unnötig, oder?


So. Genug nun der Fragerei. Viel interessanter ist ja wohl warum ich mich dafür interessiere und was es mit Kapitel 12 auf XHTML Frequently Answered Questions auf sich hat. Ist der Workaround doch höchst interessant.

Definiert man auf seinem Server (z.B. Apache) via .htaccess oder unter ./conf/mime.types dass Dateien mit der Erweiterung .xhtml als text/html ausgeliefert werden, so hat auch der MS IE kein Problem mehr. Natürlich will man aber erreichen, dass z.B. ein Opera9 oder Firefox das Dokument durch seinen internen XML Parser jagt, so muss es auch als application/xhtml+xml (MIME-Type) gesendet werden.

Angeblich (so schreibt es das W3C auf o.g. Seite) soll der Workarund mit dem Stylesheet (copy.xsl oder meinem dtd.xsl) eben dafür sorgen.

Leider konnte ich dies bisher nicht feststellen. Erstens ist in meinem nach XHTML 1.0 Strict definierten Document nichts vorhanden, was sich nicht in selber Art und Weise auch mit einem SGML-Parser - wohlgemerkt gleich - darstellen ließe. Weiter irritiert mich weshalb der Browser nicht darauf hört (nicht kann) was der Server zum Header sagt. Jeder Browser sollte sich doch 'nen Teufel darum schern, wass im Dokument unter DTD steht, wenn der Server es z.B. als text/html ausliefert. Anderenfalls würden ja auch nicht foo.ext (z.B. eine foo.html) zum download angeboten. Der Server kann eine HTML ja nur entsprechend übergeben, wenn in der Liste die extension mit einem "bekannten" MIME-Typ vorhanden ist. Somit wird foo.ext oder foo.weißdergeierwas immer zum Download angeboten.

Um nun zu Rande zu kommen. ich habe in meinem (Apache Server steht nur zu hause) tollen 1&1 Webhostingpaket natürlich keinen Zugriff auf MIME-Konfigurationen und deshalb in der .htaccess definiert, dass alle .xhtml entsprechend als (CODE: AddType application/xhtml+xml .xhtml) application/xhtml+xml ausgegeben werden sollen. So und hier ist das W3C am Ende. Alle Browser können das anzeigen, nur der IE7 weigert sich und will downloaden. Somit sehe ich meine Theorie bestätigt, dass der Kopf des (X)HTML Dokuments - der darin enthaltene DTD - einfach irrelevant ist... zumindest in Bezug auf den MIME. Natürlich funktioniert das lesen der xhtml1-transitional.dtd (SYSTEM) weiter.

Ich hätte gerne eine Lösung für oben genanntes Problem. Der Workaraound des W3C scheint mir unzureichend oder ich verstehe ihn nicht.


Auf eine spannende Diskussion...
__________________
:: The author of the M6 image gave me the exclusive right to use it without any restrictions. Anyone else is not permitted to do so. ::

Geändert von .::TRON::. (09.01.2007 um 03:43 Uhr) Grund: Eine Übersetzung fehle und es wurden links angepasst.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 09.01.2007, 12:23
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 19.09.2005
Beiträge: 197
WEBDIMA befindet sich auf einem aufstrebenden Ast
Standard

So ganz klar ist mir Deine (sehr ausführlich) Ausführung nicht.

Warum definierst Du eine XML-Styledatei (XSL) in einem xhtml-Dokument?
Das macht man doch nur in echten XML-Dateien.

Ich denke Dir geht es da ums Prinzip, warum der IE mit XML probleme hat und wie man die umgehen könnte, oder?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 10.01.2007, 14:56
Benutzerbild von .::TRON::.
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.01.2007
Ort: Erfurt
Beiträge: 6
.::TRON::. befindet sich auf einem aufstrebenden Ast
Standard

@WEBDIMA

Tut mir leid wenn ich es nicht gut genug strukturiert habe. Mir ist das selber auch etwas aufgefallen. Es braucht jedoch etwas Zeit den Zusammenhang bis ins letzte zu durchdringen. Schade ist dass ich bisher noch nicht mehr Resonanz erhalten habe, wäre das doch die Gelegenheit das Thema einmal aufzurollen und in der tiefe zu betrachten.

Um Deine Frage zu beantworten...
Zitat:
Warum definierst Du eine XML-Styledatei (XSL) in einem xhtml-Dokument?
Ganz einfach: Weil das W3C dies auf (bitte dem link folgen!) XHTML Frequently Answered Questions so vorschlägt.

Zitat:
No. However, there is a trick that allows you to serve XHTML1.0 documents to Internet Explorer as application/xml.
(...)
Note that this file must be on the same site as the document referring to it.

Although you are serving the document as XML, and it gets parsed as XML, the browser thinks it has received text/html, and so your XHTML 1.0 document must follow many of the guidelines for serving to legacy browsers.

Your XHTML document will continue to work on browsers that accept XHTML 1.0 as application/xml.
Wir wird beschrieben, dass nach Inkludierung des Sheets in das HTML-Dokument vor der Angabe der DTD erreicht wird, dass der MS IE das Dokument als text/html pars, alle anderen Browser aber korrektes application/xml bekommen. vielleicht ist meine Interpretatuion falsch, oder ich habe irgendetwas vergessen.

Aber ich muss wissen wieso und warum das W3C dies so und nicht anders vorschlägt. Auch muss ich wissen wie die Serverkonfiguration da mit reinspielt und vor allem ob meine Korrektur des XSL-Sheets ebenfalls korrekt ist.

PS: Deine letzte Frage hat im Prinzip den Kern getroffen. Ich will aber umgehungsbasteleien via PHP mit verschiedenen DTD's vermeiden. Das ist ein schlechter Stil und verursacht zusätzlich Problem bei der Redundanz der Daten, z.B. dann wenn ein dokument zweifach erstellt werden muss, weil es nicht einer der n Konfigurationen entspricht (fallback).
__________________
:: The author of the M6 image gave me the exclusive right to use it without any restrictions. Anyone else is not permitted to do so. ::
Mit Zitat antworten
  #4 (permalink)  
Alt 11.01.2007, 12:19
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 19.09.2005
Beiträge: 197
WEBDIMA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ganz einfach: Weil das W3C dies auf (bitte dem link folgen!) XHTML Frequently Answered Questions so vorschlägt.
Du schreibst es ja selbst: "vorschlägt".
Meines Wissens sind alle Regelwerke des W3C nur Vorschläge.

Ich glaube, Du verrennst Dich da in irgend etwas.
Nimm das
Zitat:
<?xml version="1.0" encoding="UTF-8"?>
aus den xhtml-Dateien raus, dann läuft der IE auch nicht im Quirks-Mode und gut is.
Du erzeugt so nur unmengen an Blindleistung. Das ist hyper-akademisch und interessiert normalerweisen auch keinen.

Es sei denn, Du beabsichtigst was bestimmtes, was Du aber hier noch nicht erwähnt hast.
Mit Zitat antworten
  #5 (permalink)  
Alt 11.01.2007, 15:58
Benutzerbild von .::TRON::.
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.01.2007
Ort: Erfurt
Beiträge: 6
.::TRON::. befindet sich auf einem aufstrebenden Ast
Beitrag

Hm... das habe ich jetzt noch nie gehört. Ich werde dem nachgehen.


Meine Ursprünglichen Fragen sehe ich aber immernoch nicht beantwortet.

1. Ist mein XSL-Sheet besser geformt als das vom W3C vorgeschlagene?

2. Wie funktioniert der Workaround des W3C eigentlich, d.h. warum binden die das Sheet vor der DTD Angabe ein?

3. Wie kann ich das Dokument korrekt ausliefern ohne PHP-DTD-Selectionsscript?
(Also korrekte http.conf, .htaccess und .html-Dateien Konfiguration)
__________________
:: The author of the M6 image gave me the exclusive right to use it without any restrictions. Anyone else is not permitted to do so. ::

Geändert von .::TRON::. (11.01.2007 um 16:01 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 24.01.2007, 18:23
Benutzerbild von .::TRON::.
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.01.2007
Ort: Erfurt
Beiträge: 6
.::TRON::. befindet sich auf einem aufstrebenden Ast
Idee - Lösung -

Ich füge nun nochmals einen Beitrag in diesem Thread hinzu um das Thema weitestgehend abzuschließen. Dabei möchte ich euch aber nicht nur eine Antwort "hinknallen", sondern auch etwas genauer darauf eingehen wie ich zur Lösung kam.

1] Ist mein XSL-Sheet besser geformt als das vom W3C vorgeschlagene?

A: Grundsätzlich ja, obwohl ich es nocheinmal geändert habe. Das aktuelle Sheet sieht aus wie folgt...

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

<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>

</xsl:transform>
Farblich markierte Änderungen sind von mir hinzugefügt worden.

Meine XML Dateien enthalten allesamt eine valide DTD mit selbst generierter .DTD-Datei. Nur damit das auch gesagt ist.


2] Wie funktioniert der Workaround des W3C eigentlich, d.h. warum binden die das Sheet vor der DTD Angabe ein?

A: Um diese Frage zu beantworten ist neben ein Grundkenntnissen in XML auch ein Verständniss des IE6/7 Browsers erforderlich.

Im XSL Sheet wird grundsätzlich nur eine Ersetzung durchgeführt.

Die XSL-Datei sollte mit <xsl:template match="/"> beginnen. Diese Anweisung enthält die Angaben, was der Browser machen soll, wenn das Element / aufgerufen wird. Das spezielle Zeichen "/" bezeichnet hier das Root-Element der XML-Datei, das auf jeden Fall aufgerufen wird. Dort beschreibt man dann erstmal den Aufbau der Seite.

Der Befehl "xsl:copy-of" kopiert Tags, bzw. eigentl. Knoten in XML-Dateien. Man könnte auch sagen, es fügt Teilstrukturen and Ergebnisstrukturfragmente in die Ergebnisstruktur ein.

Letztlich hat dies vereinfacht gesagt zur Folge, dass der Browser gezwungen wird alle HTML inhalte die im Ursprungsdokument vorhanden sind nun durch den XML Parser der Internet Explorers geschickt werden (Ja den gibt es!). Kurzum: Das HTML Dokument wird als application/xml geparst und nicht als text/html.


3] Wie kann ich das Dokument korrekt ausliefern ohne PHP-DTD-Selectionsscript?

A: Aehm... garnicht!
Selbst mit dem Workaround des W3C ist eis einfach unvereinbar/unmöglich verschiedene DTD's für verschiedene Dokumente, zur Anzeige unter letztlich verschiedenen Browsern und deren jeweils speziellen Anforderungen, auszuliefern.

Letztlich bleibt nur die Möglichkeit auf ein Script wie das Folgende zurückzugreifen.

Zitat:
<?php

/* vim : set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/* np++: set tab-size=4 replace-with-spaces=no file-type-detection=auto */

/**
* Short description for file
* <left behind>
* Long description for file (if any)...
* <left behind>
* PHP versions 4 and 5
* @category CategoryName
* @package PackageName
* @author Original Author <info@tron-delta.org>
* @author Another Author <team@tron-delta.org>
* @copyright 2007 TRON-DELTA.ORG
* @license http://tron-delta.org/license/<foo>
* @version TurtoiseSVN
* @link http://tron-delta.org/downloads/package/<foo>
* @see NetOther, W3C Workaround, Switch
* @since File available since Release 1.0.0
* @deprecated File deprecated in Release 2.0.0
**/

$charset = "UTF-8";
$mime = "text/html";

function fix_code($buffer) {
return (preg_replace("!\s*/>!", ">", $buffer));
}

if(stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) {
if(preg_match("/application\/xhtml\+xml;q=([01]|0\.\d{1,3}|1\.0)/i",$_SERVER["HTTP_ACCEPT"],$matches)) {
$xhtml_q = $matches[1];
if(preg_match("/text\/html;q=q=([01]|0\.\d{1,3}|1\.0)/i",$_SERVER["HTTP_ACCEPT"],$matches)) {
$html_q = $matches[1];
if((float)$xhtml_q >= (float)$html_q) {
$mime = "application/xhtml+xml";
}
}
}
else {
$mime = "application/xhtml+xml";
}
}

if(($mime == "application/xhtml+xml") AND ($enforce == "on")) {
$prolog_type = "<?xml version=\"1.0\" encoding=\"$charset\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n\t\t\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\">\n";
}

if(($mime == "application/xhtml+xml") AND ($enforce == "off")) {
$prolog_type = "<?xml version=\"1.0\" encoding=\"$charset\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\t\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n";
}

if ($mime == "text/html") {
// ob_start("fix_code");
$prolog_type = "<?xml version=\"1.0\" encoding=\"$charset\"?>\n<?xml-stylesheet type=\"text/xsl\" href=\"dtd.xsl\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n\t\t\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en-US\" lang=\"en-US\">\n";
}

header("Content-Type: $mime;charset=$charset");
header("Vary: Accept");

print $prolog_type;

?>
Die HTML-Datei, welche obriges PHP-Script aufruft enthält nur noch folgendes anstelle des DTD-Definitionsteils:

Zitat:
<?php
$enforce = "on";
include("./database/d@ta/script/php/dtd.php");
?>
Dabei steuert enforce mit dem switch on/off ob XHTML 1.1 oder doch nur 1.0 Strict verwendet wird. Den HTML 4.01 Teil habe ich abgeschaltet, da ich ihn selbst für den IE für nutzlos erachte. Dementsprechend ist auch die Funktion fix_code nichtig. - Sie wird einfach nicht aufgerufen. Der Rest sollte im Grunde selbsterklärend sein.


Was bleibt sonst noch zu sagen....?

Achja ein Ausdruck meiner .htaccess und ein Hinweis auf das META meines Portals.


Viel Spaß!

PS: Ich weiß dass die htaccess 'ne Baustelle ist.
__________________
:: The author of the M6 image gave me the exclusive right to use it without any restrictions. Anyone else is not permitted to do so. ::

Geändert von .::TRON::. (12.03.2007 um 04:11 Uhr) Grund: Kleinere Fehler in der Anzeige beseitigt.
Mit Zitat antworten
  #7 (permalink)  
Alt 09.02.2007, 10:07
{ display: random;}
XHTMLforum-Kenner
 
Registriert seit: 08.09.2004
Ort: Stuttgart
Beiträge: 3.891
andir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Menschandir ist ein sehr geschätzer Mensch
Standard

Vielen Dank für deine ausführliche Erklärung.
__________________
Grüsse Andreas- auch mal wieder da...

Design isn't about the tools, it's about creating the best experience for the user. A design should be based on usability, accesibility, aesthetics, but never on floats, lists or background images. ( by Cameron Adams)
Wiedergelesen: > hier und hier

[Foren-Links] Dein Post? Klar, DAS vorher gelesen? Hilft. ## User-Landkarte
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
xhtml mit xsl? .rhavin (X)HTML 2 29.11.2009 02:55
W3C und Strict XHTML Problem mit input Stefano (X)HTML 11 14.12.2006 14:07
xhtml 1.0 strict - w3c validator bringt viele meta tag fehler bastien (X)HTML 4 03.09.2006 15:50
W3C veröffentlicht neuen Entwurf für XHTML 2.0 kadees Offtopic 2 27.07.2006 23:30
XHTML FAQ beim W3C beeviz Ressourcen 0 23.07.2004 09:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.