Fehler bei XHTML- Validierung

Das beudetet, dass du irgendwo ein Bild-Tag hast, der nicht geschlossen wurde.

da fehlt also irgendwo ein

XHTML:

beide Attribute MÜSSEN gegeben sein :wink:

Schmeißt Valid dann auch eine “tag schließen”-Fehlermeldung aus? o0

nope, aber finde ich etwas übertrieben, vor allem weil undefiniert ist, was er mit dem Inhalt macht :wink:

Stimmt.

Es fehlt doch einfach nur das /> am Ende :smiley:

<img … > ist gröster schwachsinn, abgesehen von reinem xml…

bei xhtml mussen alle leeren elemente (also beispielsweise, br, hr, und img) mit ’ />’ enden.
ausserdem musst du die ‘&’ in den url als Entitie schreiben, da das nachfolgende sonst als Entitie gilt, den es nicht gibt. Also ‘&’ statt '&'
img muss in xhtml immer ein src und ein alt attribut haben.

[quote=“jw-lighting”]<img … > ist gröster schwachsinn, abgesehen von reinem xml…

bei xhtml mussen alle leeren elemente (also beispielsweise, br, hr, und img) mit ’ />’ enden.
ausserdem musst du die ‘&’ in den url als Entitie schreiben, da das nachfolgende sonst als Entitie gilt, den es nicht gibt. Also ‘&’ statt '&'
img muss in xhtml immer ein src und ein alt attribut haben.[/quote]

bei meta Tags muss man auch " />" haben… zb.

<meta http-equiv="content-style-type" content="text/css" />

:wink:

ja das ist klar, ich hab auch nicht balle lehren elemente aufgezählt.
meta und link gehören auch dazu, ich weiss :wink:

Nein, muessen sie nicht - schliesslich ist XHTML eine Anwendung von XML.

Aus Gruenden der HTML-Kompabilitaet sollte man aber verwenden - schliesslich wird XHTML meist noch als text/html augeliefert, und damit durch den Tag Soup Parser gejagt.

Ein leeres Element, bei dem du aber ganz sicher nicht die Kurzschreibweise verwenden, sondern oeffnenden und schliessenden Tag verwenden willst, ist - script.

Das wäre mir neu! Auch in reinem XML müssen leere Elemente so aussehen:

Alles andere ist nicht valid.
Und ist nur dann ein leeres Element, wenn es ein src-Atrribut hat, und selbst dann ist das nicht zwangsweise so.

ist durchaus auch valid  :astonished:

ist durchaus auch valid :astonished:

[quote=“jw-lighting”]Das wäre mir neu! Auch in reinem XML müssen leere Elemente so aussehen:

Alles andere ist nicht valid.[/quote]
Das ist nicht korrekt.
de.selfhtml.org/xml/regeln/tagsa … bute_werte

Kannst du diese Aussage noch mal so wiederholen, dass man sie auch ohne Knoten im Hirn verstehen kann?

ich bin mal dafür wir rufen alle bei w3c an und fragen nach :stuck_out_tongue:

ist das selbe wie
[code]<element/>[/code]

Welches man nutzt sollte keine Rolle spielen, jedoch gibts besonders bei XHTML einige probleme mit Browsern.
[code]<br></br>[/code]
zum Beispiel, könnte bei einige Browsern als zwei Zeilenumbrüche interpretiert werden, wenn das Dokument nicht als XML interpretiert wird. Deshalb nimmt man dort bevorzugt die Schreibweise <br />.

Beim Script-Element hingegen wird überwiegend die erste Variante verwendet, weil wohl einige Browser alles nach dem öffnenden Script-Tag als Bestandteil des Script sehen, und ein schließendes Script-tag erwarten (nehme ich jedenfalls an). Deshalb wird bei leeren Script-Elementen das End-Element mit geschrieben.
[code]<script src="datei.js" type="text/javascript"></script>[/code]

mfg Balmung

ist das selbe wie

Welches man nutzt sollte keine Rolle spielen, jedoch gibts besonders bei XHTML einige probleme mit Browsern.

zum Beispiel, könnte bei einige Browsern als zwei Zeilenumbrüche interpretiert werden, wenn das Dokument nicht als XML interpretiert wird. Deshalb nimmt man dort bevorzugt die Schreibweise
.

Beim Script-Element hingegen wird überwiegend die erste Variante verwendet, weil wohl einige Browser alles nach dem öffnenden Script-Tag als Bestandteil des Script sehen, und ein schließendes Script-tag erwarten (nehme ich jedenfalls an). Deshalb wird bei leeren Script-Elementen das End-Element mit geschrieben.

mfg Balmung

Ja, da kein leeres Element ist. Zudem könnte man auch bei gesetztem src-Attribut noch JS-Code einfügen. bspw.:

