kaepten: http-equiv="Content-Type" - validierer Tidy meckert

Hoi zäme

Wenn ich die Spracheinstellung so definiere:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1">

Dann meckert mir mein Validierer, http-equiv="Content-Type" sei nicht nötig und löscht es. (HTML 4 standard)

Wer hat nun recht? Ich, oder der Validierer? Wird das http-equiv nicht (mehr) angegeben??

cheers
kaepten
(-o-)
mei de fors bii wit iu!

  1. Wenn ich die Spracheinstellung so definiere:

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1">

    Zeichensatz!

    Dann meckert mir mein Validierer, http-equiv="Content-Type" sei nicht nötig und löscht es. (HTML 4 standard)

    Wer hat nun recht? Ich, oder der Validierer? Wird das http-equiv nicht (mehr) angegeben??

    Also, erstmal nehme ich mal an, dass du mit 'Validierer' Dave Raggetts HTML Tidy meinst. HTML Tidy ist ein 'pretty printer' oder auch einfach ein Säuberungsprogramm für HTML Datein. Man kann ihn vielleicht auch noch als HTML Checker bezeichnen, aber ein Validator ist es nicht. Ein Validator prüft mit einem SGML Tool wie SP von James Clark die Validität des HTML Codes gegen die angegebene DTD, Tidy tut das nicht und ist somit kein Validator, aber das nur nebenbei.

    Fakt ist, dass HTML4 die Attribute HTTP-EQUIV und NAME als CDATA definiert und man somit dort nach belieben Text plazieren kann, das ist auch bei HTML 4.01 nicht anders. Die HTML 4.01 Specs selber benutzen die Angabe ja auch...

    HTTP-EQUIV dient dazu, wie du wohl schon weisst, eine Entsprechung für einen Header einer HTTP Message zu definieren. Du willst jetzt 'Content-Type' spezifizieren, um genau zu sein, willst du das verwendete Charset, den Zeichensatz angeben, was auch völlig legitim ist, aber imho unnötig.

    Wesentlich sinnvoller ist es, wenn du in deiner /public_html/.htaccess oder gleich in der httpd.conf folgendes einträgst:

    AddType "text/html; charset=iso-8859-1" html

    Damit wird die Meta Angabe tatsächlich unnötig, weil bei jedem HTTP Request der Server gleich 'Content-type: text/html; charset=iso-8859-1" bei .html Datein sendet (eleganter, wird eher unterstützt, spart Bandbreite, macht den Code übersichtlicher, etc.)

    (IIRC gab es auch mal ein Problem mit dem Netscape Navigator und dieser Angabe. Ich glaub er führte dann immer einen Reload der Seite durch oder so...)

    Somit wäre ein solcher Hinweis sicherlich richtig, aber er würde mich überraschen. Ich helfe selber bei der Weiterentwicklung von HTML Tidy mit und mir war ein solches Verhalten unbekannt, daher:

    bjoern@intranet $~ tidy

    Tidy (vers 26th July 1999) Parsing "stdin"
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html40/loose.dtd">
    <HTML lang="de">
    <HEAD>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1">
    <title></title>
    </head>
    <body>
    <p>meta test</p>
    </body>
    </html>

    ^Z

    "stdin" appears to be HTML 4.0
    no warnings or errors were found

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html40/loose.dtd">
    <html lang="de">
    <head>
    <meta http-equiv="Content-Type" content=
    "text/html; charset=iso-8559-1">
    <title></title>
    </head>
    <body>
    <p>meta test</p>
    </body>
    </html>

    also gibt es keine Warnmeldung, noch streicht er es. Ich weiss nicht, ob du nicht vielleicht das HTML Kit von 'chami' meinst, da weiss ich nämlich gerade nicht, ob das so ist, falls ja, solltest du den Autor kontaktieren.

    Um es zusammenzufassen:

    * <meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1"> zu benutzen ist völlig legal und bei Dokumenten, die man sich downloaden soll zum offline lesen, empfehle ich es einzusetzen.

    * Bei den anderen (also den allermeisten) Seiten, sollte man lieber in die .htaccess

    AddType "text/html; charset=iso-8859-1" html

    schreiben, aus o.g. Gründen.

    Quellen:
    http://www.w3.org/TR/html40/struct/global.html#adef-http-equiv
    http://www.w3.org/People/Raggett/tidy/
    http://www.chamisplace.com/
    view-source:http://www.w3.org/TR/html40/struct/global.html#adef-http-equiv

    Ich hoffe das hilft.

    --
    Björn Höhrmann - mailto:bjoern@hoehrmann.de - http://bjoern.hoehrmann.de
    Benutzt du immer einen ALT Text bzw. ALT="" bei Layoutgrafiken?  NEIN?  Dann wird es Zeit: Warum ALT Attribute Pflicht sind: http://www.bjoernsworld.de/html/alt-text.html
    1. Fakt ist, dass HTML4 die Attribute HTTP-EQUIV und NAME als CDATA definiert und man somit dort nach belieben Text plazieren kann, das ist auch bei HTML 4.01 nicht anders. Die HTML 4.01 Specs selber benutzen die Angabe ja auch...

      Name und nicht CDATA, aber das ist hier nicht weiter wichtig...

    2. Hallo

      Vielen Dank für Deine ausführliche Erklärung. Ich experimentiere mit 1st Page, in welchem Tidy integriert ist.

      Mein Quellcode:
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8559-1">
      <title>sowieso</title>
      </head>
      <body>
      bla bla
      </body>
      </html>

      Nach der Bereinigung durch Tidy:
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <html>
        <head>
          <meta content="text/html; charset=iso-8559-1">
          <title>
            sowieso
          </title>
        </head>
        <body>
          bla bla
        </body>
      </html>

      Mit der Meldung:
      Tidy (vers 26th June 1999)
      line 4 column 1 - Warning: <meta> unrecognized attribute value "http-equiv"

      Gut, ich weiss ja nun um was es geht. Wenn ich über w3.org den dortigen validierer nehmen, steckt da nicht Tidy dahinter? Welchen Validierer kannst Du denn weiterempfehlen?

      cheers
      kaepten

      1. Mit der Meldung:
        Tidy (vers 26th June 1999)
        line 4 column 1 - Warning: <meta> unrecognized attribute value "http-equiv"

        Bei meinem win32 Eigenkompilat von der 26th July Version gibt es das nicht. Du solltest dir eine neue Version besorgen, oder in attrs.c attrlist[] um "http-equiv",       VERS_ALL,               TEXT,     /* META */ erweitern

        Gut, ich weiss ja nun um was es geht. Wenn ich über w3.org den dortigen validierer nehmen, steckt da nicht Tidy dahinter? Welchen Validierer kannst Du denn weiterempfehlen?

        hinter http://validator.w3.org/ steckt generell SP bzw. als Teil davon NSGMLS von James Clark (http://www.jclark.com/. Dies ist ein SGML Validator, der sich die von dir Angegebene DTD nimmt und den Code gegen diese DTD überprüft.

        HTML Tidy ist, wie schon gesagt, kein Validator, da er dies nicht tut.

        Als Validator empfehle ich http://www.htmlhelp.com/tools/validator/ der generell das gleiche tut, wie der von Gerald O. aber eine bessere Erklärung für Fehler gibt, u.a. UTF-8 auch korrekt parsed, und einige andere Schmankerl hat.

        Den gibt es übrigens auch als ShareWare Windows Programm bei http://arealvalidator.com und ist sein Geld wert.

        --
        Warum mindestens ALT="" _immer_ sein muss: http://www.bjoernsworld.de/html/alt-text.html