2010-08-29 3 views
7

Auch die neuen HTML5-Tags reichen nicht aus, um Strukturen zu beschreiben, ohne auf div s zurückzugreifen. Was hält mich vom Wechsel:Was hält mich davon ab, willkürliche Tags in HTML zu verwenden?

<div class="post"> 
    <div class="userinfo"> 
     <span class="name">Casey</span> 
     <img class="avatar" src="..." /> 
    </div> 
    <div class="body"> 
     <p>blah blah blah</p> 
     <p>blah blah blah</p> 
     <p>blah blah blah</p> 
    </div> 
</div> 

in so etwas wie:

<post> 
    <userinfo> 
     <name>Casey</name> 
     <img class="avatar" src="..." /> 
    </userinfo> 
    <pbody> 
     <p>blah blah blah</p> 
     <p>blah blah blah</p> 
     <p>blah blah blah</p> 
    </pbody> 
</post> 

Für mich ist das zweite Beispiel ist viel sauberer. Gibt es irgendetwas (d. H. Browser-Unterstützung), das mich davon abhält?

(Ich weiß, was es ist, ist im Wesentlichen, XML, aber in diesem Fall stellt sich die Frage: „Was sieht Browser-Unterstützung wie für XML-Web-Seiten-Rendering?“)

+5

liest Was hindert Sie daran? Die Spezifikationen, duh. –

+1

Wenn Sie gültige Seiten wollen, die in allen Browsern funktionieren und von Suchmaschinen gecrawlt werden - ich würde mich wirklich fernhalten. ABER, nichts hält Sie davon ab, XSLT zu verwenden, um ein XML-Dokument in HTML umzuwandeln. Umbraco nutzt das ** sehr ** erfolgreich. – Marko

+0

Bitten Sie Jon 'Skeet' **, eine neue Sprache für Sie zu erstellen. – shamittomar

Antwort

6

Ein Grund ist, dass Internet Explorer (und frühere Versionen von Firefox) keinen Fallback für Tags haben, die nicht definiert sind, und sie beim Stylen und Verschachteln ignorieren. Without a shiv, Ihre Website wird schrecklich in diesen Browsern brechen.

+0

Kann man dieses Manko nicht durch Hinzufügen von Gestaltungsregeln wie "display" für die neuen/arbiträre Tags überwinden? Undefinierter Stil ist kein ausreichender Grund, die Idee, gültige XML-Tags als semantische Erweiterung von html5 zu verwenden, abzulehnen. Es wird dringend benötigt, wenn wir Dokumente in sinnvolle und durchsuchbare Formate strukturieren. Das W3C hat eine Reihe von semantischen Tags hinzugefügt, aber es gibt keine Möglichkeit, alle Tags vorherzusagen, die benötigt werden. HTML5 verwendet XML-Syntax und sollte XML-Extensiblität unterstützen - mit der Einschränkung, dass der Designer dem Browser sagen muss, wie er es formatieren soll. Bei HTML geht es um Markup, nicht um Style. – Steve

1

Das Problem ist, dass es würde nicht validieren und die neuen Tags würden einfach ignoriert werden.

+1

Ich habe den Eindruck, dass Validierung praktisch nichts bedeutet, und für das Problem, dass new-tags-ignored ist, kann CSS das leicht beheben ('post, userinfo, pbody {display: block}'). –

+1

