molily: target in XHTML 1.1: nur im aktuellen Working Draft

Beitrag lesen

Hallo,

Ist "target" jetzt doch wieder standardmäßig verfügbar?

Noch nicht.

http://www.w3.org/TR/xhtml11/ verweist auf Working Draft (Arbeitsentwurf, sozusagen ein Prototyp) zur Second Edition von XHTML 1.1. Die bleibende URI davon ist http://www.w3.org/TR/2007/WD-xhtml11-20070216/.

http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd verweist also auf die DTD-Implementierung dieses Working Drafts. Die bleibende URI davon ist http://www.w3.org/TR/2007/WD-xhtml11-20070216/DTD/xhtml11.dtd.

Dies ist wie gesagt der aktuelle Working Draft, der ist seiner Zeit schon voraus. Die letzte maßgebliche XHTML-1.1-Recommendation findet man unter http://www.w3.org/TR/2001/REC-xhtml11-20010531/ und die zugehörige DTD ist dauerhaft unter http://www.w3.org/TR/2001/REC-xhtml11-20010531/DTD/xhtml11.dtd adressierbar.

Wenn man sich die jetzt anschaut, sieht man, dass das Target-Modul erst im Working Draft hinzugekommen ist. Wenn die Second Edition irgendwann fertig ist und das Target-Modul drinbleibt, ist es auch offiziell Teil von XHTML 1.1.

Sprich, wenn du XHTML 1.1 gemäß der Recommendation schreibst, kannst du target nicht verwenden, wenn du XHTML 1.1 gemäß dem Working Draft schreibst, kannst du target verwenden.

Der W3C-Validator (http://validator.w3.org/) gibt mir immer eine Fehlermeldung (Attribut nicht unterstützt) aus, wenn ich das target-Attribut im XHTML1.1-DOCTYPE verwende.

Der W3C-Validator lügt. (Ich liebe es, diesen Satz zu sagen. ;))

Selbst wenn man die URI der neuen DTD des Working Drafts angibt, dann erlaubt er target nicht. Sobald der Validator <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "[irgendwas]"> sieht, dann lädt er sich nicht die tatsächlich angegebene DTD herunter, sondern sucht in seiner internen DTS-Datenbank nach dem Public-Identifier. Und der Validator hat unter diesem Public-Identifier halt die DTD aus der Recommendation gespeichert, nicht aus dem Working Draft (ist ja eigentlich auch sinnig).

Man kann dem W3C-Validator aber explizit sagen, dass er die DTD aus dem Working Draft benutzen soll:

<?xml version="1.0" ?>  
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/2007/WD-xhtml11-20070216/DTD/xhtml11.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">  
<head><title>Beispiel</title></head>  
<body><p><a href="bla" target="bla">bla</a></p>  
</body>  
</html>

Siehe da, dieses Dokument befindet er für valide.

Strenggenommen ist es auch valide, wenn man diesen DOCTYPE angibt:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Würde ein validierender XML-Parser wirklich die DTD von der angegebenen Adresse beziehen, müsste er target-Attribute auch als valide anerkennen. Aber das macht der W3C-Validator nicht.

Mathias