2010-07-23 11 views
38

Ich weiß, wie Leerraum in Textknoten für XML und HTML gehandhabt wird, aber ich bin unsicher über Leerräume innerhalb von Tag-Elementen selbst. Offensichtlich werden Leerzeichen innerhalb von Tags verwendet, um Attribute zu trennen, aber ist es zulässig, weiße Leerzeichen nach '<' oder vor '>' zu haben?Leerraum innerhalb von XML/HTML-Tags

Zum Beispiel:

<foo> 
</foo> 

Oder auch:

<foo> 
</foo > 

Sind diese Tags gültige XML? Was ist mit HTML, wenn man davon ausgeht, dass es sich um echte HTML-Tag-Namen handelt?

Antwort

49

Die specification (section 3.1 Start-tags, end-tags, and empty-element tags) sagt, dass es kein Leerraum zwischen den '<' und dem Tag-Namen, zwischen '</' und dem Tag-Namen oder innerhalb '/>'. Sie können Leerraum nach dem Tag-Namen hinzufügen, aber:

<foo   > 
</foo  > 
<bar 
/> 
+0

Hoppla. Das wird mich lehren, die Spezifikation zu überprüfen ... +1 –

+0

ist es dann gültig, lange HTML-Tags in separate Zeilen aufzuteilen? Zum Beispiel: ' (newline)' - zum Beispiel bei langen Tags, die PHP-Code enthalten, um es lesbarer zu machen. – iDontKnowBetter

+1

@fakaff: Ja, das ist gültig. Zeilenumbrüche, Tabulatoren und Leerzeichen sind Leerzeichen und Sie können nach dem Tag-Namen und zwischen den Attributen (und sogar um das '=' in einem Attribut) so viel Leerraum haben, wie Sie möchten. – Guffa

8

</ und /> sind Token, also Leerzeichen zwischen den beiden Zeichen wäre ein Syntaxfehler. Und als Guffa pointed out, ist Leerzeichen zwischen dem Öffnungs-Token und dem Namen nicht zulässig. Sie können jedoch Leerzeichen zwischen dem Element-Tag und dem abschließenden Token > (oder) hinzufügen.

EDIT, um Guffas korrektes Zitieren der XML-Spezifikation zu reflektieren.

0

Sie können nicht mit einem Leerzeichen beginnen, aber Sie können (optional) mit einem Leerzeichen enden (vor der zweiten spitzen Klammer, die das erste Tag schließt).

+0

Diese Antwort fügt den vorhandenen nichts hinzu. – Pyves