@Casey, Ihr Eindruck ist falsch. 'display: block' [wird das fehlende Tag-Problem im IE nicht beheben] (http://net.tutsplus.com/tutorials/html-css-techniques/how-to-make-all-browsers-render-html5-mark -up-korrekt-gerade-ie6 /): Es werden keine Stile auf Elemente angewendet, die IE nicht versteht. Sie müssen eine andere Lösung (JavaScript oder HTC) verwenden, damit IE die Tags versteht. Es behebt auch keine Probleme mit früheren Versionen von Firefox, die unbekannte Elemente neu verschachteln. –

1

Die meisten Browser behandeln die Tags nur als willkürlich (wie alte Browser HTML5-Tags behandeln). Nichts hält Sie davon ab, Ihre eigenen Tags zu verwenden, aber es ist keine allgemein akzeptierte Methode, HTML zu codieren. HTML soll vordefinierte Tags verwenden.

Wenn Sie an der Codierung mit beliebigen Tags interessiert sind, könnten Sie einfach mit XML gehen. Sie können XML mit XSLT formatieren (ähnlich wie Stylesheets, aber viel leistungsfähiger). Sehen Sie hier: http://www.w3schools.com/xml/xml_xsl.asp

3

Sie können Ihre eigenen Tags verwenden, aber das Problem ist, dass Browser, da sie nicht Standard sind, nicht wissen, dass sie passende abschließende Tags haben können. Und natürlich wird das Dokument nicht als korrektes HTML/X-HTML validiert.

<blah> 
    This is some <span>test</span> test text with another <bogus>tag</bogus> tag 
    within, which ends with a fake self-closing <tag /> 
</blah> 

Browser sieht <blah>, jetzt nicht, wie sie damit umgehen, und behandelt es als im wesentlichen „nichts“ und es ignorieren. Dann werden sie fröhlich weiter zum nächsten Bit gehen und etwas Klartext mit einer gültigen Spanne darin sehen. Schließlich werden sie die </blah> erreichen und das ebenfalls ignorieren.

Aus diesem Grund Javascript und CSS unterstützt hatte, um die Öffnung HTML-Kommentar-Sequenz als Teil ihrer jeweiligen Sprache Definitionen:

<script type="text/javascript"> 
<!-- // <--actually a part of the javascript spec, treated as a comment. 
    alert('hey!'); 
//--> 
</script> 

Wenn Javascript zuerst eingeführt wurde, gibt es noch viele andere Browser waren, die vollständig waren nicht bewusst Javascript, und so würden sie Tags ignorieren, und gerne Ihren Javascript-Code ausgeben. Dito für CSS.

Wenn Sie wirklich benutzerdefinierte Tags benötigen, können Sie das Dokument als XML mit Ihrer eigenen angehängten DTD erstellen und XSLT verwenden, um es in ein gültiges HTML/X-HTML-Dokument umzuwandeln.

+0

in Bezug auf den Teil "Browser werden nicht wissen, dass sie passende Schluss-Tags haben können." Ich denke eigentlich anders .. Haben Sie irgendwelche Tests, um es zu bestätigen? – Pacerier

+0

' Sie sehen diesen Text' Versuchen Sie das in jedem Browser. Wenn unbekannte Tags ignoriert und auf das Schließen von Tags geprüft würden, würden Sie den Text nicht sehen. –

+0

@Marc B. Ich sehe den Text in den neuesten Versionen von Chrome/FF/IE/Opera/Safari. Ich glaube, es funktioniert in jedem Browser, den Sie denken können, der einen Anteil von mehr als 0,1% insgesamt Internet-Nutzer hat. – Pacerier

1

Was ist das Ziel der von Ihnen gewählten Tags? Wenn es Ihr Ziel ist, Informationen zu präsentieren, ist die Verwendung von divs und anderen präsentationsorientierten Strukturen großartig. Ihre Tags sehen eher so aus, als würden sie die tatsächlichen Daten beschreiben. Wenn dies der Fall ist, ist XML mit XSLT-Transformationen auf der Serverseite am besten, um HTML für Präsentationsmarkierung auszugeben. Denken Sie daran, dass ein Browser einfach eine Rendering-Engine ist und die HTML-Spezifikation als Blueprint dessen verwendet, was für eine bestimmte Site gerendert werden soll. Der Browser muss die Informationen nicht wie ein "Post" oder "userInfo" verstehen, da er keinen Kontext für das Unterlassen von Anweisungen aus Rendering-Perspektive mit diesen Informationen hat.CSS kann einem Browser helfen, zu verstehen, was Sie visuell tun möchten, aber fragen Sie sich zuerst, was das Ziel ist, Ihr Markup auf diese Weise zu erhalten, Ihre Daten zu speichern (XML-Stil) oder darzustellen. Wenn Sie es präsentieren möchten, sollten Sie mit den Standards gehen, wenn Sie weiterhin einen Browser als Rendering-Engine verwenden möchten. Viel Glück, wäre toll, wenn wir alle unsere Präsentationsschemen definieren könnten, lustige Idee!

1

GetElementsByTagName schlägt mich mit benutzerdefinierten Tags fehl. Beispiel

<acme:mytag id="mytag"> 
    <div id ="x">x</div> 
    <div id ="y">y</div> 
    <div id ="z">z</div> 
</acme:mytag> 

Dieser schlägt mit IE8 (Quirks-Modus oder im Standardmodus)

var mytag = document.getElementById('mytag'); // it's found 
var mydivs = mytag.getElementsByTagName ('div'); // but this is always 0 

Wenn Ihr HTML-Tag

<html XMLNS:acme> 
... 
</html> 
Verwandte Themen