Google Suche (Quellcode) validieren
Bahamut
- html
Hallo und einen schönen guten Abend
Ich betreibe die private Homepage www.bahamut-online.net - Ein Steuermann im Internet.
Zur Zeit verzweifle ich an dem Code für die Google Suche die ich mir für die Suche im Web und auf meiner Seite eingebaut habe. Alles auf der Seite ist wunderbar valide, nur eben dieser Code nicht.
Ich bin nicht wirklich der Held was HTML angeht, immerhin bestrebt weiter zu lernen, aber mit dem was ich kenne und mit selbst beigebracht habe komme ich hier nicht weiter.
Wie validiere ich diesen Quellcode nun richtig ?
Fehlermeldungen sind folgende: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.bahamut-online.net%2Findex.html&charset=%28detect+automatically%29&doctype=Inline
Die Seite selbst in der sich der Code befindet: www.bahamut-online.net/index.html
Ich wäre euch unendlich dankbar wenn Ihr mich auf den richtigen Weg bringt.
Mfg
Bahamut
hallo,
Alles auf der Seite ist wunderbar valide, nur eben dieser Code nicht.
Das ist ein Irrtum. Was "nicht valide" ist, ist dein Umgang mit <input>. Der Validator gibt dir recht genau an, was da verkehrt ist.
Wie validiere ich diesen Quellcode nun richtig ?
Du "vlaidierst" ihn gar nicht. Aber du schreibst ihn richtg. Und du hast dich nun einmal für XHTML 1.0 entschieden. Das bringt bestimmte Vorgaben mit sich, wie "tags" auszusehen haben.
Grüße aus Berlin
Christoph S.
Das bringt mich nun kein Stück weiter.
hallo,
Das bringt mich nun kein Stück weiter.
Wieso nicht? Der Validator sagt dir beispielsweise als allererstes: "Error Line 99 column 85: end tag for 'input' omitted, but OMITTAG NO was specified.
[...]
You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">".
Das ist doch eindeutig. Also schaust du in deinen HTML-Quelltext und findest in Zeile 99:
<input type="hidden" name="domains" value="www.bahamut-online.net">
</input>
Nun weißt du aber aus SELFHTML, daß <input>
ein "leeres" Element ist, ähnlich wie beispielsweise br, hr oder img. Das heißt, dein </input>
als schließendes Tag wäre schon in HTML 4.x falsch, überflüssig und nicht valide. Erst recht ist es das in XHTML. Streiche es einfach, und die Zahl der Fehlermeldungen des Validators reduziert sich schon um die Hälfte.
Wenn du dir nun noch anschaust, wie du "leere Elemente" für XHTML schreiben solltest, findest du sehr schnell, daß du die hier angemeckerte 99. Zeile so schreiben solltest:
<input type="hidden" name="domains" value="www.bahamut-online.net" />
.
Schon findet der Validator noch weniger zu meckern. Und wenn du nun noch bedenkst, daß in XHTML eben <br />
geschrieben werden muß, bleibt fast keine Meckerei mehr übrig.
Ist es denn so schwer, zu verstehen, was der Validator meint? Immerhin hast du ihn ja um Hilfe gebeten, eine Idee, auf die nicht jeder sofort kommt, die aber völlig richtig war/ist.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Nun weißt du aber aus SELFHTML, daß
<input>
ein "leeres" Element ist, ähnlich wie beispielsweise br, hr oder img. Das heißt, dein</input>
als schließendes Tag wäre schon in HTML 4.x falsch, überflüssig und nicht valide. Erst recht ist es das in XHTML. Streiche es einfach, und die Zahl der Fehlermeldungen des Validators reduziert sich schon um die Hälfte.
In XML muss ein Element immer einen Start- und einen End-Tag haben, folglich gilt das auch für XHTML. <input ...></input> ist also völlig korrekt; alternativ kann man auch die Form <input ... /> verwenden.
Ist es denn so schwer, zu verstehen, was der Validator meint? Immerhin hast du ihn ja um Hilfe gebeten, eine Idee, auf die nicht jeder sofort kommt, die aber völlig richtig war/ist.
Anscheinend ja, schließlich hast du ihn auch nicht verstanden. Und ich bin auch erst durch Mathias' Posting auf die richtige Lösung gekommen.
Schöne Grüße,
Johannes
hallo Johannes,
Ist es denn so schwer, zu verstehen, was der Validator meint?
Anscheinend ja, schließlich hast du ihn auch nicht verstanden. Und ich bin auch erst durch Mathias' Posting auf die richtige Lösung gekommen.
Schau mal, was du über leere Elemente in XHTML 1.0 nachlesen kannst: "Empty elements must either have an end tag or the start tag must end with />." Beachte bitte auch die Ergänzung: "use the minimized tag syntax for empty elements, e.g. <br />, as the alternative syntax <br></br> allowed by XML gives uncertain results in many existing user agents."
Das hat zwar Ashura als Beispiele so auch genannt, ich habe es lediglich "kürzer" gemacht. Meines Wissens bist du mit XHTML 1.0 nur dann wirklich auf der "sicheren Seite" (und vermeidest, daß eventuell "many existing user agents" damit nix anfangen können), wenn du eben <br /> oder <link ... /> oder eben <input ... /> schreibst. Prüfe es einfach mit einem XHTML-Dokument nach, in dem du alle drei von Ashura als möglich genannten Schreibweisen verwendest und schick das an den Validator.
Grüße aus Berlin
Christoph S.
Hallo Christoph.
Prüfe es einfach mit einem XHTML-Dokument nach, in dem du alle drei von Ashura als möglich genannten Schreibweisen verwendest und schick das an den Validator.
Einen schönen Sonntag noch.
Gruß, Mathias
Hallo Christoph.
Prüfe es einfach mit einem XHTML-Dokument nach, in dem du alle drei von Ashura als möglich genannten Schreibweisen verwendest und schick das an den Validator.
[x Done.]
Einen schönen Sonntag noch.
Gruß, Mathias
Hallo
Wenn doch alle drei Varianten angeblich valide sind, warum mault der Validator dann bei <input...></input> rum und schluckt ohne zu meckern <input... /> ?
Ich habe den Code nun angepasst und die Seite wird mir bei der Überprüfung als valide ausgegeben.
Habe ich erwähnt das der Code nicht auf meinem Mist gewachsen ist sondern exakt so von Google (AdSence) ausgegeben wird ? Na egal, ich freu mich das es nun funktioniert und bedanke mich bei allen die mir mit Ihren Beiträgen geholfen haben.
Wünsche einen schönen Sonntag :)
MfG
Hallo Bahamut
Wenn doch alle drei Varianten angeblich valide sind, warum mault der Validator dann bei <input...></input> rum und schluckt ohne zu meckern <input... /> ?
Bei <input></input> meckert der Validator nicht, nur, wenn sich zwischen <input> und </input> noch ein Inhalt befindet.
(Auch Leerzeichen, Zeilenumbrüche oder Tabs sind ein Inhalt.)
Auf Wiederlesen
Detlef
Hallo Bahamut
Wenn doch alle drei Varianten angeblich valide sind, warum mault der Validator dann bei <input...></input> rum und schluckt ohne zu meckern <input... /> ?
Bei <input></input> meckert der Validator nicht, nur, wenn sich zwischen <input> und </input> noch ein Inhalt befindet.
(Auch Leerzeichen, Zeilenumbrüche oder Tabs sind ein Inhalt.)Auf Wiederlesen
Detlef
Hallo nochmal
Das würde ja bedeuten das es so falsch ist
<input...blabla Inhalt>
</input>
und so : <input...Blabla></input> richtig, also hintereinander geschrieben ?
Hängt mir ehrlich gesagt zu hoch. Regulär kann ich soviele Leerzeilen im Quellcode einfügen wie ich lustig bin ohne das es Auswirkungen hat, zumindest solange ich keinen Zeilenumbruch </ br> oder Leerzeile < > schreibe.
Was ein Krampf :) Ich finds trotzdem interessant.
<Strict> vs. <Transitional> - Sollte ich mir auch mal durchlesen.
MfG
Hallo Bahamut,
Hängt mir ehrlich gesagt zu hoch. Regulär kann ich soviele Leerzeilen im Quellcode einfügen wie ich lustig bin ohne das es Auswirkungen hat, zumindest solange ich keinen Zeilenumbruch </ br> oder Leerzeile < > schreibe.
Das stimmt so nicht ganz. Leerzeichen sind auch Teil des Inhalts von Elementen, es ist ja auch nicht egal, ob du Wörter imTextdirektaneinanderschreibst oder Leerzeichen dazwischen hast. Lediglich mehrere Leerzeichen werden zu einem zusammengefasst. Oder auch, wenn du mehrere Bilder nebeneinander darstellen willst:
<p><img ... />
<img ... />
<img ... /></p>
macht jedesmal einen kleinen Zwischenraum zwischen die Bilder, das ist das Leerzeichen, dass als Zeilenumbruch im Quellcode steht.
Vergleiche dazu im Gegensatz
<p><img ... /><img ... /><img ... /></p>
Input ist nun ein leeres Element, d.h. es darf _keinen_ Inhalt haben. In der HTML-DTD wird das gelöst, indem erlaubt wird, den End-Tag wegzulassen. Da XHTML in XML definiert wurde, wo man solche Dinge nicht regeln kann, muss ein Element in XHTML immer geschlossen werden. Entweder mit einem zweiten schließenden Tag (<input ...></input>
) oder im öffnenden Tag selber ([code lang=html]<input />[/code). Bei der zweiten Variante ist das Element automatisch leer (wo sollte da auch der Inhalt stehen?), während man bei der ersten Variante selbst darauf achten muss, dass das Element keinen Inhalt (also auch keine Leerzeichen hat).
<Strict> vs. <Transitional> - Sollte ich mir auch mal durchlesen.
Zumindest für diesen Fall ist der Unterschied irrelevant. Christoph hat sich da lediglich geirrt.
Schöne Grüße,
Johannes
hallo,
Wenn doch alle drei Varianten angeblich valide sind, warum mault der Validator dann bei <input...></input> rum und schluckt ohne zu meckern <input... /> ?
Sie sind eben nur _unter bestimmten Bedingungen_ möglich. Sowohl Johannes wie auch Matthias Brodala haben ihre Beispiele als XHTML 1.0 Strict deklariert. Bei dir steht (stand?) aber nicht "Strict", sondern "Transitional". Daß es da Unterschiede gibt, haben beide auch in ihrer Argumentation übersehen.
Ich habe den Code nun angepasst und die Seite wird mir bei der Überprüfung als valide ausgegeben.
Dann ist ja erstmal alles gut.
Grüße aus Berlin
Christoph S.
Hallo Christoph
... Sowohl Johannes wie auch Matthias Brodala haben ihre Beispiele als XHTML 1.0 Strict deklariert. Bei dir steht (stand?) aber nicht "Strict", sondern "Transitional".
Bitte nenne mir ein paar Beispiele, was in XHTML 1.0 Strict valide ist, aber nicht in XHTML 1.0 Transitional.
Auf Wiederlesen
Detlef
Hallo Christoph,
Sie sind eben nur _unter bestimmten Bedingungen_ möglich. Sowohl Johannes wie auch Matthias Brodala haben ihre Beispiele als XHTML 1.0 Strict deklariert. Bei dir steht (stand?) aber nicht "Strict", sondern "Transitional". Daß es da Unterschiede gibt, haben beide auch in ihrer Argumentation übersehen.
Nein, du hast immer noch nicht verstanden, was Matthias geschrieben hat.
Input ist ein "leeres Element", deswegen darf zwischen <input> und </input> kein Inhalt, auch keine Leerzeichen, Zeilenumbrüche, etc. stehen.
Deswegen validiert <input ...></input>
problemlos, sowohl in Strict als auch in Transitional und das ursprünglich verwendete
<input ...>
</input>
nicht.
Grüße,
Johannes
hallo,
Dein Beispiel geht, genauso wie das von Johannes, von "Strict" aus. Der OP hatte aber in seiner DTD "Transitional" vorgegeben, und da funktioniert es eben nicht mit allen drei Varianten, sondern nur so, wie iches angegeben hatte.
Grüße aus Berlin
Christoph S.
Hallo Christoph
Dein Beispiel geht, genauso wie das von Johannes, von "Strict" aus. Der OP hatte aber in seiner DTD "Transitional" vorgegeben, und da funktioniert es eben nicht mit allen drei Varianten, sondern nur so, wie iches angegeben hatte.
Qutsch!
Hast du es getestet?
Auf Wiederlesen
Detlef
hallo,
Dein Beispiel geht, genauso wie das von Johannes, von "Strict" aus. Der OP hatte aber in seiner DTD "Transitional" vorgegeben, und da funktioniert es eben nicht mit allen drei Varianten, sondern nur so, wie iches angegeben hatte.
Wie kommst du denn darauf?
http://zeller-johannes.de/selfforum/xhtml-leere-elemente-2 validiert ebenfalls problemlos.
Gruß,
Johannes
Hallo Christoph,
Schau mal, was du über leere Elemente in XHTML 1.0 nachlesen kannst: "Empty elements must either have an end tag or the start tag must end with />."
Eben, und daraus folgt ja gerade, dass ein abschließendes </input>, im Gegensatz zu deiner Behauptung, _nicht_ falsch ist.
Beachte bitte auch die Ergänzung: "use the minimized tag syntax for empty elements, e.g. <br />, as the alternative syntax <br></br> allowed by XML gives uncertain results in many existing user agents."
Du beziehst dich hier aber auf die nicht-normativen »HTML Compatibility Guidelines«.
Das hat zwar Ashura als Beispiele so auch genannt, ich habe es lediglich "kürzer" gemacht.
Ashura? Meinst du Mathias? Und nein, du hast es nicht nur »lediglich kürzer gemacht«, du hast behauptet, dass ein schließendes input in XHTML »Erst recht« »falsch, überflüssig und nicht valide« ist. Und das stimmt eben nicht.
Meines Wissens bist du mit XHTML 1.0 nur dann wirklich auf der "sicheren Seite" (und vermeidest, daß eventuell "many existing user agents" damit nix anfangen können), wenn du eben <br /> oder <link ... /> oder eben <input ... /> schreibst.
Kannst du mir einen existierenden, einigermaßen häufig verwendeten »User-Agent« nennen, der damit nicht klar kommt? Und selbst wenn, die »HTML Compatibility Guidelines« sind wie gesagt nicht normativ, d.h. dem Validator sind sie komplett egal.
Prüfe es einfach mit einem XHTML-Dokument nach, in dem du alle drei von Ashura als möglich genannten Schreibweisen verwendest und schick das an den Validator.
Ja und? http://zeller-johannes.de/selfforum/xhtml-leere-elemente validiert problemlos.
Schöne Grüße,
Johannes
Hallo Johannes
In XML muss ein Element immer einen Start- und einen End-Tag haben, folglich gilt das auch für XHTML. <input ...></input> ist also völlig korrekt;
Ja, aber es ist nicht unbedingt empfehlenswert (HTML Compatibility Guidelines).
<input ...>
</input>
Dürfte allerdings wirklich falsch sein, weil es dann Whitespaces als Inhalt enthält (Empty Elements).
Auf Wiederlesen
Detlef
Hallo Detlef,
Ja, aber es ist nicht unbedingt empfehlenswert (HTML Compatibility Guidelines).
Die ganze XHTML-1.0-Spezifikation ist von Januar 2000 und damit fast sieben Jahre alt. Die Empfehlungen aus den »HTML Compatibility Guidelines« sind (nicht nur deswegen) mit Vorsicht zu genießen, man macht zwar sicher nichts kaputt, wenn man sich daran hält. Aber zu behaupten, dass man heute noch Probleme bekommt, wenn man sich nicht an alle Empfehlungen daraus hält, halte ich ohne konkrete Belege für realitätsfremd.
Dürfte allerdings wirklich falsch sein, weil es dann Whitespaces als Inhalt enthält (Empty Elements).
Genau das hat ja Mathias schon erwähnt.
Schöne Grüße,
Johannes
Hallo Johannes
Ja, aber es ist nicht unbedingt empfehlenswert (HTML Compatibility Guidelines).
Die ganze XHTML-1.0-Spezifikation ist von Januar 2000 und damit fast sieben Jahre alt. Die Empfehlungen aus den »HTML Compatibility Guidelines« sind (nicht nur deswegen) mit Vorsicht zu genießen,
Deshalb habe ich es ja auch vorsichtig ausgedrückt: "nicht unbedingt".
Hast du eine aktuellere W3C-Empfehlung dazu? ;)
Aber zu behaupten, dass man heute noch Probleme bekommt, wenn man sich nicht an alle Empfehlungen daraus hält, halte ich ohne konkrete Belege für realitätsfremd.
Aber man sollte ohne konkrete Belege etwas anderes empfehlen?
(Ich kann es nicht mit absolut allen benutzten Browsern testen.)
Auf Wiederlesen
Detlef
Hi,
Ja, aber es ist nicht unbedingt empfehlenswert (HTML Compatibility Guidelines).
Die ganze XHTML-1.0-Spezifikation ist von Januar 2000 und damit fast sieben Jahre alt. Die Empfehlungen aus den »HTML Compatibility Guidelines« sind (nicht nur deswegen) mit Vorsicht zu genießen, man macht zwar sicher nichts kaputt, wenn man sich daran hält. Aber zu behaupten, dass man heute noch Probleme bekommt, wenn man sich nicht an alle Empfehlungen daraus hält, halte ich ohne konkrete Belege für realitätsfremd.
Dann setze mal ein nach XML-Regeln korrektes <script src="irgendwas" /> in den Head einer XHTML-Seite und betrachte sie in einem IE 6.
cu,
Andreas
Hallo Andreas,
Dann setze mal ein nach XML-Regeln korrektes <script src="irgendwas" /> in den Head einer XHTML-Seite und betrachte sie in einem IE 6.
Das ist ja etwas anderes. Bei Script handelt es sich ja nicht um ein leeres Element. Ich habe nie behauptet, dass man die »HTML Compatibility Guidelines« komplett vergessen kann.
Schöne Grüße,
Johannes
Hallo Christoph
Danke für dein Posting, das hat mein Problem gelöst.
Das Google Dedöns ist nun auch valide.
Ich merke schon, ich habe noch vieles zu lernen.
MfG
Hallo Christoph.
Wie validiere ich diesen Quellcode nun richtig ?
Du "vlaidierst" ihn gar nicht. Aber du schreibst ihn richtg.
Stimmt, das tut er im Gegensatz zu dir.
Einen schönen Samstag noch.
Gruß, Mathias
boah,
Du "vlaidierst" ihn gar nicht. Aber du schreibst ihn richtg.
Stimmt, das tut er im Gegensatz zu dir.
Falsch. Er hat meine richtigen Tippfehler, die heute besonders schön ausgefallen sind, ja gar nicht verwendet ;-p.
Grüße aus Berlin
Christoph S.
Hallo Bahamut.
Ich betreibe die private Homepage www.bahamut-online.net - Ein Steuermann im Internet.
Zur Zeit verzweifle ich an dem Code für die Google Suche die ich mir für die Suche im Web und auf meiner Seite eingebaut habe. Alles auf der Seite ist wunderbar valide, nur eben dieser Code nicht.
Dann schließe die input-Elemente deinem DOCTYPE gemäß richtig. Das input-Element ist ein leeres Element, es darf also keinerlei textlichen Inhalt haben, wohingegen momentan ein Zeilenumbruch und einige Leerzeichen enthalten sind. Das bedeutet für dich, dass folgende Möglichkeiten korrekt sind:
<input type="text" name="q" size="18" maxlength="255" value=""></input>
<input type="text" name="q" size="18" maxlength="255" value=""/>
<input type="text" name="q" size="18" maxlength="255" value="" />
Erstere Methode könnte aber in sehr alten Clients zu Fehlern führen, weshalb du dich für eine der beiden anderen entscheiden solltest.
Siehe dazu auch die <http://de.selfhtml.org/html/xhtml/unterschiede.htm#leere_elemente@title=Unterschiede zwischen HTML und XHTML>.
Einen schönen Samstag noch.
Gruß, Mathias