MudGuard: korrekten Code schreiben

Beitrag lesen

Hi,

Das Thema hatten wir bereits gelegentlich. In CSS sind Maßeinheiten meines Wissens unumgänglich, in Attributen von HTML-tags sind sie durchaus zulässig, aber nicht "required". Der Validator meckert nicht, wenn er welche findet, er vermißt sie allerdings auch nicht.

Der Validator kann nicht meckern - da sowohl Pixelzahlen als auch Prozentwerte erlaubt sind, kann nicht NUMBER als Datentyp verwendet werden (wie es z.B. beim tabindex-Attribut des a-Elements verwendet wird), sondern es muß CDATA verwendet werden. In CDATA ist aber jeder Text zulässig.
Also wird der Validator auch nicht anmeckern, wenn Du
<img src="bla.png" width="dreizehnzentimeter" height="sonstirgendeintext" alt="bla">
reinschreibst.
Kannst Du hier nachgucken: http://validator.w3.org/check?uri=http%3A%2F%2Ftemp.andreas-waechter.de%2Fnotinvalid.html&charset=(detect+automatically)&doctype=(detect+automatically)&ss=1

Die Einschränkung, daß keine Einheit angegeben wird, befindet sich also nicht in Formalien, da es keine formale Möglichkeit gibt, nur eine Zahl oder eine Zahl gefolgt von Prozentzeichen zuzulassen, in einem Kommentar der DTD. Und da es sich nicht um eine formale Einschränkung handelt, kann der Validator diese auch nicht finden.

Die beiden Attributwerte sind wie folgt definiert:
  height      %Length;       #IMPLIED  -- override height --
  width       %Length;       #IMPLIED  -- override width --

Beide verweisen also auf die parameter entity Length, die wie folgt definiert ist:

<!ENTITY % Length "CDATA" -- nn for pixels or nn% for percentage length -->

In dem einschränkenden Kommentar steht nichts von einer Einheit.
==> nicht zulässig.

Ähnliche Fälle, daß Einschränkungen nur in Kommentaren stehen, weil sie formal in einer DTD nicht ausdrückbar sind, gibt es auch bei anderen Attributen (z.B. color, das auch vom Typ CDATA ist, aber auch nicht beliebige Zeichenketten zuläßt)

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.