dciwam.de / faq / validator / validator-parameteruebergabe-unerklaerliche-meldung

Unerklärliche Fehlermeldung bei Link mit Parameterübergabe

(general entity not defined)

Bei der Validierung eines Dokuments meldet der Validator folgenden Fehler:

 Line 111, column 22:
 ...  <a href="/script.cgi?blubb=dingdong&bla=brabbel& ...

 Error: general entity "bla" not defined and no default entity

Was mache ich falsch?

Das "&" ist ein Sonderzeichen, dass in HTML-Dokumenten grundsätzlich als "&" geschrieben werden muss, damit die Seite valid ist. Das gilt auch, wenn es in einem Link vorkommt.

Der Attributwert von href ist zwar eine URI-Referenz, doch diese ist CDATA und muss in HTML korrekt maskiert werden. Dies bedeutet, dass jedes &, welches als Parameterseparator dient, als &amp; geschrieben werden muss. Richtig wäre also:

<a href=&quot;/script.cgi?blubb=dingdong&amp;bla=brabbel&amp; ...

Das W3C empfiehlt, in href- und src-Attributen statt & ein Semikolon (;) als Parameterseparator zu verwenden. Dies benötigt aber in der Regel eine Anpassung des verarbeitenden Skripts. Das häufig benutzte Perl-Modul CGI.pm unterstützt sowohl ; als auch & als Parameterseparator. Dies ist sowieso sinnvoll, da dann auch per GET übertragene Formulare, welche vom Browser her stets & als Separator verwenden, immer noch funktionieren.

Um in von PHP erzeugten URIs & durch &amp; zu ersetzen, muß in der Konfigurationsdatei php.ini die Anweisung

arg_separator.output = "&amp;"

notiert werden. Wobei als Trennzeichen das Semikolon (;) statt &amp; noch besser geeignet wäre (sofern nicht Formulare verarbeitet werden sollen).

Siehe auch:

Da wird aufgezeigt, was im Zusammenhang mit Parameterübergabe in der URL so alles schieflaufen kann.

Daniel Werner • dw@dur.ch
Lars Kasper • mail@LarsKasper.de

Zum Seitenanfang

URL: http://dciwam.de | Letzte Änderung: 20.05.2009 | G. Schneider | Kontakt