Ivijan Stefan Stipić
Ivijan Stefan Stipić

Reputation: 6668

Why many developers mixed HML5 and XHTML?

I see many posts realated to this but never see some good explanation why people do this and what is best practice in professional way?

We all normaly use HTML5 rules and that's perfect but is there any reason to we use in modern design with XHTML rules "for any case"?

I see many WordPress, Jommla, Drupal and some less known templates in this modern days that use combination of HTML5 and XHTML like properly nested HTML tags, non minimizations, closed empty elements like <br />, <hr />, <img />, <input />, etc.

Why do this mix? Is that because support for old browsers or just old-school development mixed with new technology or just leak of knowladge of HTML5 rules?

Upvotes: 0

Views: 629

Answers (3)

imhotap
imhotap

Reputation: 2490

The correct syntax for HTML's elements base, link, meta, hr, br, wbr, source, img, embed, param, track, area, col, and input (called void elements in HTML 5) is not to use an XML-style empty-element tag.

Fromt WHATWG/W3c's HTML current specification at W3C:

Void elements only have a start tag; end tags must not be specified for void elements

This isn't a case of XML/XHTML being stricter than HTML or something; it's just due to HTML's SGML legacy: in HTML 4's SGML grammar (DTD) from 1999 these elements were declared to have content EMPTY. If anything, using XML-style empty element syntax is less formal, since merely tolerated and ignored by HTML 5 parsers; but a sequence of a start-element tag, followed by an end-element tag for a void element is not.

See also How to find empty elements in html5 for a more elaborate discussion of empty elements.

Upvotes: 1

John
John

Reputation: 13729

The context is understanding the difference between what version of HTML (HTML5) and which parser are being used in combination.

  • The HTML parser is loose and will accept literally almost anything.
  • The XML parser is strict and will not tolerate poor code.

Also:

  • XHTML (application/xhtml+xml) is a subset of XML.
  • HTML is a subset of SGML.

So you can use HTML5 with the XML parser, my web platform does this (see my profile).

Why serve HTML5 as XML? I had already been using XHTML 1.1 years ago and witnessed a thread on a different PHP programming forum. Some guy could not figure out why Safari would not style an element like all of the other browsers. After three days he figured out he was missing a quote on an attribute; if he had been parsing the page as application/xhtml+xml the page would have broke (Gecko/Firefox/Waterfox the whole page breaks, other browsers will render up to the error) and being aware of the issue fixed it and recovered in seconds.

Those websites are not XHTML, they are simply using an XHTML doctype. The page must be served as application/xhtml+xml (see the network requests panel in any browser developer tools) to be considered XHTML (e.g. XHTML5) otherwise it's actually HTML code with invalid bits of code that are ignored by the browser.

Your comment about the trailing slash is either correct or incorrect subjective to the context of what you intended due to the vagueness of your comment. If you implied that people generally switched from XHTML 1 to HTML5 then yes however if you intended that XHTML now allows omitting the trailing forward slash than no. XML / XHTML require the trailing slash without exception.

Upvotes: 1

MrVanilla
MrVanilla

Reputation: 367

XHTML had really strict rules, and the browsers wouldn't show things correctly if they weren't coded using the correct syntax.

HTML5 is not that strict. Even if you write a page with doctype set to HTML5, XHTML code will still work.

In some cases it still is a good idea to use XHTML. Eg. e-books. Even though the epub format now supports HTML5, older screenreaders still don't do that. Because of this alot of e-books are stil written using XHTML

Upvotes: 1

Related Questions