<script type="text/javascript" src="ajax.js">
window.onload = function{
AjaxReq = new AjaxRequest;
AjaxReq.open("get","datei.txt",true);
AjaxReq.send(null)
....
}
</script>

Und aus oben genanntem Grund gilt für XHTML (Nicht für XML) das man leere Elemente, also Elemente, bei denen ein Inhalt keinen Sinn hat, somit den Browser iritieren könnte und ‘daher’ invalid wäre, als leeres Element schreiben muss, also ohne schliessendes Tag, sondern mit ’ />’ am Ende.

Doch, es kann leer im Sinne von XML sein.

Den fuehrt dann aber kein Browser aus. (Nicht ohne zusaetzliche Tricks.)

Wie schon mehrfach festgestellt, sollte man Script auch dann mit schliessendem Tag notieren, wenn es leer ist - gerade weil das andernfalls bestimmte Browser so “irritiert”, dass sie sonst nachfolgende Elemente gar nicht mehr interpretieren.

Doch, es kann leer im Sinne von XML sein.
[/quote]
Wir Reden hier aber über XHTML

Das ist mir zwar neu, aber ich schliesse es nicht aus.

Ich habe jetzt einfach mal den Validator gequält.
Demnach ist <img …> genauso richtig wie <img… />
Ebenso mit
/

Gibt man aber das ein:

<img src="bild.gif" alt="Grafik">Ich bin ein Bild</img>
<br>Und ich ein Zeilenumbruch</br>

Führt das zu einem Error, da in diesen Elementen kein Inhalt stehen darf.
Der Validator denkt, ich hätte das img-tag nicht geschlossen (<img … />), und wundert sich dann über
Ebesno bei

Und da kein Inhalt erlaubt ist, ist es empfehlenswert, diese Elemente gleich leer zu notieren (also ), damit man gar nicht erst in so eine situation kommt.
zudem kann es, wie schon von Balmung gesagt, bei
dazu kommen, das ein Browser das als zwei zeilenumbrüche interpretiert.

So, jetzt genug der Diskussion :ps: !coffee

Was, auch das hatten wir schon, eine Anwendung von XML ist.

Nein, das gilt nicht generell “fuer XHTML”.

Abwaertskombailitaet zu HTML-Tagsoup-Parsern ist, wie schon gesagt, der Grund, warum man das so macht - nicht XHTML “an sich”.

Und dass Script eine Ausnahme von dieser “Regel” ist, sollte nun auch klar sein.
Es sind “Regeln”, die sich einfach aus der Praxis ergeben - aber nicht aus den Spezifikationen von XHTML oder XML.

[quote]Ich habe jetzt einfach mal den Validator gequält.
Demnach ist <img …> genauso richtig wie <img… />
Ebenso mit
/

Gibt man aber das ein:

<img src="bild.gif" alt="Grafik">Ich bin ein Bild</img>
<br>Und ich ein Zeilenumbruch</br>

Führt das zu einem Error, da in diesen Elementen kein Inhalt stehen darf.[/quote]
Und um das herauszufinden, musst du erst den Validator “quälen”?
Das war doch wohl jedem anderen an der Diskussion beteiligten bereits klar.

Ich mag die Diskussion aber.

[size=85]Edit: naja… jetzt chrisb schon vorher geantwortet… ich poste meinen Beitrag trotzdem[/size]

XHTML ist, um genau zu sein, eine XML variante.
Das ist ja gerade das, was HTML von XHTML unterscheidet. Der Begriff “XML” ist lediglich übergeordneter/allgemeiner formuliert.
Alle Regeln aus XML gelten auch für XHTML.
So zum Beispiel gibt es den Doctype. Dieser Doctype ist es, der entscheidet welche Elemente Inhalt enthalten dürfen, oder leer seinen müssen. Und welche Elemente innerhalb welcher Elemente sein müssen. z.B. wird dort festgelegt welche Elemente im bereich vorkommen dürfen, und welche Elemente nicht.

Es ist aber meiner Meinung nach gerade wichtig zu erwähnen, dass in XHTML ... genau so richtig ist wie ....
Das ist eine simple Tatsache.
Es IST beides richtig. Es MUSS beides richtig sein. Es liegt lediglich an der Inkompetenz der Browser (besonders der IE), wenn die Seite als HTML und nicht als XHTML interpretiert wird.

Wenn du per PHP den Content-Type änderst.

header("Content-Type: application/xhtml+xml");

Dann interpretieren zumindest der Firefox und der Opera die Seite richtig als XML.
Dann ist es in der Tat egal, ob man
oder
schreibt. Sogar ein

welches kein Inhalt hat, ist vollkommen richtig.
(Der IE hat allerdings Probleme mit diesem Content-Type, man könnte allerhöchstens versuchen dem IE “text/xml” als Content-Type zu übergeben. Probiert hab ich es bei XHTML Dokumenten bisher nicht)

mfg Balmung