<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lachlan+Hunt</id>
	<title>WHATWG Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lachlan+Hunt"/>
	<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/wiki/Special:Contributions/Lachlan_Hunt"/>
	<updated>2026-05-10T08:16:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6423</id>
		<title>Hgroup element</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6423"/>
		<updated>2011-05-11T12:53:08Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Added The Guardian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents use cases and existing usage patterns related to marking up subtitles and taglines within headers.&lt;br /&gt;
&lt;br /&gt;
== Real World Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are real world pages all using various structures to mark up subtitles and taglines for page and article headers. Each one contains the markup copied and pasted directly from the site, only modified where necessary to tidy up whitespace or to omit irrelevant content from the header where indicated.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.telegraph.co.uk/ The Telegraph (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.telegraph.co.uk/foodanddrink/8324778/Coca-Cola-recipe-discovered.html Coca Cola recipe &#039;discovered&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;storyHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Coca Cola recipe &#039;discovered&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;A website claims to have uncovered Coca-Cola&#039;s top secret recipe.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.nationalgeographic.com/ National Geographic] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://news.nationalgeographic.com/news/2011/05/110505-einstein-theories-confirmed-gravity-probe-nasa-space-science Einstein Theories Confirmed by NASA Gravity Probe]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;page_head&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Einstein Theories Confirmed by NASA Gravity Probe&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;amp;gt;Space mission did what the famed physicist said would be impossible.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gutenberg.org/ Project Gutenberg] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/36/36-h/36-h.htm The War of the Worlds, by H. G. Wells]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chapnum&amp;quot;&amp;amp;gt;CHAPTER ONE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chaptitle&amp;quot;&amp;amp;gt;THE EVE OF THE WAR&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/28749/28749-h/28749-h.htm The Madcap of the School, by Angela Brazil.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div style=&amp;quot;margin: auto; text-align: center; padding-top: 0pt; padding-bottom: 1em;&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a name=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot; id=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;CHAPTER I&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;THE MOATED GRANGE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/98/98-h/98-h.htm A Tale of Two Cities, by Charles Dickens]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;A TALE OF TWO CITIES&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;A STORY OF THE FRENCH REVOLUTION&amp;amp;lt;/h2&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;By Charles Dickens&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.techdirt.com/ Techdirt] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.techdirt.com/articles/20110506/15124514188/when-copyright-contracts-can-get-way-art.shtml When Copyright And Contracts Can Get In The Way Of Art]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;story&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;When Copyright And Contracts Can Get In The Way Of Art&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;from the &amp;amp;lt;i&amp;amp;gt;tales-from-the-creative-front-lines&amp;amp;lt;/i&amp;amp;gt; dept&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://xkcd.com/ XKCD] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;topRightContainer&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://imgs.xkcd.com/s/9be30a7.png&amp;quot; alt=&amp;quot;xkcd.com logo&amp;quot; height=&amp;quot;83&amp;quot; width=&amp;quot;185&amp;quot;/&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;A webcomic of romance,&amp;amp;lt;br/&amp;amp;gt; sarcasm, math, and language.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;div class=&amp;quot;clearleft&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
     XKCD updates every Monday, Wednesday, and Friday.&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://finance.yahoo.com/ Yahoo! Finance] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://finance.yahoo.com/news/Gas-prices-expected-to-drop-apf-3767822723.html?x=0 Gas prices expected to drop 50 cents by summer]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;y-article-hd&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1 class=&amp;quot;test1&amp;quot;&amp;amp;gt;Gas prices expected to drop 50 cents by summer&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;After 44 days of surging gas prices, analysts expect drop of 50 cents by summer driving season&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://us.rd.yahoo.com/finance/news/apf/SIG=10kfmofol/*http://www.ap.org/termsandconditions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://l.yimg.com/a/i/us/fi/gr/ap_106x27.gif&amp;quot; alt=&amp;quot;ap&amp;quot; class=&amp;quot;sponsorimage&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;	&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://oed.com/ Oxford English Dictionary] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;Discover the story of English&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;blurb&amp;quot;&amp;amp;gt;&lt;br /&gt;
       &amp;amp;lt;p&amp;amp;gt;More than 600,000 words, over a thousand years&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://diveintoaccessibility.org/ Dive Into Accessibility] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;inner&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/&amp;quot; accesskey=&amp;quot;1&amp;quot;&amp;amp;gt;Dive Into Accessibility&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;30 days to a more accessible web site&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a class=&amp;quot;skip&amp;quot; href=&amp;quot;#startnavigation&amp;quot;&amp;amp;gt;Skip to navigation&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;divider&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.calgaryherald.com/ Calgary Herald] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.calgaryherald.com/life/Cooking+Solo+Grows/4746884/story.html Cooking Solo Grows Up]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;storyheader&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;headline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1&amp;amp;gt;Cooking Solo Grows Up&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;subheadline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;On your own? You no longer have to put up with cereal over the sink or days of the same old leftovers. Joe Yonan shows us why&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;byline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;name&amp;quot;&amp;amp;gt;By Gwendolyn Richards, Calgary Herald&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;timestamp&amp;quot;&amp;amp;gt;May 8, 2011 2:06 AM&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span id=&amp;quot;lblComment&amp;quot; class=&amp;quot;comments&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.panic.com/ Panic] ===&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/coda/ Coda - One-Window Web Development for Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;header&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/coda/&amp;quot; title=&amp;quot;Coda&amp;quot;&amp;amp;gt;Coda&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;One window web development.*&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/unison/ Unison - The Best Usenet Browser / Newsreader, Only For Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://www.panic.com/unison/&amp;quot; title=&amp;quot;Unison - The Best Usenet Browser&amp;quot;&amp;amp;gt;Unison&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
   the best usenet browser&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.pcworld.com/ PCWorld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.pcworld.com/article/227313/top_15_android_apps_for_smartphone_shutterbugs.html Top 15 Android Apps For Smartphone Shutterbugs]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;articleHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Top 15 Android Apps For Smartphone Shutterbugs&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Use these Android apps to add effects to your mobile photos and make them easier to take.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;byline&amp;quot;&amp;amp;gt;By &amp;amp;lt;a href=&amp;quot;/author/Daniel-Ionescu&amp;quot;&amp;amp;gt;Daniel Ionescu&amp;amp;lt;/a&amp;amp;gt;,&lt;br /&gt;
      &amp;amp;lt;a href=&amp;quot;http://www.pcworld.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;PCWorld&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
      &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;timestamp(1304707200000,&#039;longDateTime&#039;)&amp;amp;lt;/script&amp;amp;gt;May 6, 2011 8:40 pm&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.computerworld.com/ Computerworld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.computerworld.com/s/article/9216484/Elgan_How_to_pop_your_Internet_filter_bubble_ Elgan: How to pop your Internet &#039;filter bubble&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;article_header&amp;quot; class=&amp;quot;clearfix&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;content_type&amp;quot;&amp;amp;gt;Opinion&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Elgan: How to pop your Internet &#039;filter bubble&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Personalization algorithms are stereotyping you, then hiding information from you based on that stereotype. Wait -- what?&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;byline&amp;quot;&amp;amp;gt;By Mike Elgan&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;date&amp;quot;&amp;amp;gt;May 7, 2011 08:00 AM ET&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.apple.com/ Apple] ===&lt;br /&gt;
&lt;br /&gt;
* Example page: [http://www.apple.com/imac/features.html Apple - iMac - Read about the features of the new iMac.]&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://images.apple.com/imac/images/features_title20110426.png&amp;quot; alt=&amp;quot;Its beauty is way more than screen  deep. &amp;quot; width=&amp;quot;766&amp;quot; height=&amp;quot;46&amp;quot; class=&amp;quot;center&amp;quot; /&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;intro&amp;quot;&amp;amp;gt;All-new quad-core processors. Advanced graphics. Thunderbolt technology. FaceTime HD. iMac is a desktop workhorse disguised as an all-in-one wonder.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Example page: [http://www.apple.com/pr/library/2011/03/02ipad.html Apple - Press Info - Apple Launches iPad 2]&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;content&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/pr/products/ipad/ipad.html&amp;quot; onclick=&amp;quot;s_objectID=&amp;amp;amp;quot;http://www.apple.com/pr/products/ipad/ipad.html_1&amp;amp;amp;quot;;return this.s_oc?this.s_oc(e):true&amp;quot;&amp;amp;gt;iPad 2 images&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Apple Launches iPad 2&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;All New Design is Thinner, Lighter &amp;amp;amp; Faster with FaceTime, Smart Covers &amp;amp;amp; 10 Hour Battery&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;&lt;br /&gt;
     SAN FRANCISCO—March 2, 2011—Apple® today introduced iPad™ 2...&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://docbook.sf.net/ DocBook XSL Stylesheets] ===&lt;br /&gt;
&lt;br /&gt;
* All content generated from DocBook yields the following output for title/subtitle (actualy heading levels can vary depending on the depth of element with title/subtitle):&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;titlepage&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;title&amp;quot;&amp;gt;Title&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3 class=&amp;quot;subtitle&amp;quot;&amp;gt;Subtitl&amp;amp;lt;/h3&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://miniapps.co.uk/ MiniApps] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;http://miniapps.co.uk/&amp;quot; title=&amp;quot;Home page&amp;quot;&amp;amp;gt;&amp;amp;lt;span&amp;amp;gt;MiniApps&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Beautifully crafted mobile web apps.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://interactwithwebstandards.com/ InterACT with Web Standards] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span id=&amp;quot;title&amp;quot;&amp;amp;gt;InterACT With &amp;amp;lt;strong&amp;gt;Web Standards&amp;amp;lt;/strong&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span id=&amp;quot;subtitle&amp;quot;&amp;amp;gt;A Holistic Approach to Web Design&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.fokus.se/2011/05/kort-triumf-for-obama/ From the Swedish Magazine Fokus] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h4&amp;amp;gt;Utmanarna&amp;amp;lt;/h4&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;p&amp;amp;gt;&amp;amp;lt;em&amp;amp;gt;Tio republikanska kandidater som kan bli ett hot mot Obamas andra presidentperiod.&amp;amp;lt;/em&amp;amp;gt;&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.guardian.co.uk/ The Guardian (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.guardian.co.uk/books/2011/may/10/us-prisoners-refused-books-bible US prisoners refused all books except Bible]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;main-article-info&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;US prisoners refused all books except Bible&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p id=&amp;quot;stand-first&amp;quot; class=&amp;quot;stand-first-alone&amp;quot;&amp;amp;gt;American Civil Liberties Union says jail in South Carolina is banning books &#039;for no good reason&#039;&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
=== Web sites that do not markup up subtitles at all ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Perhaps&#039;&#039; because the developers lack a compelling pattern?&lt;br /&gt;
&lt;br /&gt;
* IMDB&lt;br /&gt;
* Amazon&lt;br /&gt;
* Wikipedia&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6418</id>
		<title>Hgroup element</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6418"/>
		<updated>2011-05-09T12:14:42Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Added MiniApps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents use cases and existing usage patterns related to marking up subtitles and taglines within headers.&lt;br /&gt;
&lt;br /&gt;
== Real World Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are real world pages all using various structures to mark up subtitles and taglines for page and article headers. Each one contains the markup copied and pasted directly from the site, only modified where necessary to tidy up whitespace or to omit irrelevant content from the header where indicated.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.telegraph.co.uk/ The Telegraph (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.telegraph.co.uk/foodanddrink/8324778/Coca-Cola-recipe-discovered.html Coca Cola recipe &#039;discovered&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;storyHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Coca Cola recipe &#039;discovered&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;A website claims to have uncovered Coca-Cola&#039;s top secret recipe.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.nationalgeographic.com/ National Geographic] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://news.nationalgeographic.com/news/2011/05/110505-einstein-theories-confirmed-gravity-probe-nasa-space-science Einstein Theories Confirmed by NASA Gravity Probe]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;page_head&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Einstein Theories Confirmed by NASA Gravity Probe&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;amp;gt;Space mission did what the famed physicist said would be impossible.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gutenberg.org/ Project Gutenberg] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/36/36-h/36-h.htm The War of the Worlds, by H. G. Wells]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chapnum&amp;quot;&amp;amp;gt;CHAPTER ONE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chaptitle&amp;quot;&amp;amp;gt;THE EVE OF THE WAR&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/28749/28749-h/28749-h.htm The Madcap of the School, by Angela Brazil.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div style=&amp;quot;margin: auto; text-align: center; padding-top: 0pt; padding-bottom: 1em;&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a name=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot; id=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;CHAPTER I&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;THE MOATED GRANGE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/98/98-h/98-h.htm A Tale of Two Cities, by Charles Dickens]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;A TALE OF TWO CITIES&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;A STORY OF THE FRENCH REVOLUTION&amp;amp;lt;/h2&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;By Charles Dickens&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.techdirt.com/ Techdirt] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.techdirt.com/articles/20110506/15124514188/when-copyright-contracts-can-get-way-art.shtml When Copyright And Contracts Can Get In The Way Of Art]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;story&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;When Copyright And Contracts Can Get In The Way Of Art&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;from the &amp;amp;lt;i&amp;amp;gt;tales-from-the-creative-front-lines&amp;amp;lt;/i&amp;amp;gt; dept&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://xkcd.com/ XKCD] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;topRightContainer&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://imgs.xkcd.com/s/9be30a7.png&amp;quot; alt=&amp;quot;xkcd.com logo&amp;quot; height=&amp;quot;83&amp;quot; width=&amp;quot;185&amp;quot;/&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;A webcomic of romance,&amp;amp;lt;br/&amp;amp;gt; sarcasm, math, and language.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;div class=&amp;quot;clearleft&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
     XKCD updates every Monday, Wednesday, and Friday.&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://finance.yahoo.com/ Yahoo! Finance] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://finance.yahoo.com/news/Gas-prices-expected-to-drop-apf-3767822723.html?x=0 Gas prices expected to drop 50 cents by summer]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;y-article-hd&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1 class=&amp;quot;test1&amp;quot;&amp;amp;gt;Gas prices expected to drop 50 cents by summer&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;After 44 days of surging gas prices, analysts expect drop of 50 cents by summer driving season&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://us.rd.yahoo.com/finance/news/apf/SIG=10kfmofol/*http://www.ap.org/termsandconditions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://l.yimg.com/a/i/us/fi/gr/ap_106x27.gif&amp;quot; alt=&amp;quot;ap&amp;quot; class=&amp;quot;sponsorimage&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;	&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://oed.com/ Oxford English Dictionary] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;Discover the story of English&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;blurb&amp;quot;&amp;amp;gt;&lt;br /&gt;
       &amp;amp;lt;p&amp;amp;gt;More than 600,000 words, over a thousand years&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://diveintoaccessibility.org/ Dive Into Accessibility] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;inner&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/&amp;quot; accesskey=&amp;quot;1&amp;quot;&amp;amp;gt;Dive Into Accessibility&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;30 days to a more accessible web site&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a class=&amp;quot;skip&amp;quot; href=&amp;quot;#startnavigation&amp;quot;&amp;amp;gt;Skip to navigation&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;divider&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.calgaryherald.com/ Calgary Herald] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.calgaryherald.com/life/Cooking+Solo+Grows/4746884/story.html Cooking Solo Grows Up]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;storyheader&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;headline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1&amp;amp;gt;Cooking Solo Grows Up&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;subheadline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;On your own? You no longer have to put up with cereal over the sink or days of the same old leftovers. Joe Yonan shows us why&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;byline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;name&amp;quot;&amp;amp;gt;By Gwendolyn Richards, Calgary Herald&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;timestamp&amp;quot;&amp;amp;gt;May 8, 2011 2:06 AM&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span id=&amp;quot;lblComment&amp;quot; class=&amp;quot;comments&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.panic.com/ Panic] ===&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/coda/ Coda - One-Window Web Development for Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;header&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/coda/&amp;quot; title=&amp;quot;Coda&amp;quot;&amp;amp;gt;Coda&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;One window web development.*&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/unison/ Unison - The Best Usenet Browser / Newsreader, Only For Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://www.panic.com/unison/&amp;quot; title=&amp;quot;Unison - The Best Usenet Browser&amp;quot;&amp;amp;gt;Unison&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
   the best usenet browser&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.pcworld.com/ PCWorld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.pcworld.com/article/227313/top_15_android_apps_for_smartphone_shutterbugs.html Top 15 Android Apps For Smartphone Shutterbugs]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;articleHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Top 15 Android Apps For Smartphone Shutterbugs&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Use these Android apps to add effects to your mobile photos and make them easier to take.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;byline&amp;quot;&amp;amp;gt;By &amp;amp;lt;a href=&amp;quot;/author/Daniel-Ionescu&amp;quot;&amp;amp;gt;Daniel Ionescu&amp;amp;lt;/a&amp;amp;gt;,&lt;br /&gt;
      &amp;amp;lt;a href=&amp;quot;http://www.pcworld.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;PCWorld&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
      &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;timestamp(1304707200000,&#039;longDateTime&#039;)&amp;amp;lt;/script&amp;amp;gt;May 6, 2011 8:40 pm&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.computerworld.com/ Computerworld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.computerworld.com/s/article/9216484/Elgan_How_to_pop_your_Internet_filter_bubble_ Elgan: How to pop your Internet &#039;filter bubble&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;article_header&amp;quot; class=&amp;quot;clearfix&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;content_type&amp;quot;&amp;amp;gt;Opinion&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Elgan: How to pop your Internet &#039;filter bubble&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Personalization algorithms are stereotyping you, then hiding information from you based on that stereotype. Wait -- what?&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;byline&amp;quot;&amp;amp;gt;By Mike Elgan&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;date&amp;quot;&amp;amp;gt;May 7, 2011 08:00 AM ET&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.apple.com/ Apple] ===&lt;br /&gt;
&lt;br /&gt;
* Example page: [http://www.apple.com/imac/features.html Apple - iMac - Read about the features of the new iMac.]&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://images.apple.com/imac/images/features_title20110426.png&amp;quot; alt=&amp;quot;Its beauty is way more than screen  deep. &amp;quot; width=&amp;quot;766&amp;quot; height=&amp;quot;46&amp;quot; class=&amp;quot;center&amp;quot; /&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;intro&amp;quot;&amp;amp;gt;All-new quad-core processors. Advanced graphics. Thunderbolt technology. FaceTime HD. iMac is a desktop workhorse disguised as an all-in-one wonder.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://docbook.sf.net/ DocBook XSL Stylesheets] ===&lt;br /&gt;
&lt;br /&gt;
* All content generated from DocBook yields the following output for title/subtitle (actualy heading levels can vary depending on the depth of element with title/subtitle):&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;titlepage&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;title&amp;quot;&amp;gt;Title&amp;amp;lt;/h2&amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3 class=&amp;quot;subtitle&amp;quot;&amp;gt;Subtitl&amp;amp;lt;/h3&amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://miniapps.co.uk/ MiniApps] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;http://miniapps.co.uk/&amp;quot; title=&amp;quot;Home page&amp;quot;&amp;amp;gt;&amp;amp;lt;span&amp;amp;gt;MiniApps&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Beautifully crafted mobile web apps.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6415</id>
		<title>Hgroup element</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6415"/>
		<updated>2011-05-09T06:52:33Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Oxford English Dictionary */ Reformatted markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents use cases and existing usage patterns related to marking up subtitles and taglines within headers.&lt;br /&gt;
&lt;br /&gt;
== Real World Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are real world pages all using various structures to mark up subtitles and taglines for page and article headers. Each one contains the markup copied and pasted directly from the site, only modified where necessary to tidy up whitespace or to omit irrelevant content from the header where indicated.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.telegraph.co.uk/ The Telegraph (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.telegraph.co.uk/foodanddrink/8324778/Coca-Cola-recipe-discovered.html Coca Cola recipe &#039;discovered&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;storyHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Coca Cola recipe &#039;discovered&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;A website claims to have uncovered Coca-Cola&#039;s top secret recipe.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.nationalgeographic.com/ National Geographic] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://news.nationalgeographic.com/news/2011/05/110505-einstein-theories-confirmed-gravity-probe-nasa-space-science Einstein Theories Confirmed by NASA Gravity Probe]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;page_head&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Einstein Theories Confirmed by NASA Gravity Probe&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;amp;gt;Space mission did what the famed physicist said would be impossible.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gutenberg.org/ Project Gutenberg] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/36/36-h/36-h.htm The War of the Worlds, by H. G. Wells]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chapnum&amp;quot;&amp;amp;gt;CHAPTER ONE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chaptitle&amp;quot;&amp;amp;gt;THE EVE OF THE WAR&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/28749/28749-h/28749-h.htm The Madcap of the School, by Angela Brazil.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div style=&amp;quot;margin: auto; text-align: center; padding-top: 0pt; padding-bottom: 1em;&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a name=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot; id=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;CHAPTER I&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;THE MOATED GRANGE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/98/98-h/98-h.htm A Tale of Two Cities, by Charles Dickens]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;A TALE OF TWO CITIES&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;A STORY OF THE FRENCH REVOLUTION&amp;amp;lt;/h2&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;By Charles Dickens&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.techdirt.com/ Techdirt] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.techdirt.com/articles/20110506/15124514188/when-copyright-contracts-can-get-way-art.shtml When Copyright And Contracts Can Get In The Way Of Art]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;story&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;When Copyright And Contracts Can Get In The Way Of Art&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;from the &amp;amp;lt;i&amp;amp;gt;tales-from-the-creative-front-lines&amp;amp;lt;/i&amp;amp;gt; dept&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://xkcd.com/ XKCD] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;topRightContainer&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://imgs.xkcd.com/s/9be30a7.png&amp;quot; alt=&amp;quot;xkcd.com logo&amp;quot; height=&amp;quot;83&amp;quot; width=&amp;quot;185&amp;quot;/&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;A webcomic of romance,&amp;amp;lt;br/&amp;amp;gt; sarcasm, math, and language.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;div class=&amp;quot;clearleft&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
     XKCD updates every Monday, Wednesday, and Friday.&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://finance.yahoo.com/ Yahoo! Finance] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://finance.yahoo.com/news/Gas-prices-expected-to-drop-apf-3767822723.html?x=0 Gas prices expected to drop 50 cents by summer]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;y-article-hd&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1 class=&amp;quot;test1&amp;quot;&amp;amp;gt;Gas prices expected to drop 50 cents by summer&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;After 44 days of surging gas prices, analysts expect drop of 50 cents by summer driving season&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://us.rd.yahoo.com/finance/news/apf/SIG=10kfmofol/*http://www.ap.org/termsandconditions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://l.yimg.com/a/i/us/fi/gr/ap_106x27.gif&amp;quot; alt=&amp;quot;ap&amp;quot; class=&amp;quot;sponsorimage&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;	&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://oed.com/ Oxford English Dictionary] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;Discover the story of English&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;blurb&amp;quot;&amp;amp;gt;&lt;br /&gt;
       &amp;amp;lt;p&amp;amp;gt;More than 600,000 words, over a thousand years&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://diveintoaccessibility.org/ Dive Into Accessibility] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;inner&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/&amp;quot; accesskey=&amp;quot;1&amp;quot;&amp;amp;gt;Dive Into Accessibility&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;30 days to a more accessible web site&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a class=&amp;quot;skip&amp;quot; href=&amp;quot;#startnavigation&amp;quot;&amp;amp;gt;Skip to navigation&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;divider&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.calgaryherald.com/ Calgary Herald] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.calgaryherald.com/life/Cooking+Solo+Grows/4746884/story.html Cooking Solo Grows Up]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;storyheader&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;headline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1&amp;amp;gt;Cooking Solo Grows Up&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;subheadline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;On your own? You no longer have to put up with cereal over the sink or days of the same old leftovers. Joe Yonan shows us why&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;byline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;name&amp;quot;&amp;amp;gt;By Gwendolyn Richards, Calgary Herald&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;timestamp&amp;quot;&amp;amp;gt;May 8, 2011 2:06 AM&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span id=&amp;quot;lblComment&amp;quot; class=&amp;quot;comments&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.panic.com/ Panic] ===&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/coda/ Coda - One-Window Web Development for Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;header&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/coda/&amp;quot; title=&amp;quot;Coda&amp;quot;&amp;amp;gt;Coda&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;One window web development.*&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/unison/ Unison - The Best Usenet Browser / Newsreader, Only For Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://www.panic.com/unison/&amp;quot; title=&amp;quot;Unison - The Best Usenet Browser&amp;quot;&amp;amp;gt;Unison&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
   the best usenet browser&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.pcworld.com/ PCWorld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.pcworld.com/article/227313/top_15_android_apps_for_smartphone_shutterbugs.html Top 15 Android Apps For Smartphone Shutterbugs]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;articleHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Top 15 Android Apps For Smartphone Shutterbugs&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Use these Android apps to add effects to your mobile photos and make them easier to take.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;byline&amp;quot;&amp;amp;gt;By &amp;amp;lt;a href=&amp;quot;/author/Daniel-Ionescu&amp;quot;&amp;amp;gt;Daniel Ionescu&amp;amp;lt;/a&amp;amp;gt;,&lt;br /&gt;
      &amp;amp;lt;a href=&amp;quot;http://www.pcworld.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;PCWorld&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
      &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;timestamp(1304707200000,&#039;longDateTime&#039;)&amp;amp;lt;/script&amp;amp;gt;May 6, 2011 8:40 pm&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.computerworld.com/ Computerworld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.computerworld.com/s/article/9216484/Elgan_How_to_pop_your_Internet_filter_bubble_ Elgan: How to pop your Internet &#039;filter bubble&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;article_header&amp;quot; class=&amp;quot;clearfix&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;content_type&amp;quot;&amp;amp;gt;Opinion&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Elgan: How to pop your Internet &#039;filter bubble&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Personalization algorithms are stereotyping you, then hiding information from you based on that stereotype. Wait -- what?&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;byline&amp;quot;&amp;amp;gt;By Mike Elgan&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;date&amp;quot;&amp;amp;gt;May 7, 2011 08:00 AM ET&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.apple.com/ Apple] ===&lt;br /&gt;
&lt;br /&gt;
* Example page: [http://www.apple.com/imac/features.html Apple - iMac - Read about the features of the new iMac.]&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://images.apple.com/imac/images/features_title20110426.png&amp;quot; alt=&amp;quot;Its beauty is way more than screen  deep. &amp;quot; width=&amp;quot;766&amp;quot; height=&amp;quot;46&amp;quot; class=&amp;quot;center&amp;quot; /&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;intro&amp;quot;&amp;amp;gt;All-new quad-core processors. Advanced graphics. Thunderbolt technology. FaceTime HD. iMac is a desktop workhorse disguised as an all-in-one wonder.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6414</id>
		<title>Hgroup element</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6414"/>
		<updated>2011-05-09T06:48:24Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents use cases and existing usage patterns related to marking up subtitles and taglines within headers.&lt;br /&gt;
&lt;br /&gt;
== Real World Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are real world pages all using various structures to mark up subtitles and taglines for page and article headers. Each one contains the markup copied and pasted directly from the site, only modified where necessary to tidy up whitespace or to omit irrelevant content from the header where indicated.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.telegraph.co.uk/ The Telegraph (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.telegraph.co.uk/foodanddrink/8324778/Coca-Cola-recipe-discovered.html Coca Cola recipe &#039;discovered&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;storyHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Coca Cola recipe &#039;discovered&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;A website claims to have uncovered Coca-Cola&#039;s top secret recipe.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.nationalgeographic.com/ National Geographic] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://news.nationalgeographic.com/news/2011/05/110505-einstein-theories-confirmed-gravity-probe-nasa-space-science Einstein Theories Confirmed by NASA Gravity Probe]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;page_head&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Einstein Theories Confirmed by NASA Gravity Probe&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;amp;gt;Space mission did what the famed physicist said would be impossible.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gutenberg.org/ Project Gutenberg] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/36/36-h/36-h.htm The War of the Worlds, by H. G. Wells]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chapnum&amp;quot;&amp;amp;gt;CHAPTER ONE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chaptitle&amp;quot;&amp;amp;gt;THE EVE OF THE WAR&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/28749/28749-h/28749-h.htm The Madcap of the School, by Angela Brazil.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div style=&amp;quot;margin: auto; text-align: center; padding-top: 0pt; padding-bottom: 1em;&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a name=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot; id=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;CHAPTER I&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;THE MOATED GRANGE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/98/98-h/98-h.htm A Tale of Two Cities, by Charles Dickens]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;A TALE OF TWO CITIES&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;A STORY OF THE FRENCH REVOLUTION&amp;amp;lt;/h2&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;By Charles Dickens&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.techdirt.com/ Techdirt] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.techdirt.com/articles/20110506/15124514188/when-copyright-contracts-can-get-way-art.shtml When Copyright And Contracts Can Get In The Way Of Art]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;story&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;When Copyright And Contracts Can Get In The Way Of Art&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;from the &amp;amp;lt;i&amp;amp;gt;tales-from-the-creative-front-lines&amp;amp;lt;/i&amp;amp;gt; dept&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://xkcd.com/ XKCD] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;topRightContainer&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://imgs.xkcd.com/s/9be30a7.png&amp;quot; alt=&amp;quot;xkcd.com logo&amp;quot; height=&amp;quot;83&amp;quot; width=&amp;quot;185&amp;quot;/&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;A webcomic of romance,&amp;amp;lt;br/&amp;amp;gt; sarcasm, math, and language.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;div class=&amp;quot;clearleft&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
     XKCD updates every Monday, Wednesday, and Friday.&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://finance.yahoo.com/ Yahoo! Finance] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://finance.yahoo.com/news/Gas-prices-expected-to-drop-apf-3767822723.html?x=0 Gas prices expected to drop 50 cents by summer]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;y-article-hd&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1 class=&amp;quot;test1&amp;quot;&amp;amp;gt;Gas prices expected to drop 50 cents by summer&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;After 44 days of surging gas prices, analysts expect drop of 50 cents by summer driving season&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://us.rd.yahoo.com/finance/news/apf/SIG=10kfmofol/*http://www.ap.org/termsandconditions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://l.yimg.com/a/i/us/fi/gr/ap_106x27.gif&amp;quot; alt=&amp;quot;ap&amp;quot; class=&amp;quot;sponsorimage&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;	&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://oed.com/ Oxford English Dictionary] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span&amp;amp;gt;&amp;amp;lt;p&amp;amp;gt;Discover the story of English&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;blurb&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;More than 600,000 words, over a thousand years&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://diveintoaccessibility.org/ Dive Into Accessibility] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;inner&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/&amp;quot; accesskey=&amp;quot;1&amp;quot;&amp;amp;gt;Dive Into Accessibility&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;30 days to a more accessible web site&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a class=&amp;quot;skip&amp;quot; href=&amp;quot;#startnavigation&amp;quot;&amp;amp;gt;Skip to navigation&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;divider&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.calgaryherald.com/ Calgary Herald] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.calgaryherald.com/life/Cooking+Solo+Grows/4746884/story.html Cooking Solo Grows Up]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;storyheader&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;headline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1&amp;amp;gt;Cooking Solo Grows Up&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;subheadline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;On your own? You no longer have to put up with cereal over the sink or days of the same old leftovers. Joe Yonan shows us why&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;byline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;name&amp;quot;&amp;amp;gt;By Gwendolyn Richards, Calgary Herald&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;timestamp&amp;quot;&amp;amp;gt;May 8, 2011 2:06 AM&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span id=&amp;quot;lblComment&amp;quot; class=&amp;quot;comments&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.panic.com/ Panic] ===&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/coda/ Coda - One-Window Web Development for Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;header&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/coda/&amp;quot; title=&amp;quot;Coda&amp;quot;&amp;amp;gt;Coda&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;One window web development.*&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/unison/ Unison - The Best Usenet Browser / Newsreader, Only For Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://www.panic.com/unison/&amp;quot; title=&amp;quot;Unison - The Best Usenet Browser&amp;quot;&amp;amp;gt;Unison&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
   the best usenet browser&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.pcworld.com/ PCWorld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.pcworld.com/article/227313/top_15_android_apps_for_smartphone_shutterbugs.html Top 15 Android Apps For Smartphone Shutterbugs]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;articleHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Top 15 Android Apps For Smartphone Shutterbugs&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Use these Android apps to add effects to your mobile photos and make them easier to take.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;byline&amp;quot;&amp;amp;gt;By &amp;amp;lt;a href=&amp;quot;/author/Daniel-Ionescu&amp;quot;&amp;amp;gt;Daniel Ionescu&amp;amp;lt;/a&amp;amp;gt;,&lt;br /&gt;
      &amp;amp;lt;a href=&amp;quot;http://www.pcworld.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;PCWorld&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
      &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;timestamp(1304707200000,&#039;longDateTime&#039;)&amp;amp;lt;/script&amp;amp;gt;May 6, 2011 8:40 pm&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.computerworld.com/ Computerworld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.computerworld.com/s/article/9216484/Elgan_How_to_pop_your_Internet_filter_bubble_ Elgan: How to pop your Internet &#039;filter bubble&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;article_header&amp;quot; class=&amp;quot;clearfix&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;content_type&amp;quot;&amp;amp;gt;Opinion&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Elgan: How to pop your Internet &#039;filter bubble&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Personalization algorithms are stereotyping you, then hiding information from you based on that stereotype. Wait -- what?&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;byline&amp;quot;&amp;amp;gt;By Mike Elgan&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;date&amp;quot;&amp;amp;gt;May 7, 2011 08:00 AM ET&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.apple.com/ Apple] ===&lt;br /&gt;
&lt;br /&gt;
* Example page: [http://www.apple.com/imac/features.html Apple - iMac - Read about the features of the new iMac.]&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://images.apple.com/imac/images/features_title20110426.png&amp;quot; alt=&amp;quot;Its beauty is way more than screen  deep. &amp;quot; width=&amp;quot;766&amp;quot; height=&amp;quot;46&amp;quot; class=&amp;quot;center&amp;quot; /&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;intro&amp;quot;&amp;amp;gt;All-new quad-core processors. Advanced graphics. Thunderbolt technology. FaceTime HD. iMac is a desktop workhorse disguised as an all-in-one wonder.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6413</id>
		<title>Hgroup element</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6413"/>
		<updated>2011-05-09T06:47:52Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Added Apple&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents use cases and existing usage patterns related to marking up subtitles and taglines within headers.&lt;br /&gt;
&lt;br /&gt;
== Real World Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are real world pages all using various structures to mark up subtitles and taglines for page and article headers. Each one contains the markup copied and pasted directly from the site, only modified where necessary to tidy up whitespace or to omit irrelevant content from the header where indicated.&lt;br /&gt;
&lt;br /&gt;
The suggested HTML5 markup that follows each example illustrates an equivalent structure using the hgroup element. This is provided for comparison purposes only to see how well its design aligns with or differs from current practice.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.telegraph.co.uk/ The Telegraph (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.telegraph.co.uk/foodanddrink/8324778/Coca-Cola-recipe-discovered.html Coca Cola recipe &#039;discovered&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;storyHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Coca Cola recipe &#039;discovered&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;A website claims to have uncovered Coca-Cola&#039;s top secret recipe.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.nationalgeographic.com/ National Geographic] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://news.nationalgeographic.com/news/2011/05/110505-einstein-theories-confirmed-gravity-probe-nasa-space-science Einstein Theories Confirmed by NASA Gravity Probe]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;page_head&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Einstein Theories Confirmed by NASA Gravity Probe&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;amp;gt;Space mission did what the famed physicist said would be impossible.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gutenberg.org/ Project Gutenberg] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/36/36-h/36-h.htm The War of the Worlds, by H. G. Wells]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chapnum&amp;quot;&amp;amp;gt;CHAPTER ONE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chaptitle&amp;quot;&amp;amp;gt;THE EVE OF THE WAR&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/28749/28749-h/28749-h.htm The Madcap of the School, by Angela Brazil.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div style=&amp;quot;margin: auto; text-align: center; padding-top: 0pt; padding-bottom: 1em;&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a name=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot; id=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;CHAPTER I&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;THE MOATED GRANGE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/98/98-h/98-h.htm A Tale of Two Cities, by Charles Dickens]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;A TALE OF TWO CITIES&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;A STORY OF THE FRENCH REVOLUTION&amp;amp;lt;/h2&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;By Charles Dickens&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.techdirt.com/ Techdirt] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.techdirt.com/articles/20110506/15124514188/when-copyright-contracts-can-get-way-art.shtml When Copyright And Contracts Can Get In The Way Of Art]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;story&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;When Copyright And Contracts Can Get In The Way Of Art&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;from the &amp;amp;lt;i&amp;amp;gt;tales-from-the-creative-front-lines&amp;amp;lt;/i&amp;amp;gt; dept&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://xkcd.com/ XKCD] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;topRightContainer&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://imgs.xkcd.com/s/9be30a7.png&amp;quot; alt=&amp;quot;xkcd.com logo&amp;quot; height=&amp;quot;83&amp;quot; width=&amp;quot;185&amp;quot;/&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;A webcomic of romance,&amp;amp;lt;br/&amp;amp;gt; sarcasm, math, and language.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;div class=&amp;quot;clearleft&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
     XKCD updates every Monday, Wednesday, and Friday.&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://finance.yahoo.com/ Yahoo! Finance] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://finance.yahoo.com/news/Gas-prices-expected-to-drop-apf-3767822723.html?x=0 Gas prices expected to drop 50 cents by summer]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;y-article-hd&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1 class=&amp;quot;test1&amp;quot;&amp;amp;gt;Gas prices expected to drop 50 cents by summer&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;After 44 days of surging gas prices, analysts expect drop of 50 cents by summer driving season&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://us.rd.yahoo.com/finance/news/apf/SIG=10kfmofol/*http://www.ap.org/termsandconditions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://l.yimg.com/a/i/us/fi/gr/ap_106x27.gif&amp;quot; alt=&amp;quot;ap&amp;quot; class=&amp;quot;sponsorimage&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;	&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://oed.com/ Oxford English Dictionary] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span&amp;amp;gt;&amp;amp;lt;p&amp;amp;gt;Discover the story of English&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;blurb&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;More than 600,000 words, over a thousand years&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://diveintoaccessibility.org/ Dive Into Accessibility] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;inner&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/&amp;quot; accesskey=&amp;quot;1&amp;quot;&amp;amp;gt;Dive Into Accessibility&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;30 days to a more accessible web site&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a class=&amp;quot;skip&amp;quot; href=&amp;quot;#startnavigation&amp;quot;&amp;amp;gt;Skip to navigation&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;divider&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.calgaryherald.com/ Calgary Herald] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.calgaryherald.com/life/Cooking+Solo+Grows/4746884/story.html Cooking Solo Grows Up]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;storyheader&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;headline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1&amp;amp;gt;Cooking Solo Grows Up&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;subheadline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;On your own? You no longer have to put up with cereal over the sink or days of the same old leftovers. Joe Yonan shows us why&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;byline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;name&amp;quot;&amp;amp;gt;By Gwendolyn Richards, Calgary Herald&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;timestamp&amp;quot;&amp;amp;gt;May 8, 2011 2:06 AM&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span id=&amp;quot;lblComment&amp;quot; class=&amp;quot;comments&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.panic.com/ Panic] ===&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/coda/ Coda - One-Window Web Development for Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;header&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/coda/&amp;quot; title=&amp;quot;Coda&amp;quot;&amp;amp;gt;Coda&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;One window web development.*&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/unison/ Unison - The Best Usenet Browser / Newsreader, Only For Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://www.panic.com/unison/&amp;quot; title=&amp;quot;Unison - The Best Usenet Browser&amp;quot;&amp;amp;gt;Unison&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
   the best usenet browser&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.pcworld.com/ PCWorld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.pcworld.com/article/227313/top_15_android_apps_for_smartphone_shutterbugs.html Top 15 Android Apps For Smartphone Shutterbugs]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;articleHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Top 15 Android Apps For Smartphone Shutterbugs&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Use these Android apps to add effects to your mobile photos and make them easier to take.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;byline&amp;quot;&amp;amp;gt;By &amp;amp;lt;a href=&amp;quot;/author/Daniel-Ionescu&amp;quot;&amp;amp;gt;Daniel Ionescu&amp;amp;lt;/a&amp;amp;gt;,&lt;br /&gt;
      &amp;amp;lt;a href=&amp;quot;http://www.pcworld.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;PCWorld&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
      &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;timestamp(1304707200000,&#039;longDateTime&#039;)&amp;amp;lt;/script&amp;amp;gt;May 6, 2011 8:40 pm&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.computerworld.com/ Computerworld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.computerworld.com/s/article/9216484/Elgan_How_to_pop_your_Internet_filter_bubble_ Elgan: How to pop your Internet &#039;filter bubble&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;article_header&amp;quot; class=&amp;quot;clearfix&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;content_type&amp;quot;&amp;amp;gt;Opinion&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Elgan: How to pop your Internet &#039;filter bubble&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Personalization algorithms are stereotyping you, then hiding information from you based on that stereotype. Wait -- what?&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;byline&amp;quot;&amp;amp;gt;By Mike Elgan&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;date&amp;quot;&amp;amp;gt;May 7, 2011 08:00 AM ET&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.apple.com/ Apple] ===&lt;br /&gt;
&lt;br /&gt;
* Example page: [http://www.apple.com/imac/features.html Apple - iMac - Read about the features of the new iMac.]&lt;br /&gt;
 &amp;amp;lt;hgroup&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://images.apple.com/imac/images/features_title20110426.png&amp;quot; alt=&amp;quot;Its beauty is way more than screen  deep. &amp;quot; width=&amp;quot;766&amp;quot; height=&amp;quot;46&amp;quot; class=&amp;quot;center&amp;quot; /&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;intro&amp;quot;&amp;amp;gt;All-new quad-core processors. Advanced graphics. Thunderbolt technology. FaceTime HD. iMac is a desktop workhorse disguised as an all-in-one wonder.&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/hgroup&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6412</id>
		<title>Hgroup element</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Hgroup_element&amp;diff=6412"/>
		<updated>2011-05-09T06:35:55Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Start with list of real world examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents use cases and existing usage patterns related to marking up subtitles and taglines within headers.&lt;br /&gt;
&lt;br /&gt;
== Real World Examples ==&lt;br /&gt;
&lt;br /&gt;
The following are real world pages all using various structures to mark up subtitles and taglines for page and article headers. Each one contains the markup copied and pasted directly from the site, only modified where necessary to tidy up whitespace or to omit irrelevant content from the header where indicated.&lt;br /&gt;
&lt;br /&gt;
The suggested HTML5 markup that follows each example illustrates an equivalent structure using the hgroup element. This is provided for comparison purposes only to see how well its design aligns with or differs from current practice.&lt;br /&gt;
&lt;br /&gt;
=== [http://www.telegraph.co.uk/ The Telegraph (UK)] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.telegraph.co.uk/foodanddrink/8324778/Coca-Cola-recipe-discovered.html Coca Cola recipe &#039;discovered&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;storyHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Coca Cola recipe &#039;discovered&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;A website claims to have uncovered Coca-Cola&#039;s top secret recipe.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.nationalgeographic.com/ National Geographic] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://news.nationalgeographic.com/news/2011/05/110505-einstein-theories-confirmed-gravity-probe-nasa-space-science Einstein Theories Confirmed by NASA Gravity Probe]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;page_head&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Einstein Theories Confirmed by NASA Gravity Probe&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2 class=&amp;quot;subtitle&amp;quot;&amp;amp;gt;Space mission did what the famed physicist said would be impossible.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.gutenberg.org/ Project Gutenberg] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/36/36-h/36-h.htm The War of the Worlds, by H. G. Wells]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chapnum&amp;quot;&amp;amp;gt;CHAPTER ONE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h3 class=&amp;quot;chaptitle&amp;quot;&amp;amp;gt;THE EVE OF THE WAR&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/28749/28749-h/28749-h.htm The Madcap of the School, by Angela Brazil.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div style=&amp;quot;margin: auto; text-align: center; padding-top: 0pt; padding-bottom: 1em;&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a name=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot; id=&amp;quot;CHAPTER_I_THE_MOATED_GRANGE&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;CHAPTER I&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;THE MOATED GRANGE&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.gutenberg.org/files/98/98-h/98-h.htm A Tale of Two Cities, by Charles Dickens]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;A TALE OF TWO CITIES&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;A STORY OF THE FRENCH REVOLUTION&amp;amp;lt;/h2&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;h2&amp;amp;gt;By Charles Dickens&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.techdirt.com/ Techdirt] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.techdirt.com/articles/20110506/15124514188/when-copyright-contracts-can-get-way-art.shtml When Copyright And Contracts Can Get In The Way Of Art]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div class=&amp;quot;story&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;When Copyright And Contracts Can Get In The Way Of Art&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h3&amp;amp;gt;from the &amp;amp;lt;i&amp;amp;gt;tales-from-the-creative-front-lines&amp;amp;lt;/i&amp;amp;gt; dept&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;...&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://xkcd.com/ XKCD] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;topRightContainer&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a href=&amp;quot;/&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://imgs.xkcd.com/s/9be30a7.png&amp;quot; alt=&amp;quot;xkcd.com logo&amp;quot; height=&amp;quot;83&amp;quot; width=&amp;quot;185&amp;quot;/&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;A webcomic of romance,&amp;amp;lt;br/&amp;amp;gt; sarcasm, math, and language.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;div class=&amp;quot;clearleft&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;br /&amp;amp;gt;&lt;br /&gt;
     XKCD updates every Monday, Wednesday, and Friday.&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://finance.yahoo.com/ Yahoo! Finance] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://finance.yahoo.com/news/Gas-prices-expected-to-drop-apf-3767822723.html?x=0 Gas prices expected to drop 50 cents by summer]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;y-article-hd&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1 class=&amp;quot;test1&amp;quot;&amp;amp;gt;Gas prices expected to drop 50 cents by summer&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;After 44 days of surging gas prices, analysts expect drop of 50 cents by summer driving season&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://us.rd.yahoo.com/finance/news/apf/SIG=10kfmofol/*http://www.ap.org/termsandconditions&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;amp;gt;&amp;amp;lt;img src=&amp;quot;http://l.yimg.com/a/i/us/fi/gr/ap_106x27.gif&amp;quot; alt=&amp;quot;ap&amp;quot; class=&amp;quot;sponsorimage&amp;quot;&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt;	&lt;br /&gt;
   ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://oed.com/ Oxford English Dictionary] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;span&amp;amp;gt;&amp;amp;lt;p&amp;amp;gt;Discover the story of English&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;span class=&amp;quot;blurb&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;More than 600,000 words, over a thousand years&amp;amp;lt;/p&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://diveintoaccessibility.org/ Dive Into Accessibility] ===&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;logo&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;inner&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1 class=&amp;quot;title&amp;quot;&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/&amp;quot; accesskey=&amp;quot;1&amp;quot;&amp;amp;gt;Dive Into Accessibility&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;p&amp;amp;gt;30 days to a more accessible web site&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;a class=&amp;quot;skip&amp;quot; href=&amp;quot;#startnavigation&amp;quot;&amp;amp;gt;Skip to navigation&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;divider&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.calgaryherald.com/ Calgary Herald] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.calgaryherald.com/life/Cooking+Solo+Grows/4746884/story.html Cooking Solo Grows Up]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;storyheader&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;headline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h1&amp;amp;gt;Cooking Solo Grows Up&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;subheadline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;h2&amp;amp;gt;On your own? You no longer have to put up with cereal over the sink or days of the same old leftovers. Joe Yonan shows us why&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;byline&amp;quot;&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;name&amp;quot;&amp;amp;gt;By Gwendolyn Richards, Calgary Herald&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span class=&amp;quot;timestamp&amp;quot;&amp;amp;gt;May 8, 2011 2:06 AM&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;span id=&amp;quot;lblComment&amp;quot; class=&amp;quot;comments&amp;quot;&amp;amp;gt;&amp;amp;lt;/span&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div class=&amp;quot;clear&amp;quot;&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.panic.com/ Panic] ===&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/coda/ Coda - One-Window Web Development for Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;header&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;&amp;amp;lt;a href=&amp;quot;/coda/&amp;quot; title=&amp;quot;Coda&amp;quot;&amp;amp;gt;Coda&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;p&amp;amp;gt;One window web development.*&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example page: [http://www.panic.com/unison/ Unison - The Best Usenet Browser / Newsreader, Only For Mac OS X]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;a href=&amp;quot;http://www.panic.com/unison/&amp;quot; title=&amp;quot;Unison - The Best Usenet Browser&amp;quot;&amp;amp;gt;Unison&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
   the best usenet browser&lt;br /&gt;
 &amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.pcworld.com/ PCWorld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.pcworld.com/article/227313/top_15_android_apps_for_smartphone_shutterbugs.html Top 15 Android Apps For Smartphone Shutterbugs]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;articleHead&amp;quot;&amp;amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Top 15 Android Apps For Smartphone Shutterbugs&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Use these Android apps to add effects to your mobile photos and make them easier to take.&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   &amp;amp;lt;p class=&amp;quot;byline&amp;quot;&amp;amp;gt;By &amp;amp;lt;a href=&amp;quot;/author/Daniel-Ionescu&amp;quot;&amp;amp;gt;Daniel Ionescu&amp;amp;lt;/a&amp;amp;gt;,&lt;br /&gt;
      &amp;amp;lt;a href=&amp;quot;http://www.pcworld.com/&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;PCWorld&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
      &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;amp;gt;timestamp(1304707200000,&#039;longDateTime&#039;)&amp;amp;lt;/script&amp;amp;gt;May 6, 2011 8:40 pm&amp;amp;lt;/p&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [http://www.computerworld.com/ Computerworld] ===&lt;br /&gt;
&lt;br /&gt;
Example article: [http://www.computerworld.com/s/article/9216484/Elgan_How_to_pop_your_Internet_filter_bubble_ Elgan: How to pop your Internet &#039;filter bubble&#039;]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div id=&amp;quot;article_header&amp;quot; class=&amp;quot;clearfix&amp;quot;&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;content_type&amp;quot;&amp;amp;gt;Opinion&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h1&amp;amp;gt;Elgan: How to pop your Internet &#039;filter bubble&#039;&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;h2&amp;amp;gt;Personalization algorithms are stereotyping you, then hiding information from you based on that stereotype. Wait -- what?&amp;amp;lt;/h2&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;byline&amp;quot;&amp;amp;gt;By Mike Elgan&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;div id=&amp;quot;date&amp;quot;&amp;amp;gt;May 7, 2011 08:00 AM ET&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6394</id>
		<title>Forking</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Forking&amp;diff=6394"/>
		<updated>2011-05-02T10:05:19Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Defined differences between specification and language forks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of this page is to summarize information and arguments relevant to whether it makes sense for web specification copyright licenses to permit [[Wikipedia:Fork (software development)|forking]].&lt;br /&gt;
&lt;br /&gt;
For our purposes, there are two different approaches to forking.&lt;br /&gt;
&lt;br /&gt;
: Language Forking&lt;br /&gt;
:: An alternative development path for the language created without using existing specification text as the basis of the work.&lt;br /&gt;
: Specification Forking&lt;br /&gt;
:: An alternative development path using existing specification text as the basis of a derivative work.&lt;br /&gt;
&lt;br /&gt;
Since a &#039;&#039;language fork&#039;&#039; is not a derivative work according to copyright law, it may be done without the permission of the copyright holder.  A &#039;&#039;specification fork&#039;&#039;, however, requires a permissive licence or explicit permission from the copyright holder.&lt;br /&gt;
&lt;br /&gt;
Standard licenses that permit specification forking include [https://creativecommons.org/publicdomain/zero/1.0/ CC0], the [http://opensource.org/licenses/mit-license.php MIT license], and the [http://www.opensource.org/licenses/bsd-license.php BSD licenses].&lt;br /&gt;
&lt;br /&gt;
This page focuses on whether the W3C&#039;s HTML5 specification should allow forks, as the WHATWG version always has.&lt;br /&gt;
&lt;br /&gt;
== Existing forks of HTML ==&lt;br /&gt;
(based on [http://krijnhoetmer.nl/irc-logs/whatwg/20110430#l-179 IRC comment] by Maciej; possibly not everything here is strictly a fork, could use classification and explanation work)&lt;br /&gt;
&lt;br /&gt;
=== W3C-hosted forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-basic/ XHTML Basic]&lt;br /&gt;
* [http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315/ HTML 4 Mobile]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml2/ XHTML 2]&lt;br /&gt;
* [http://www.w3.org/TR/xhtml-print/ XHTML-Print]&lt;br /&gt;
&lt;br /&gt;
=== W3C-published but disavowed forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.w3.org/TR/NOTE-Submission-HDML-spec.html HDML]&lt;br /&gt;
* [http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131/ XHTML+SMIL]&lt;br /&gt;
* [http://www.w3.org/TR/1998/NOTE-compactHTML-19980209/ CHTML]&lt;br /&gt;
&lt;br /&gt;
=== Other forks ===&lt;br /&gt;
&lt;br /&gt;
* [http://jp29.org/iso.htm ISO HTML]&lt;br /&gt;
* [http://www.openmobilealliance.org/tech/affiliates/wap/wap-277-xhtmlmp-20011029-a.pdf XHTML-MP]&lt;br /&gt;
* [http://www.wapforum.org/what/technical.htm WML] (apparently no free download)&lt;br /&gt;
* [http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=19886 WTVML] (apparently no free download)&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/ WHATWG HTML]&lt;br /&gt;
* [http://www.ce.org/Standards/browseByCommittee_2757.asp CE-HTML] (apparently only a preview available for free)&lt;br /&gt;
* [http://idpf.org/epub/30/spec/epub30-publications.html EPUB]&lt;br /&gt;
* [http://html4all.org/HTMLDraft.html HTML 4.1]&lt;br /&gt;
&lt;br /&gt;
== Organizational forks ==&lt;br /&gt;
One argument presented in favor of allowing forks is that if the W3C ever makes poor decisions that compromise the quality of its standards, other organizations should have the right to issue competing standards, with implementers agreeing to follow the better standard.  When the W3C owns the right to large, established specifications that it doesn&#039;t permit others to fork, this becomes harder.  Looking at cases where standards authors have abandoned an existing standards group to form their own should give an idea of whether this tends to be a good or bad thing.&lt;br /&gt;
&lt;br /&gt;
=== W3C competing with IETF ===&lt;br /&gt;
The W3C itself was founded at least partly because Tim Berners-Lee felt that standardization at the IETF wasn&#039;t working well.  As he writes in his book, [http://www.w3.org/People/Berners-Lee/Weaving/Overview.html &#039;&#039;Weaving the Web&#039;&#039;] (pp. 62-3):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Progress in the [IETF&#039;s] URI working group was slow, partly due to the number of endless philosophical rat holes down which technical conversations would disappear. . . . Sometimes there was a core philosophy being argued, and from my point of view that was not up for compromise.  Sometimes there was a basically arbitrary decision (like which punctuation characters to use) that I had already made, and changing it would only mean that millions of Web browsers and existing links would have to be changed.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In practice, the W3C has wound up cooperating with the IETF more than competing.&lt;br /&gt;
&lt;br /&gt;
=== WHATWG competing with W3C ===&lt;br /&gt;
After HTML 4.01 was finalized in 1998, no new features were added to the HTML markup language other than in XHTML variants that browsers didn&#039;t implement.  Thus HTML as a standard markup language did not progress at all between about 1998 and 2004.  In 2004, Mozilla and Opera requested permission from the W3C to work on improving non-XML-based versions of HTML, and they were denied permission.  Apple, Mozilla, and Opera then founded the WHATWG, which began work on a new version of the HTML specification outside the W3C.  In a couple of years, the WHATWG rewrote the HTML standard from scratch, made it drastically more precise, and added many new highly-demanded features (such as video and canvas) that were previously only available through proprietary plugins.  In 2007, the W3C formed an HTML Working Group again to work on non-XML-based versions of HTML, based on and in conjunction with the work of the WHATWG.&lt;br /&gt;
&lt;br /&gt;
== Modularization ==&lt;br /&gt;
&lt;br /&gt;
[http://www.w3.org/TR/xhtml-modularization/ XHTML Modularization] has the goal of &amp;quot;providing a means for subsetting and extending XHTML, a feature needed for extending XHTML&#039;s reach onto emerging platforms&amp;quot;. Although this is not technically a fork (in the sense that it does not imply taking the W3C spec text and rewriting portions of it), the ability to create new HTML-derived specs that add or replace functionality carries many of the same risks that are brought up in the context of forking.&lt;br /&gt;
&lt;br /&gt;
== Supposed risks of forking ==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A national government could create its own intentionally incompatible national version of the html specification in order to prevent general Web access from within that country&amp;quot;: This argument is wrong at multiple levels:&lt;br /&gt;
** A national government would not be bound by copyright anyway. Even [http://arstechnica.com/tech-policy/news/2008/08/air-force-cracks-software-carpet-bombs-dmca.ars the US government] does not consider itself bound by copyright law.&lt;br /&gt;
** A specification is only needed if there is a desire for multiple independent interoperable implementations, i.e., if competition is being encouraged. But what government would on the one hand encourage competition amongst browser vendors and on the other hand prevent those browser vendors from implementing other versions of HTML?&lt;br /&gt;
** In practice, it would be economically impractical to control the Web by developing a parallel HTML that is similar enough that the W3C spec could be used as a basis, but different enough that it is incompatible with the Web&#039;s HTML. In reality, countries use content filtering software to do such control (c.f. China).&lt;br /&gt;
** Whether the W3C allows forking or not, and even if we grant that a license could stop this, this scenario could already happen because the entire HTML spec is already under a liberal license at the WHATWG.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Other undesirable forks could be for device specific variants of specs where it would be better for those groups to come into W3C [...] than to splinter html&amp;quot;: When the W3C forks HTML (as it has in the past, see the list above), it is just as bad as when anyone else does. There is nothing special about the W3C here.&lt;br /&gt;
&lt;br /&gt;
== Advantages of allowing forking ==&lt;br /&gt;
&lt;br /&gt;
* It encourages the W3C to do a good job, because of the risk that if the W3C does &#039;&#039;not&#039;&#039; do a good job, it will lose relevance. This has already been shown to be beneficial both to the W3C and the Web at large with HTML5 itself: the W3C tried to strongarm the Web into abandoning HTML, and when the WHATWG worked on it instead, the W3C changed its mind. This demonstrates the benefit of allowing forking (though in this case, it turns out copyright restrictions were not any kind of barrier to forking, because HTML4 wasn&#039;t good enough to be a useful starting point and we instead started from scratch).&lt;br /&gt;
&lt;br /&gt;
== Reasons preventing forking is not necessary ==&lt;br /&gt;
&lt;br /&gt;
* If the W3C is the best place to work on specs, then people will not need to fork, they&#039;ll just work on them at the W3C.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5006</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5006"/>
		<updated>2010-06-29T08:17:24Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* allow multiple language tags in Content-Language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Argument Summary===&lt;br /&gt;
&lt;br /&gt;
* The change proposal is based upon the false premise that the Content-Language HTTP header and pragma directive are equivalent.&lt;br /&gt;
* The HTTP header is used to declare the languages of the intended audience, the only defined function of the pragma directive is to be used as a fallback language in the absence of the lang attribute.&lt;br /&gt;
* The use of the pragma directive as part of server configuration is out of scope of HTML.  Specific server side implementation choices need not affect the conformance definition.&lt;br /&gt;
* The pragma directive only fulfils its purpose of providing a fallback language when one language tag is specified.  Multiple language tags are, by definition of the implementation requirements, not useful.&lt;br /&gt;
* There are no reasons given for why it is beneficial to leave the pragma directive in the document, when the lang attribute is present on the root element.&lt;br /&gt;
* Failing to offer a warning about its presence in all cases would continue to mislead the author about its legitimacy.&lt;br /&gt;
* The inconsistency of when warnings are issued would be confusing to authors. It is better to offer a consistent warning about the presence of a redundant feature.&lt;br /&gt;
* The defined effect, per the implementation requirements, of declaring multiple language tags is identical to that of omitting the pragma directive entirely. No reasons are given to explain why declaring multiple language tags is useful or beneficial.&lt;br /&gt;
* The syntax of the Content-Language HTTP header field is not affected by the definition of the distinct Content-Language pragma directive in HTML, with which it only shares the same name, and not the functionality.  It is reasonable for this distinct feature to use a different syntax that is suitable for its purpose.&lt;br /&gt;
* No reason is given explaining why only emitting the warning under specific circumstances, as opposed to the current specification requirement, would serve better to encourage authors to use the lang attribute instead.&lt;br /&gt;
* The proposed replacement specification text contains unjustified changes, inconsistencies, unimplementable requirements and is just downright inappropriate for use in the specification.&lt;br /&gt;
* The claimed positive benefits are unsupported by evidence and, in several cases, blatantly incorrect.&lt;br /&gt;
* In practice, very few authors use multiple language tags in the pragma directive, and doing so is not useful.  Restricting the syntax to one language would not have a significant negative impact.&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configuration====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the language of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Rationale===&lt;br /&gt;
&lt;br /&gt;
The rationale for this change proposal states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;[The current specification] offers no carrot for doing the right thing. while the fallback language effect stops as soon as the author adds lang on the root element, the spec requires conformance checker to continue whining until the http-equiv=&amp;quot;Content-Language&amp;quot; meta element has been removed.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale fails to explain the benefit gained by leaving the pragma directive in the document when a lang attribute has been specified on the root element.  While leaving it in the document under those circumstances is mostly harmless, it is redundant metadata that the author does not need to include in their document.  Failing to offer a warning would continue to mislead the author into thinking that the pragma directive is both acceptable and useful, which it is not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;That it prevents authors from legally using multiple values to replicate the language fallback effect of doing the same thing in a HTTP header — whether they want to replicate the effect of multiple tags or a single tag.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language fallback effect from using multiple language tags within the value is that there is no default language.  This is exactly the same effect as would be achieved by omitting the pragma directive, and so the given reason is blatantly wrong about having no way to replicate the effect of having no specified language.  This rationale also fails to provide a reason for wanting to replicate this effect by copying the same syntax.&lt;br /&gt;
&lt;br /&gt;
i.e.  The effect of including:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Language&amp;quot; content=&amp;quot;en, fr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is &amp;lt;em&amp;gt;identical&amp;lt;/em&amp;gt; to that of omitting this pragma directive entirely, and there is no reason for wanting to include the above either.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;That it underlines the confusion that may exist today, about the nature of lang versus Content-Language, by requiring:&lt;br /&gt;
&lt;br /&gt;
# different syntax rules for features that are expected to be identical (HTTP and http-equiv)&lt;br /&gt;
# similar syntax rules for features that are different (http-equiv and lang)&lt;br /&gt;
# a warning message which asks authors to “use lang instead” – as if they were juxtaposable alternatives.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Type header and the http-equiv pragma directive &amp;lt;em&amp;gt;are&amp;lt;/em&amp;gt; different.  The HTTP header is used for declaring the languages of the intended audience, the pragma directive is used for specifying a default language.&lt;br /&gt;
&lt;br /&gt;
The lang attribute, on the other hand, is an alternative to the pragma directive because the pragma directive only serves to specify the language of the document when a single value is used.  When multiple languages are specified in the pragma directive, there is absolutely no defined effect, and so it serves no valid purpose at all.&lt;br /&gt;
&lt;br /&gt;
Therefore, the pragma directive is much closer in functionality to the lang attribute, than it is to the HTTP header, with which it shares its name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Instead of the above, this change proposal propose:&lt;br /&gt;
&lt;br /&gt;
* the Zero-edit proposal’s warning about using lang instead of Content-Language should be changed into a warning which informs that a fallback language measure has kicked in, and recommend that authors create a language declaration (via lang) rather than relying on the fallback feature. This warning should be shown regardless of whether the fallback comes from http-equiv or from the higher level (HTTP). Justification: Since it is a fallback feature, and with other semantics, there is no guarantee that the author has used it for the language effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the authors perspective, the inconsistency of issuing the warning about the use of the pragma directive only when the lang attribute is absent would be confusing.  The better alternative is to issue a consistent warning (or error) that simply says to remove the pragma directive and use lang instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* to hold the syntax rules of HTTP (which permits multiple language tags) as the conforming ones (rather than those of lang, which forbids multiple languages), will have the effect of underlining that lang and Content-Language have different purposes. For instance, since the fallback algorithm doesn’t kick in whenever multiple languages are used in the pragma or on the server, there would not be any warning in these cases. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax requirements for the HTTP Content-Type header are not affected by the HTML implementation requirements.  Since the lang attribute on the root element and the Content-Language pragma directive with a single language value do have the same effect, which differs significantly from the purpose of the HTTP Content-Language header, and it is misleading to pretend otherwise, the syntax of the former does not need to match the syntax of the latter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* a carrot: what we want from authors is that they rely on lang (and xml:lang) for specifying the language — when the author does that, he/she should get immediate reward in the form of removal of conformance warning.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rationale fails to explain why that same effect of encouraging authors to use the lang attribute, would not be achieved by a more consistent warning that states to use the lang attribute and remove the pragma directive.  There is no benefit gained by leaving the directive in, and merely silencing the validator by inserting a lang attribute does little to discourage the use of the redundant and totally unnecessary pragma directive.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Proposal Details===&lt;br /&gt;
&lt;br /&gt;
The change proposal suggests replacing the terminology for &amp;quot;pragma-set default language&amp;quot; with &amp;quot;pragma-set locale language&amp;quot;.  None of the given rationale explains the need for this change in terminology.&lt;br /&gt;
&lt;br /&gt;
The proposed specification text states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma contains a Content-Language list, whose semantics and syntax is defined in the HTTP spec.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The semantics of the Content-Language header field as defined in RFC 2616 states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The Content-Language entity-header field describes the natural language(s) of the intended audience for the enclosed entity. Note that this might not be equivalent to all the languages used within the entity-body.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This semantic definition does not match the actual purpose of the Content-Language pragma directive, for specifying a &amp;quot;pragma-set locale language&amp;quot;.  Therefore, referring to RFC 2616 for this semantic definition is inappropriate.  The syntax requirements from RFC 2616 are also inappropriate, as it defines the following ABNF, which is not directly compatible with the syntax of the meta element with http-equiv and content attributes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Content-Language  = &amp;quot;Content-Language&amp;quot; &amp;quot;:&amp;quot; 1#language-tag&lt;br /&gt;
language-tag  = primary-tag *( &amp;quot;-&amp;quot; subtag )&lt;br /&gt;
primary-tag   = 1*8ALPHA&lt;br /&gt;
subtag        = 1*8ALPHA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these syntax requirements to be applicable at all, the specification would have to state that the value of the content attribute must match the ABNF production for language-tag.  However, see below regarding the syntax defined in BCP 47.&lt;br /&gt;
&lt;br /&gt;
The proposed text then states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;An HTML5 parser processes this list into a known or unknown pragma-set locale language... The Content-Language list may also be defined in a HTTP header, and will then result in a known or unknown HTTP header-set locale language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The proposed text fails to define what &amp;quot;known or unknown&amp;quot; means in that context.  It is not clear how the implementation determines whether a value is known or unknown.&lt;br /&gt;
&lt;br /&gt;
The parsing requirements for the value of this pragma directive are not specified by the change proposal.  However, the change proposal also does not state that the existing parsing requirements in the specification are to be removed, replaced or modified in any way.  Thus, by adopting the details of this change proposal, the specification would be left in an inconsistent state which says that multiple language values are supported, but where the parsing requirements abort when more than one value is used.&lt;br /&gt;
&lt;br /&gt;
The aforementioned parsing requirements only focus on parsing the value of the pragma directive, and as such, there is no implementation requirement that sets the &amp;quot;HTTP header-set locale language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;When a document is lacking a language declaration in the form of the lang or xml:lang attribute on the root element, the document’s locale language (pragma-set or HTTP-set) is consulted by the user agent and used as fallback value for the primary document language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the value of the &amp;quot;HTTP header-set locale language&amp;quot; comes from the HTTP Content-Language header, this proposed text fails to specify the order of precedence of the values specified in the pragma directive or the HTTP header.&lt;br /&gt;
&lt;br /&gt;
The use of the term &amp;quot;locale language&amp;quot; in this context clashes with the existing use of the term in the specification to refer to the language set by the user in the user agent&#039;s preferences.  This term is used in the table within step 7 of the algorithm to determine the character encoding.&lt;br /&gt;
&lt;br /&gt;
The proposed text then goes on to state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following info about the HTTP semantics and Content-Language usage, is informative: &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, in the non-normative list given following that statement, RFC 2119 terminology is incorrectly used to describe what appear to be authoring requirements.  In particular:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;... authors should not define the Content-Language list according to its parser effect, but according to it semantics.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This non-normative example text also incorrectly states that &amp;quot;en-US&amp;quot; would not be parsed into a useful value.  However, this value complies with the syntax requirements specified in RFC 2616, BCP 47 and also with the existing parsing requirements in the HTML5 specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that the following requirement is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Conformance checkers will include a warning if this pragma is used. Authors are encouraged to use the lang attribute instead.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale provided does not adequately justify the removal of this warning, and nor does it adequately justify replacing it with a more limited warning to be issued only when the pragma directive is in the absence of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
The proposal then states to amend this requirement as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;the content attribute must have a value consisting of a valid BCP 47 language tag, or a comma separated list of two or more BCP 47 language tags.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, the proposal stated earlier that the syntax for the value was defined by RFC 2616.  This requirement now conflicts with that by stating that the syntax of the content attribute&#039;s value is defined by BCP 47.  This inconsistency negatively affects the quality of the specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that this note is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma is not exactly equivalent to the HTTP Content-Language header, for instance it only supports one language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The removal of this note would be misleading, because the note itself is factually correct as-is with the current specification, and with the details of this proposal, which, as stated above, leave the parsing requirements unchanged.  The proposal fails to include any implementation requirements that actually permit multiple language tags to be used.&lt;br /&gt;
&lt;br /&gt;
It has now been clearly demonstrated that the proposed specification text provided by this change proposal is thoroughly inadequate for its intended purpose.  If the specification were to be amended as required by this change proposal, the inconsistency and lack of clarity would negatively affect the ability to read, understand and implement this specification.  As such, this proposal should also be rejected on the basis that its proposal details are inadequate.  However, if this working group does make the wrong decision to permit multiple language tags, then I ask that the editor be given full editorial discretion to phrase the requirements in a way that more clearly expresses the requirements, rather than being asked to accept the details of this proposal as written.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Claimed Positive and Negative Effects===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More positive: authors can get rid of the warning by adding something — &amp;lt;html lang=&amp;quot;*&amp;quot;&amp;gt; — this is better than a focus on removal of the (over all) harmless Content-Language meta element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, authors can get rid of the warning as required by the current specification by removing the meta element.  No rationale is provided to explain why the act of removing the pragma directive is significantly more difficult than adding the lang attribute to the root element.  Depending on the authoring tool or CMS, both of these actions are likely to be just as easy or just as difficult to perform.  This purported benefit is thus unsubstantiated and invalid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More stable: same syntax as before continue to be permitted.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As documented by the zero edit change proposal, observation of the use of this pragma directive shows that only a very small minority of authors use multiple language values.  However, the claimed benefit of continuing to use this syntax is nullified by the fact that, due to the implementation requirements, multiple language values are not at all useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More permissive: authors, CMS-es and browsers can continue to take advantage of HTTP-EQUIV’s ability to reference what the HTTP header is/was supposed to be, including replicating its fallback effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No rationale is provided to explain why that ability is in any way beneficial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More correct: the difference between lang and Content-Language is pointed out, while the link between http-equiv and HTTP is emphasized.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As has been demonstrated, this is blatantly wrong.  The lang attribute and the Content-Language pragma directive share more in common in terms of functionality, than to the pragma directive and the Content-Language HTTP header field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More useful: a warning that a fallback feature has kicked in, is more useful than a warning which focuses on one of the places where the fallback language could potentially kick in from. Why tell the author to “please use lang instead” if the author has already made sure that the lang attribute is in place?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It seems more useful for authors to be informed about the presence of a redundant and useless feature, than to have them continue to mistakenly believe that the pragma directive is in any way useful.  However, either way, both of these are highly subjective claims about what may or may not be useful to authors, which cannot be objectively evaluated without supporting data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Has positive side effect: Encouragement to place a lang attribute on the starttag of the html element will lead authors to actually type in the html root element, instead of relying on the parser to generate it for them.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relative to the status quo, the zero edit change proposal, or the proposal to make Content-Language non-conforming, the above is not a unique benefit.  Both this and the other change proposals require validators to notify the author about the issue and encourage the use of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More accurate because it does not conceal the problems by introducing an artificial technical and semantic difference between Content-Language from the HTTP header and Content-Language inside the http-equiv meta element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This accuracy claim is undeniably wrong, given that the significant differences between the HTTP header and pragma directive have already been explained.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5005</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5005"/>
		<updated>2010-06-29T08:16:26Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* allow multiple language tags in Content-Language */ Added summary&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Argument Summary===&lt;br /&gt;
&lt;br /&gt;
* The change proposal is based upon the false premise that the Content-Language HTTP header and pragma directive are equivalent.&lt;br /&gt;
* The HTTP header is used to declare the languages of the intended audience, the only defined function of the pragma directive is to be used as a fallback language in the absence of the lang attribute.&lt;br /&gt;
* The use of the pragma directive as part of server configuration is out of scope of HTML.  Specific server side implementation choices need not affect the conformance definition.&lt;br /&gt;
* The pragma directive only fulfils its purpose of providing a fallback language when one language tag is specified.  Multiple language tags are, by definition of the implementation requirements, not useful.&lt;br /&gt;
* There are no reasons given for why it is beneficial to leave the pragma directive in the document, when the lang attribute is present on the root element.&lt;br /&gt;
* Failing to offer a warning about its presence in all cases would continue to mislead the author about its legitimacy.&lt;br /&gt;
* The inconsistency of when warnings are issued would be confusing to authors. It is better to offer a consistent warning about the presence of a redundant feature.&lt;br /&gt;
* The defined effect, per the implementation requirements, of declaring multiple language tags is identical to that of omitting the pragma directive entirely. No reasons are given to explain why declaring multiple language tags is useful or beneficial.&lt;br /&gt;
* The syntax of the Content-Language HTTP header field is not affected by the definition of the distinct Content-Language pragma directive in HTML, with which it only shares the same name, and not the functionality.  It is reasonable for this distinct feature to use a different syntax that is suitable for its purpose.&lt;br /&gt;
* No reason is given explaining why only emitting the warning under specific circumstances, as opposed to the current specification requirement, would serve better to encourage authors to use the lang attribute instead.&lt;br /&gt;
* The proposed replacement specification text contains unjustified changes, inconsistencies, unimplementable requirements and is just downright inappropriate for use in the specification.&lt;br /&gt;
* The claimed positive benefits are unsupported by evidence and, in several cases, blatantly incorrect.&lt;br /&gt;
* In practice, very few authors use multiple language tags in the pragma directive, and doing so is not useful.  Restricting the syntax to one language would not have a significant negative impact.&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configuration====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the language of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Rationale===&lt;br /&gt;
&lt;br /&gt;
The rationale for this change proposal states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;[The current specification] offers no carrot for doing the right thing. while the fallback language effect stops as soon as the author adds lang on the root element, the spec requires conformance checker to continue whining until the http-equiv=&amp;quot;Content-Language&amp;quot; meta element has been removed.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale fails to explain the benefit gained by leaving the pragma directive in the document when a lang attribute has been specified on the root element.  While leaving it in the document under those circumstances is mostly harmless, it is redundant metadata that the author does not need to include in their document.  Failing to offer a warning would continue to mislead the author into thinking that the pragma directive is both acceptable and useful, which it is not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;That it prevents authors from legally using multiple values to replicate the language fallback effect of doing the same thing in a HTTP header — whether they want to replicate the effect of multiple tags or a single tag.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language fallback effect from using multiple language tags within the value is that there is no default language.  This is exactly the same effect as would be achieved by omitting the pragma directive, and so the given reason is blatantly wrong about having no way to replicate the effect of having no specified language.  This rationale also fails to provide a reason for wanting to replicate this effect by copying the same syntax.&lt;br /&gt;
&lt;br /&gt;
i.e.  The effect of including:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Language&amp;quot; content=&amp;quot;en, fr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is &amp;lt;em&amp;gt;identical&amp;lt;/em&amp;gt; to that of omitting this pragma directive entirely, and there is no reason for wanting to include the above either.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;That it underlines the confusion that may exist today, about the nature of lang versus Content-Language, by requiring:&lt;br /&gt;
&lt;br /&gt;
# different syntax rules for features that are expected to be identical (HTTP and http-equiv)&lt;br /&gt;
# similar syntax rules for features that are different (http-equiv and lang)&lt;br /&gt;
# a warning message which asks authors to “use lang instead” – as if they were juxtaposable alternatives.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Type header and the http-equiv pragma directive &amp;lt;em&amp;gt;are&amp;lt;/em&amp;gt; different.  The HTTP header is used for declaring the languages of the intended audience, the pragma directive is used for specifying a default language.&lt;br /&gt;
&lt;br /&gt;
The lang attribute, on the other hand, is an alternative to the pragma directive because the pragma directive only serves to specify the language of the document when a single value is used.  When multiple languages are specified in the pragma directive, there is absolutely no defined effect, and so it serves no valid purpose at all.&lt;br /&gt;
&lt;br /&gt;
Therefore, the pragma directive is much closer in functionality to the lang attribute, than it is to the HTTP header, with which it shares its name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Instead of the above, this change proposal propose:&lt;br /&gt;
&lt;br /&gt;
* the Zero-edit proposal’s warning about using lang instead of Content-Language should be changed into a warning which informs that a fallback language measure has kicked in, and recommend that authors create a language declaration (via lang) rather than relying on the fallback feature. This warning should be shown regardless of whether the fallback comes from http-equiv or from the higher level (HTTP). Justification: Since it is a fallback feature, and with other semantics, there is no guarantee that the author has used it for the language effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the authors perspective, the inconsistency of issuing the warning about the use of the pragma directive only when the lang attribute is absent would be confusing.  The better alternative is to issue a consistent warning (or error) that simply says to remove the pragma directive and use lang instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* to hold the syntax rules of HTTP (which permits multiple language tags) as the conforming ones (rather than those of lang, which forbids multiple languages), will have the effect of underlining that lang and Content-Language have different purposes. For instance, since the fallback algorithm doesn’t kick in whenever multiple languages are used in the pragma or on the server, there would not be any warning in these cases. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax requirements for the HTTP Content-Type header are not affected by the HTML implementation requirements.  Since the lang attribute on the root element and the Content-Language pragma directive with a single language value do have the same effect, which differs significantly from the purpose of the HTTP Content-Language header, and it is misleading to pretend otherwise, the syntax of the former does not need to match the syntax of the latter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* a carrot: what we want from authors is that they rely on lang (and xml:lang) for specifying the language — when the author does that, he/she should get immediate reward in the form of removal of conformance warning.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rationale fails to explain why that same effect of encouraging authors to use the lang attribute, would not be achieved by a more consistent warning that states to use the lang attribute and remove the pragma directive.  There is no benefit gained by leaving the directive in, and merely silencing the validator by inserting a lang attribute does little to discourage the use of the redundant and totally unnecessary pragma directive.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Proposal Details===&lt;br /&gt;
&lt;br /&gt;
The change proposal suggests replacing the terminology for &amp;quot;pragma-set default language&amp;quot; with &amp;quot;pragma-set locale language&amp;quot;.  None of the given rationale explains the need for this change in terminology.&lt;br /&gt;
&lt;br /&gt;
The proposed specification text states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma contains a Content-Language list, whose semantics and syntax is defined in the HTTP spec.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The semantics of the Content-Language header field as defined in RFC 2616 states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The Content-Language entity-header field describes the natural language(s) of the intended audience for the enclosed entity. Note that this might not be equivalent to all the languages used within the entity-body.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This semantic definition does not match the actual purpose of the Content-Language pragma directive, for specifying a &amp;quot;pragma-set locale language&amp;quot;.  Therefore, referring to RFC 2616 for this semantic definition is inappropriate.  The syntax requirements from RFC 2616 are also inappropriate, as it defines the following ABNF, which is not directly compatible with the syntax of the meta element with http-equiv and content attributes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Content-Language  = &amp;quot;Content-Language&amp;quot; &amp;quot;:&amp;quot; 1#language-tag&lt;br /&gt;
language-tag  = primary-tag *( &amp;quot;-&amp;quot; subtag )&lt;br /&gt;
primary-tag   = 1*8ALPHA&lt;br /&gt;
subtag        = 1*8ALPHA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these syntax requirements to be applicable at all, the specification would have to state that the value of the content attribute must match the ABNF production for language-tag.  However, see below regarding the syntax defined in BCP 47.&lt;br /&gt;
&lt;br /&gt;
The proposed text then states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;An HTML5 parser processes this list into a known or unknown pragma-set locale language... The Content-Language list may also be defined in a HTTP header, and will then result in a known or unknown HTTP header-set locale language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The proposed text fails to define what &amp;quot;known or unknown&amp;quot; means in that context.  It is not clear how the implementation determines whether a value is known or unknown.&lt;br /&gt;
&lt;br /&gt;
The parsing requirements for the value of this pragma directive are not specified by the change proposal.  However, the change proposal also does not state that the existing parsing requirements in the specification are to be removed, replaced or modified in any way.  Thus, by adopting the details of this change proposal, the specification would be left in an inconsistent state which says that multiple language values are supported, but where the parsing requirements abort when more than one value is used.&lt;br /&gt;
&lt;br /&gt;
The aforementioned parsing requirements only focus on parsing the value of the pragma directive, and as such, there is no implementation requirement that sets the &amp;quot;HTTP header-set locale language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;When a document is lacking a language declaration in the form of the lang or xml:lang attribute on the root element, the document’s locale language (pragma-set or HTTP-set) is consulted by the user agent and used as fallback value for the primary document language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the value of the &amp;quot;HTTP header-set locale language&amp;quot; comes from the HTTP Content-Language header, this proposed text fails to specify the order of precedence of the values specified in the pragma directive or the HTTP header.&lt;br /&gt;
&lt;br /&gt;
The use of the term &amp;quot;locale language&amp;quot; in this context clashes with the existing use of the term in the specification to refer to the language set by the user in the user agent&#039;s preferences.  This term is used in the table within step 7 of the algorithm to determine the character encoding.&lt;br /&gt;
&lt;br /&gt;
The proposed text then goes on to state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following info about the HTTP semantics and Content-Language usage, is informative: &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, in the non-normative list given following that statement, RFC 2119 terminology is incorrectly used to describe what appear to be authoring requirements.  In particular:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;... authors should not define the Content-Language list according to its parser effect, but according to it semantics.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This non-normative example text also incorrectly states that &amp;quot;en-US&amp;quot; would not be parsed into a useful value.  However, this value complies with the syntax requirements specified in RFC 2616, BCP 47 and also with the existing parsing requirements in the HTML5 specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that the following requirement is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Conformance checkers will include a warning if this pragma is used. Authors are encouraged to use the lang attribute instead.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale provided does not adequately justify the removal of this warning, and nor does it adequately justify replacing it with a more limited warning to be issued only when the pragma directive is in the absence of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
The proposal then states to amend this requirement as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;the content attribute must have a value consisting of a valid BCP 47 language tag, or a comma separated list of two or more BCP 47 language tags.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, the proposal stated earlier that the syntax for the value was defined by RFC 2616.  This requirement now conflicts with that by stating that the syntax of the content attribute&#039;s value is defined by BCP 47.  This inconsistency negatively affects the quality of the specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that this note is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma is not exactly equivalent to the HTTP Content-Language header, for instance it only supports one language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The removal of this note would be misleading, because the note itself is factually correct as-is with the current specification, and with the details of this proposal, which, as stated above, leave the parsing requirements unchanged.  The proposal fails to include any implementation requirements that actually permit multiple language tags to be used.&lt;br /&gt;
&lt;br /&gt;
It has now been clearly demonstrated that the proposed specification text provided by this change proposal is thoroughly inadequate for its intended purpose.  If the specification were to be amended as required by this change proposal, the inconsistency and lack of clarity would negatively affect the ability to read, understand and implement this specification.  As such, this proposal should also be rejected on the basis that its proposal details are inadequate.  However, if this working group does make the wrong decision to permit multiple language tags, then I ask that the editor be given full editorial discretion to phrase the requirements in a way that more clearly expresses the requirements, rather than being asked to accept the details of this proposal as written.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Claimed Positive and Negative Effects===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More positive: authors can get rid of the warning by adding something — &amp;lt;html lang=&amp;quot;*&amp;quot;&amp;gt; — this is better than a focus on removal of the (over all) harmless Content-Language meta element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, authors can get rid of the warning as required by the current specification by removing the meta element.  No rationale is provided to explain why the act of removing the pragma directive is significantly more difficult than adding the lang attribute to the root element.  Depending on the authoring tool or CMS, both of these actions are likely to be just as easy or just as difficult to perform.  This purported benefit is thus unsubstantiated and invalid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More stable: same syntax as before continue to be permitted.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As documented by the zero edit change proposal, observation of the use of this pragma directive shows that only a very small minority of authors use multiple language values.  However, the claimed benefit of continuing to use this syntax is nullified by the fact that, due to the implementation requirements, multiple language values are not at all useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More permissive: authors, CMS-es and browsers can continue to take advantage of HTTP-EQUIV’s ability to reference what the HTTP header is/was supposed to be, including replicating its fallback effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No rationale is provided to explain why that ability is in any way beneficial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More correct: the difference between lang and Content-Language is pointed out, while the link between http-equiv and HTTP is emphasized.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As has been demonstrated, this is blatantly wrong.  The lang attribute and the Content-Language pragma directive share more in common in terms of functionality, than to the pragma directive and the Content-Language HTTP header field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More useful: a warning that a fallback feature has kicked in, is more useful than a warning which focuses on one of the places where the fallback language could potentially kick in from. Why tell the author to “please use lang instead” if the author has already made sure that the lang attribute is in place?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It seems more useful for authors to be informed about the presence of a redundant and useless feature, than to have them continue to mistakenly believe that the pragma directive is in any way useful.  However, either way, both of these are highly subjective claims about what may or may not be useful to authors, which cannot be objectively evaluated without supporting data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Has positive side effect: Encouragement to place a lang attribute on the starttag of the html element will lead authors to actually type in the html root element, instead of relying on the parser to generate it for them.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relative to the status quo, the zero edit change proposal, or the proposal to make Content-Language non-conforming, the above is not a unique benefit.  Both this and the other change proposals require validators to notify the author about the issue and encourage the use of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More accurate because it does not conceal the problems by introducing an artificial technical and semantic difference between Content-Language from the HTTP header and Content-Language inside the http-equiv meta element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This accuracy claim is undeniably wrong, given that the significant differences between the HTTP header and pragma directive have already been explained.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5004</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5004"/>
		<updated>2010-06-29T07:22:43Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* allow multiple language tags in Content-Language */ Added arguments against the positive and negative effects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configurataion====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the langauge of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Rationale===&lt;br /&gt;
&lt;br /&gt;
The rationale for this change proposal states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;[The current specification] offers no carrot for doing the right thing. while the fallback language effect stops as soon as the author adds lang on the root element, the spec requires conformance checker to continue whining until the http-equiv=&amp;quot;Content-Language&amp;quot; meta element has been removed.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale fails to explain the benefit gained by leaving the pragma directive in the document when a lang attribute has been specified on the root element.  While leaving it in the document under those circumstances is mostly harmless, it is redundant metadata that the author does not need to include in their document.  Failing to offer a warning would continue to mislead the author into thinking that the pragma directive is both acceptable and useful, which it is not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;That it prevents authors from legally using multiple values to replicate the language fallback effect of doing the same thing in a HTTP header — whether they want to replicate the effect of multiple tags or a single tag.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language fallback effect from using multiple language tags within the value is that there is no default language.  This is exactly the same effect as would be achieved by omitting the pragma directive, and so the given reason is blatantly wrong about having no way to replicate the effect of having no specified language.  This rationale also fails to provide a reason for wanting to replicate this effect by copying the same syntax.&lt;br /&gt;
&lt;br /&gt;
i.e.  The effect of including:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Language&amp;quot; content=&amp;quot;en, fr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is &amp;lt;em&amp;gt;identical&amp;lt;/em&amp;gt; to that of omitting this pragma directive entirely, and there is no reason for wanting to include the above either.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;That it underlines the confusion that may exist today, about the nature of lang versus Content-Language, by requiring:&lt;br /&gt;
&lt;br /&gt;
# different syntax rules for features that are expected to be identical (HTTP and http-equiv)&lt;br /&gt;
# similar syntax rules for features that are different (http-equiv and lang)&lt;br /&gt;
# a warning message which asks authors to “use lang instead” – as if they were juxtaposable alternatives.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Type header and the http-equiv pragma directive &amp;lt;em&amp;gt;are&amp;lt;/em&amp;gt; different.  The HTTP header is used for declaring the languages of the intended audience, the pragma directive is used for specifying a default language.&lt;br /&gt;
&lt;br /&gt;
The lang attribute, on the other hand, is an alternative to the pragma directive because the pragma directive only serves to specify the language of the document when a single value is used.  When multiple languages are specified in the pragma directive, there is absolutely no defined effect, and so it serves no valid purpose at all.&lt;br /&gt;
&lt;br /&gt;
Therefore, the pragma directive is much closer in functionality to the lang attribute, than it is to the HTTP header, with which it shares its name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Instead of the above, this change proposal propose:&lt;br /&gt;
&lt;br /&gt;
* the Zero-edit proposal’s warning about using lang instead of Content-Language should be changed into a warning which informs that a fallback language measure has kicked in, and recommend that authors create a language declaration (via lang) rather than relying on the fallback feature. This warning should be shown regardless of whether the fallback comes from http-equiv or from the higher level (HTTP). Justification: Since it is a fallback feature, and with other semantics, there is no guarantee that the author has used it for the language effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the authors perspective, the inconsistency of issuing the warning about the use of the pragma directive only when the lang attribute is absent would be confusing.  The better alternative is to issue a consistent warning (or error) that simply says to remove the pragma directive and use lang instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* to hold the syntax rules of HTTP (which permits multiple language tags) as the conforming ones (rather than those of lang, which forbids multiple languages), will have the effect of underlining that lang and Content-Language have different purposes. For instance, since the fallback algorithm doesn’t kick in whenever multiple languages are used in the pragma or on the server, there would not be any warning in these cases. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax requirements for the HTTP Content-Type header are not affected by the HTML implementation requirements.  Since the lang attribute on the root element and the Content-Language pragma directive with a single language value do have the same effect, which differs significantly from the purpose of the HTTP Content-Language header, and it is misleading to pretend otherwise, the syntax of the former does not need to match the syntax of the latter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* a carrot: what we want from authors is that they rely on lang (and xml:lang) for specifying the language — when the author does that, he/she should get immediate reward in the form of removal of conformance warning.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rationale fails to explain why that same effect of encouraging authors to use the lang attribute, would not be achieved by a more consistent warning that states to use the lang attribute and remove the pragma directive.  There is no benefit gained by leaving the directive in, and merely silencing the validator by inserting a lang attribute does little to discourage the use of the redundant and totally unnecessary pragma directive.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Proposal Details===&lt;br /&gt;
&lt;br /&gt;
The change proposal suggests replacing the terminology for &amp;quot;pragma-set default language&amp;quot; with &amp;quot;pragma-set locale language&amp;quot;.  None of the given rationale explains the need for this change in terminology.&lt;br /&gt;
&lt;br /&gt;
The proposed specification text states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma contains a Content-Language list, whose semantics and syntax is defined in the HTTP spec.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The semantics of the Content-Language header field as defined in RFC 2616 states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The Content-Language entity-header field describes the natural language(s) of the intended audience for the enclosed entity. Note that this might not be equivalent to all the languages used within the entity-body.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This semantic definition does not match the actual purpose of the Content-Language pragma directive, for specifying a &amp;quot;pragma-set locale language&amp;quot;.  Therefore, referring to RFC 2616 for this semantic definition is inappropriate.  The syntax requirements from RFC 2616 are also inappropriate, as it defines the following ABNF, which is not directly compatible with the syntax of the meta element with http-equiv and content attributes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Content-Language  = &amp;quot;Content-Language&amp;quot; &amp;quot;:&amp;quot; 1#language-tag&lt;br /&gt;
language-tag  = primary-tag *( &amp;quot;-&amp;quot; subtag )&lt;br /&gt;
primary-tag   = 1*8ALPHA&lt;br /&gt;
subtag        = 1*8ALPHA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these syntax requirements to be applicable at all, the specification would have to state that the value of the content attribute must match the ABNF production for language-tag.  However, see below regarding the syntax defined in BCP 47.&lt;br /&gt;
&lt;br /&gt;
The proposed text then states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;An HTML5 parser processes this list into a known or unknown pragma-set locale language... The Content-Language list may also be defined in a HTTP header, and will then result in a known or unknown HTTP header-set locale language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The proposed text fails to define what &amp;quot;known or unknown&amp;quot; means in that context.  It is not clear how the implementation determines whether a value is known or unknown.&lt;br /&gt;
&lt;br /&gt;
The parsing requirements for the value of this pragma directive are not specified by the change proposal.  However, the change proposal also does not state that the existing parsing requirements in the specification are to be removed, replaced or modified in any way.  Thus, by adopting the details of this change proposal, the specification would be left in an inconsistent state which says that multiple language values are supported, but where the parsing requirements abort when more than one value is used.&lt;br /&gt;
&lt;br /&gt;
The aforementioned parsing requirements only focus on parsing the value of the pragma directive, and as such, there is no implementation requirement that sets the &amp;quot;HTTP header-set locale language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;When a document is lacking a language declaration in the form of the lang or xml:lang attribute on the root element, the document’s locale language (pragma-set or HTTP-set) is consulted by the user agent and used as fallback value for the primary document language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the value of the &amp;quot;HTTP header-set locale language&amp;quot; comes from the HTTP Content-Language header, this proposed text fails to specify the order of precedence of the values specified in the pragma directive or the HTTP header.&lt;br /&gt;
&lt;br /&gt;
The use of the term &amp;quot;locale language&amp;quot; in this context clashes with the existing use of the term in the specification to refer to the language set by the user in the user agent&#039;s preferences.  This term is used in the table within step 7 of the algorithm to determine the character encoding.&lt;br /&gt;
&lt;br /&gt;
The proposed text then goes on to state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following info about the HTTP semantics and Content-Language usage, is informative: &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, in the non-normative list given following that statement, RFC 2119 terminology is incorrectly used to describe what appear to be authoring requirements.  In particular:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;... authors should not define the Content-Language list according to its parser effect, but according to it semantics.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This non-normative example text also incorrectly states that &amp;quot;en-US&amp;quot; would not be parsed into a useful value.  However, this value complies with the syntax requirements specified in RFC 2616, BCP 47 and also with the existing parsing requirements in the HTML5 specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that the following reqiurement is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Conformance checkers will include a warning if this pragma is used. Authors are encouraged to use the lang attribute instead.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale provided does not adequately justify the removal of this warning, and nor does it adequately justify replacing it with a more limited warning to be issued only when the pragma directive is in the absence of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
The proposal then states to amend this requirement as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;the content attribute must have a value consisting of a valid BCP 47 language tag, or a comma separated list of two or more BCP 47 language tags.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, the proposal stated earlier that the syntax for the value was defined by RFC 2616.  This requirement now conflicts with that by stating that the syntax of the content attribute&#039;s value is defined by BCP 47.  This inconsistency negatively affects the quality of the specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that this note is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma is not exactly equivalent to the HTTP Content-Language header, for instance it only supports one language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The removal of this note would be misleading, because the note itself is factually correct as-is with the current specification, and with the details of this proposal, which, as stated above, leave the parsing requirements unchanged.  The proposal fails to include any implementation requirements that actually permit multiple language tags to be used.&lt;br /&gt;
&lt;br /&gt;
It has now been clearly demonstrated that the proposed specification text provided by this change proposal is thoroughly inadequate for its intended purpose.  If the specification were to be amended as required by this change proposal, the inconsistency and lack of clarity would negatively affect the ability to read, understand and implement this specification.  As such, this proposal should also be rejected on the basis that its proposal details are inadequate.  However, if this working group does make the wrong decision to permit multiple language tags, then I ask that the editor be given full editorial discretion to phrase the requirements in a way that more clearly expresses the requirements, rather than being asked to accept the details of this proposal as written.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Claimed Positive and Negative Effects===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More positive: authors can get rid of the warning by adding something — &amp;lt;html lang=&amp;quot;*&amp;quot;&amp;gt; — this is better than a focus on removal of the (over all) harmless Content-Language meta element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Likewise, authors can get rid of the warning as required by the current specification by removing the meta element.  No rationale is provided to explain why the act of removing the pragma directive is significantly more difficult than adding the lang attribute to the root element.  Depending on the authoring tool or CMS, both of these actions are likely to be just as easy or just as difficult to perform.  This purported benefit is thus unsubstantiated and invalid.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More stable: same syntax as before continue to be permitted.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As documented by the zero edit change proposal, observation of the use of this pragma directive shows that only a very small minority of authors use multiple language values.  However, the claimed benefit of continuing to use this syntax is nullified by the fact that, due to the implementation requirements, multiple language values are not at all useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More permissive: authors, CMS-es and browsers can continue to take advantage of HTTP-EQUIV’s ability to reference what the HTTP header is/was supposed to be, including replicating its fallback effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No rationale is provided to explain why that ability is in any way beneficial.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More correct: the difference between lang and Content-Language is pointed out, while the link between http-equiv and HTTP is emphasized.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As has been demonstrated, this is blatantly wrong.  The lang attribute and the Content-Language pragma directive share more in common in terms of functionality, than to the pragma directive and the Content-Language HTTP header field.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More useful: a warning that a fallback feature has kicked in, is more useful than a warning which focuses on one of the places where the fallback language could potentially kick in from. Why tell the author to “please use lang instead” if the author has already made sure that the lang attribute is in place?&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It seems more useful for authors to be informed about the presence of a redundant and useless feature, than to have them continue to mistakenly believe that the pragma directive is in any way useful.  However, either way, both of these are highly subjective claims about what may or may not be useful to authors, which cannot be objectively evaluated without supporting data.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Has positive side effect: Encouragement to place a lang attribute on the starttag of the html element will lead authors to actually type in the html root element, instead of relying on the parser to generate it for them.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Relative to the status quo, the zero edit change proposal, or the proposal to make Content-Language non-conforming, the above is not a unique benefit.  Both this and the other change proposals require validators to notify the author about the issue and encourage the use of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;More accurate because it does not conceal the problems by introducing an artificial technical and semantic difference between Content-Language from the HTTP header and Content-Language inside the http-equiv meta element.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This accuracy claim is undeniably wrong, given that the significant differences between the HTTP header and pragma directive have already been explained.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5000</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=5000"/>
		<updated>2010-06-28T14:26:40Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Arguments Against the Proposal Details */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configurataion====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the langauge of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Rationale===&lt;br /&gt;
&lt;br /&gt;
The rationale for this change proposal states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;[The current specification] offers no carrot for doing the right thing. while the fallback language effect stops as soon as the author adds lang on the root element, the spec requires conformance checker to continue whining until the http-equiv=&amp;quot;Content-Language&amp;quot; meta element has been removed.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale fails to explain the benefit gained by leaving the pragma directive in the document when a lang attribute has been specified on the root element.  While leaving it in the document under those circumstances is mostly harmless, it is redundant metadata that the author does not need to include in their document.  Failing to offer a warning would continue to mislead the author into thinking that the pragma directive is both acceptable and useful, which it is not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;That it prevents authors from legally using multiple values to replicate the language fallback effect of doing the same thing in a HTTP header — whether they want to replicate the effect of multiple tags or a single tag.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language fallback effect from using multiple language tags within the value is that there is no default language.  This is exactly the same effect as would be achieved by omitting the pragma directive, and so the given reason is blatantly wrong about having no way to replicate the effect of having no specified language.  This rationale also fails to provide a reason for wanting to replicate this effect by copying the same syntax.&lt;br /&gt;
&lt;br /&gt;
i.e.  The effect of including:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Language&amp;quot; content=&amp;quot;en, fr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is &amp;lt;em&amp;gt;identical&amp;lt;/em&amp;gt; to that of omitting this pragma directive entirely, and there is no reason for wanting to include the above either.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;That it underlines the confusion that may exist today, about the nature of lang versus Content-Language, by requiring:&lt;br /&gt;
&lt;br /&gt;
# different syntax rules for features that are expected to be identical (HTTP and http-equiv)&lt;br /&gt;
# similar syntax rules for features that are different (http-equiv and lang)&lt;br /&gt;
# a warning message which asks authors to “use lang instead” – as if they were juxtaposable alternatives.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Type header and the http-equiv pragma directive &amp;lt;em&amp;gt;are&amp;lt;/em&amp;gt; different.  The HTTP header is used for declaring the languages of the intended audience, the pragma directive is used for specifying a default language.&lt;br /&gt;
&lt;br /&gt;
The lang attribute, on the other hand, is an alternative to the pragma directive because the pragma directive only serves to specify the language of the document when a single value is used.  When multiple languages are specified in the pragma directive, there is absolutely no defined effect, and so it serves no valid purpose at all.&lt;br /&gt;
&lt;br /&gt;
Therefore, the pragma directive is much closer in functionality to the lang attribute, than it is to the HTTP header, with which it shares its name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Instead of the above, this change proposal propose:&lt;br /&gt;
&lt;br /&gt;
* the Zero-edit proposal’s warning about using lang instead of Content-Language should be changed into a warning which informs that a fallback language measure has kicked in, and recommend that authors create a language declaration (via lang) rather than relying on the fallback feature. This warning should be shown regardless of whether the fallback comes from http-equiv or from the higher level (HTTP). Justification: Since it is a fallback feature, and with other semantics, there is no guarantee that the author has used it for the language effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the authors perspective, the inconsistency of issuing the warning about the use of the pragma directive only when the lang attribute is absent would be confusing.  The better alternative is to issue a consistent warning (or error) that simply says to remove the pragma directive and use lang instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* to hold the syntax rules of HTTP (which permits multiple language tags) as the conforming ones (rather than those of lang, which forbids multiple languages), will have the effect of underlining that lang and Content-Language have different purposes. For instance, since the fallback algorithm doesn’t kick in whenever multiple languages are used in the pragma or on the server, there would not be any warning in these cases. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax requirements for the HTTP Content-Type header are not affected by the HTML implementation requirements.  Since the lang attribute on the root element and the Content-Language pragma directive with a single language value do have the same effect, which differs significantly from the purpose of the HTTP Content-Language header, and it is misleading to pretend otherwise, the syntax of the former does not need to match the syntax of the latter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* a carrot: what we want from authors is that they rely on lang (and xml:lang) for specifying the language — when the author does that, he/she should get immediate reward in the form of removal of conformance warning.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rationale fails to explain why that same effect of encouraging authors to use the lang attribute, would not be achieved by a more consistent warning that states to use the lang attribute and remove the pragma directive.  There is no benefit gained by leaving the directive in, and merely silencing the validator by inserting a lang attribute does little to discourage the use of the redundant and totally unnecessary pragma directive.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Proposal Details===&lt;br /&gt;
&lt;br /&gt;
The change proposal suggests replacing the terminology for &amp;quot;pragma-set default language&amp;quot; with &amp;quot;pragma-set locale language&amp;quot;.  None of the given rationale explains the need for this change in terminology.&lt;br /&gt;
&lt;br /&gt;
The proposed specification text states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma contains a Content-Language list, whose semantics and syntax is defined in the HTTP spec.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The semantics of the Content-Language header field as defined in RFC 2616 states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The Content-Language entity-header field describes the natural language(s) of the intended audience for the enclosed entity. Note that this might not be equivalent to all the languages used within the entity-body.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This semantic definition does not match the actual purpose of the Content-Language pragma directive, for specifying a &amp;quot;pragma-set locale language&amp;quot;.  Therefore, referring to RFC 2616 for this semantic definition is inappropriate.  The syntax requirements from RFC 2616 are also inappropriate, as it defines the following ABNF, which is not directly compatible with the syntax of the meta element with http-equiv and content attributes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Content-Language  = &amp;quot;Content-Language&amp;quot; &amp;quot;:&amp;quot; 1#language-tag&lt;br /&gt;
language-tag  = primary-tag *( &amp;quot;-&amp;quot; subtag )&lt;br /&gt;
primary-tag   = 1*8ALPHA&lt;br /&gt;
subtag        = 1*8ALPHA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these syntax requirements to be applicable at all, the specification would have to state that the value of the content attribute must match the ABNF production for language-tag.  However, see below regarding the syntax defined in BCP 47.&lt;br /&gt;
&lt;br /&gt;
The proposed text then states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;An HTML5 parser processes this list into a known or unknown pragma-set locale language... The Content-Language list may also be defined in a HTTP header, and will then result in a known or unknown HTTP header-set locale language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The proposed text fails to define what &amp;quot;known or unknown&amp;quot; means in that context.  It is not clear how the implementation determines whether a value is known or unknown.&lt;br /&gt;
&lt;br /&gt;
The parsing requirements for the value of this pragma directive are not specified by the change proposal.  However, the change proposal also does not state that the existing parsing requirements in the specification are to be removed, replaced or modified in any way.  Thus, by adopting the details of this change proposal, the specification would be left in an inconsistent state which says that multiple language values are supported, but where the parsing requirements abort when more than one value is used.&lt;br /&gt;
&lt;br /&gt;
The aforementioned parsing requirements only focus on parsing the value of the pragma directive, and as such, there is no implementation requirement that sets the &amp;quot;HTTP header-set locale language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;When a document is lacking a language declaration in the form of the lang or xml:lang attribute on the root element, the document’s locale language (pragma-set or HTTP-set) is consulted by the user agent and used as fallback value for the primary document language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the value of the &amp;quot;HTTP header-set locale language&amp;quot; comes from the HTTP Content-Language header, this proposed text fails to specify the order of precedence of the values specified in the pragma directive or the HTTP header.&lt;br /&gt;
&lt;br /&gt;
The use of the term &amp;quot;locale language&amp;quot; in this context clashes with the existing use of the term in the specification to refer to the language set by the user in the user agent&#039;s preferences.  This term is used in the table within step 7 of the algorithm to determine the character encoding.&lt;br /&gt;
&lt;br /&gt;
The proposed text then goes on to state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following info about the HTTP semantics and Content-Language usage, is informative: &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, in the non-normative list given following that statement, RFC 2119 terminology is incorrectly used to describe what appear to be authoring requirements.  In particular:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;... authors should not define the Content-Language list according to its parser effect, but according to it semantics.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This non-normative example text also incorrectly states that &amp;quot;en-US&amp;quot; would not be parsed into a useful value.  However, this value complies with the syntax requirements specified in RFC 2616, BCP 47 and also with the existing parsing requirements in the HTML5 specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that the following reqiurement is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Conformance checkers will include a warning if this pragma is used. Authors are encouraged to use the lang attribute instead.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale provided does not adequately justify the removal of this warning, and nor does it adequately justify replacing it with a more limited warning to be issued only when the pragma directive is in the absence of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
The proposal then states to amend this requirement as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;the content attribute must have a value consisting of a valid BCP 47 language tag, or a comma separated list of two or more BCP 47 language tags.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, the proposal stated earlier that the syntax for the value was defined by RFC 2616.  This requirement now conflicts with that by stating that the syntax of the content attribute&#039;s value is defined by BCP 47.  This inconsistency negatively affects the quality of the specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that this note is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma is not exactly equivalent to the HTTP Content-Language header, for instance it only supports one language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The removal of this note would be misleading, because the note itself is factually correct as-is with the current specification, and with the details of this proposal, which, as stated above, leave the parsing requirements unchanged.  The proposal fails to include any implementation requirements that actually permit multiple language tags to be used.&lt;br /&gt;
&lt;br /&gt;
It has now been clearly demonstrated that the proposed specification text provided by this change proposal is thoroughly inadequate for its intended purpose.  If the specification were to be amended as required by this change proposal, the inconsistency and lack of clarity would negatively affect the ability to read, understand and implement this specification.  As such, this proposal should also be rejected on the basis that its proposal details are inadequate.  However, if this working group does make the wrong decision to permit multiple language tags, then I ask that the editor be given full editorial discretion to phrase the requirements in a way that more clearly expresses the requirements, rather than being asked to accept the details of this proposal as written.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=4999</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=4999"/>
		<updated>2010-06-28T14:24:43Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* allow multiple language tags in Content-Language */ Added arguments against the proposal details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configurataion====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the langauge of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Rationale===&lt;br /&gt;
&lt;br /&gt;
The rationale for this change proposal states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;[The current specification] offers no carrot for doing the right thing. while the fallback language effect stops as soon as the author adds lang on the root element, the spec requires conformance checker to continue whining until the http-equiv=&amp;quot;Content-Language&amp;quot; meta element has been removed.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale fails to explain the benefit gained by leaving the pragma directive in the document when a lang attribute has been specified on the root element.  While leaving it in the document under those circumstances is mostly harmless, it is redundant metadata that the author does not need to include in their document.  Failing to offer a warning would continue to mislead the author into thinking that the pragma directive is both acceptable and useful, which it is not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;That it prevents authors from legally using multiple values to replicate the language fallback effect of doing the same thing in a HTTP header — whether they want to replicate the effect of multiple tags or a single tag.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language fallback effect from using multiple language tags within the value is that there is no default language.  This is exactly the same effect as would be achieved by omitting the pragma directive, and so the given reason is blatantly wrong about having no way to replicate the effect of having no specified language.  This rationale also fails to provide a reason for wanting to replicate this effect by copying the same syntax.&lt;br /&gt;
&lt;br /&gt;
i.e.  The effect of including:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Language&amp;quot; content=&amp;quot;en, fr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is &amp;lt;em&amp;gt;identical&amp;lt;/em&amp;gt; to that of omitting this pragma directive entirely, and there is no reason for wanting to include the above either.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;That it underlines the confusion that may exist today, about the nature of lang versus Content-Language, by requiring:&lt;br /&gt;
&lt;br /&gt;
# different syntax rules for features that are expected to be identical (HTTP and http-equiv)&lt;br /&gt;
# similar syntax rules for features that are different (http-equiv and lang)&lt;br /&gt;
# a warning message which asks authors to “use lang instead” – as if they were juxtaposable alternatives.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Type header and the http-equiv pragma directive &amp;lt;em&amp;gt;are&amp;lt;/em&amp;gt; different.  The HTTP header is used for declaring the languages of the intended audience, the pragma directive is used for specifying a default language.&lt;br /&gt;
&lt;br /&gt;
The lang attribute, on the other hand, is an alternative to the pragma directive because the pragma directive only serves to specify the language of the document when a single value is used.  When multiple languages are specified in the pragma directive, there is absolutely no defined effect, and so it serves no valid purpose at all.&lt;br /&gt;
&lt;br /&gt;
Therefore, the pragma directive is much closer in functionality to the lang attribute, than it is to the HTTP header, with which it shares its name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Instead of the above, this change proposal propose:&lt;br /&gt;
&lt;br /&gt;
* the Zero-edit proposal’s warning about using lang instead of Content-Language should be changed into a warning which informs that a fallback language measure has kicked in, and recommend that authors create a language declaration (via lang) rather than relying on the fallback feature. This warning should be shown regardless of whether the fallback comes from http-equiv or from the higher level (HTTP). Justification: Since it is a fallback feature, and with other semantics, there is no guarantee that the author has used it for the language effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the authors perspective, the inconsistency of issuing the warning about the use of the pragma directive only when the lang attribute is absent would be confusing.  The better alternative is to issue a consistent warning (or error) that simply says to remove the pragma directive and use lang instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* to hold the syntax rules of HTTP (which permits multiple language tags) as the conforming ones (rather than those of lang, which forbids multiple languages), will have the effect of underlining that lang and Content-Language have different purposes. For instance, since the fallback algorithm doesn’t kick in whenever multiple languages are used in the pragma or on the server, there would not be any warning in these cases. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax requirements for the HTTP Content-Type header are not affected by the HTML implementation requirements.  Since the lang attribute on the root element and the Content-Language pragma directive with a single language value do have the same effect, which differs significantly from the purpose of the HTTP Content-Language header, and it is misleading to pretend otherwise, the syntax of the former does not need to match the syntax of the latter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* a carrot: what we want from authors is that they rely on lang (and xml:lang) for specifying the language — when the author does that, he/she should get immediate reward in the form of removal of conformance warning.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rationale fails to explain why that same effect of encouraging authors to use the lang attribute, would not be achieved by a more consistent warning that states to use the lang attribute and remove the pragma directive.  There is no benefit gained by leaving the directive in, and merely silencing the validator by inserting a lang attribute does little to discourage the use of the redundant and totally unnecessary pragma directive.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Proposal Details===&lt;br /&gt;
&lt;br /&gt;
The change proposal suggests replacing the terminology for &amp;quot;pragma-set default language&amp;quot; with &amp;quot;pragma-set locale language&amp;quot;.  None of the given rationale explains the need for this change in terminology.&lt;br /&gt;
&lt;br /&gt;
The proposed specification text states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma contains a Content-Language list, whose semantics and syntax is defined in the HTTP spec.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The semantics of the Content-Language header field as defined in RFC 2616 states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The Content-Language entity-header field describes the natural language(s) of the intended audience for the enclosed entity. Note that this might not be equivalent to all the languages used within the entity-body.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This semantic definition does not match the actual purpose of the Content-Language pragma directive, for specifying a &amp;quot;pragma-set locale language&amp;quot;.  Therefore, referring to RFC 2616 for this semantic definition is inappropriate.  The syntax requirements from RFC 2616 are also inappropriate, as it defines the following ABNF, which is not directly compatible with the syntax of the meta element with http-equiv and content attributes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Content-Language  = &amp;quot;Content-Language&amp;quot; &amp;quot;:&amp;quot; 1#language-tag&lt;br /&gt;
language-tag  = primary-tag *( &amp;quot;-&amp;quot; subtag )&lt;br /&gt;
primary-tag   = 1*8ALPHA&lt;br /&gt;
subtag        = 1*8ALPHA&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For these syntax requirements to be applicable at all, the specification would have to state that the value of the content attribute must match the ABNF production for language-tag.  However, see below regarding the syntax defined in BCP 47.&lt;br /&gt;
&lt;br /&gt;
The proposed text then states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;An HTML5 parser processes this list into a known or unknown pragma-set locale language... The Content-Language list may also be defined in a HTTP header, and will then result in a known or unknown HTTP header-set locale language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The proposed text fails to define what &amp;quot;known or unknown&amp;quot; means in that context.  It is not clear how the implementation determines whether a value is known or unknown.&lt;br /&gt;
&lt;br /&gt;
The parsing requirements for the value of this pragma directive are not specified by the change proposal.  However, the change proposal also does not state that the existing parsing requirements in the specification are to be removed, replaced or modified in any way.  Thus, by adopting the details of this change proposal, the specification would be left in an inconsistent state which says that multiple language values are supported, but where the parsing requirements abort when more than one value is used.&lt;br /&gt;
&lt;br /&gt;
The aforementioned parsing requirements only focus on parsing the value of the pragma directive, and as such, there is no implementation requirement that sets the &amp;quot;HTTP header-set locale language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;When a document is lacking a language declaration in the form of the lang or xml:lang attribute on the root element, the document’s locale language (pragma-set or HTTP-set) is consulted by the user agent and used as fallback value for the primary document language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assuming the value of the &amp;quot;HTTP header-set locale language&amp;quot; comes from the HTTP Content-Language header, this proposed text fails to specify the order of precedence of the values specified in the pragma directive or the HTTP header.&lt;br /&gt;
&lt;br /&gt;
The use of the term &amp;quot;locale language&amp;quot; in this context clashes with the existing use of the term in the specification to refer to the language set by the user in the user agent&#039;s preferences.  This term is used in the table within step 7 of the algorithm to determine the character encoding.&lt;br /&gt;
&lt;br /&gt;
The proposed text then goes on to state:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;The following info about the HTTP semantics and Content-Language usage, is informative: &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, in the non-normative list given following that statement, RFC 2119 terminology is incorrectly used to describe what appear to be authoring requirements.  In particular:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;... authors should not define the Content-Language list according to its parser effect, but according to it semantics.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This non-normative example text also incorrectly states that &amp;quot;en-US&amp;quot; would not be parsed into a useful value.  However, this value complies with the syntax requirements specified in RFC 2616, BCP 47 and also with the existing parsing requirements in the HTML5 specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that the following reqiurement is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Conformance checkers will include a warning if this pragma is used. Authors are encouraged to use the lang attribute instead.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale provided does not adequately justify the removal of this warning, and nor does it adequately justify replacing it with a more limited warning to be issued only when the pragma directive is in the absence of the lang attribute.&lt;br /&gt;
&lt;br /&gt;
The proposal then states to amend this requirement as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;the content attribute must have a value consisting of a valid BCP 47 language tag, or a comma separated list of two or more BCP 47 language tags.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, the proposal stated earlier that the syntax for the value was defined by RFC 2616.  This requirement now conflicts with that by stating that the syntax of the content attribute&#039;s value is defined by BCP 47.  This inconsistency negatively affects the quality of the specification.&lt;br /&gt;
&lt;br /&gt;
The proposal states that this note is to be removed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;This pragma is not exactly equivalent to the HTTP Content-Language header, for instance it only supports one language.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The removal of this note would be misleading, because the note itself is factually correct as-is with the current specification, and with the details of this proposal, which, as stated above, leave the parsing requirements unchanged.  The proposal fails to include any implementation requirements that actually permit multiple language tags to be used.&lt;br /&gt;
&lt;br /&gt;
It has now been clearly demonstrates that the proposed specification text provided by this change proposal is thoroughly inadequate for its intended purpose.  If the specification were to be amended as required by this change proposal, the inconsistency and lack of clarity would negatively affect the ability to read, understand and implement this specification.  As such, this proposal should also be rejected on the basis that its proposal details are inadequate.  However, if this working group does make the wrong decision to permit multiple language tags, then I ask that the editor be given full editorial discretion to phrase the requirements in a way that more clearly expresses the requirements, rather than being asked to accept the details of this proposal as written.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=4998</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=4998"/>
		<updated>2010-06-28T12:42:50Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* allow multiple language tags in Content-Language */ Added arguments against the change proposal&amp;#039;s rationale&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configurataion====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the langauge of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;br /&gt;
&lt;br /&gt;
===Arguments Against the Rationale===&lt;br /&gt;
&lt;br /&gt;
The rationale for this change proposal states:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;[The current specification] offers no carrot for doing the right thing. while the fallback language effect stops as soon as the author adds lang on the root element, the spec requires conformance checker to continue whining until the http-equiv=&amp;quot;Content-Language&amp;quot; meta element has been removed.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rationale fails to explain the benefit gained by leaving the pragma directive in the document when a lang attribute has been specified on the root element.  While leaving it in the document under those circumstances is mostly harmless, it is redundant metadata that the author does not need to include in their document.  Failing to offer a warning would continue to mislead the author into thinking that the pragma directive is both acceptable and useful, which it is not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;quot;That it prevents authors from legally using multiple values to replicate the language fallback effect of doing the same thing in a HTTP header — whether they want to replicate the effect of multiple tags or a single tag.&amp;quot;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The language fallback effect from using multiple language tags within the value is that there is no default language.  This is exactly the same effect as would be achieved by omitting the pragma directive, and so the given reason is blatantly wrong about having no way to replicate the effect of having no specified language.  This rationale also fails to provide a reason for wanting to replicate this effect by copying the same syntax.&lt;br /&gt;
&lt;br /&gt;
i.e.  The effect of including:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;meta http-equiv=&amp;quot;Content-Language&amp;quot; content=&amp;quot;en, fr&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
is &amp;lt;em&amp;gt;identical&amp;lt;/em&amp;gt; to that of omitting this pragma directive entirely, and there is no reason for wanting to include the above either.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;That it underlines the confusion that may exist today, about the nature of lang versus Content-Language, by requiring:&lt;br /&gt;
&lt;br /&gt;
# different syntax rules for features that are expected to be identical (HTTP and http-equiv)&lt;br /&gt;
# similar syntax rules for features that are different (http-equiv and lang)&lt;br /&gt;
# a warning message which asks authors to “use lang instead” – as if they were juxtaposable alternatives.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Type header and the http-equiv pragma directive &amp;lt;em&amp;gt;are&amp;lt;/em&amp;gt; different.  The HTTP header is used for declaring the languages of the intended audience, the pragma directive is used for specifying a default language.&lt;br /&gt;
&lt;br /&gt;
The lang attribute, on the other hand, is an alternative to the pragma directive because the pragma directive only serves to specify the language of the document when a single value is used.  When multiple languages are specified in the pragma directive, there is absolutely no defined effect, and so it serves no valid purpose at all.&lt;br /&gt;
&lt;br /&gt;
Therefore, the pragma directive is much closer in functionality to the lang attribute, than it is to the HTTP header, with which it shares its name.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Instead of the above, this change proposal propose:&lt;br /&gt;
&lt;br /&gt;
* the Zero-edit proposal’s warning about using lang instead of Content-Language should be changed into a warning which informs that a fallback language measure has kicked in, and recommend that authors create a language declaration (via lang) rather than relying on the fallback feature. This warning should be shown regardless of whether the fallback comes from http-equiv or from the higher level (HTTP). Justification: Since it is a fallback feature, and with other semantics, there is no guarantee that the author has used it for the language effect.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the authors perspective, the inconsistency of issuing the warning about the use of the pragma directive only when the lang attribute is absent would be confusing.  The better alternative is to issue a consistent warning (or error) that simply says to remove the pragma directive and use lang instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* to hold the syntax rules of HTTP (which permits multiple language tags) as the conforming ones (rather than those of lang, which forbids multiple languages), will have the effect of underlining that lang and Content-Language have different purposes. For instance, since the fallback algorithm doesn’t kick in whenever multiple languages are used in the pragma or on the server, there would not be any warning in these cases. &amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The syntax requirements for the HTTP Content-Type header are not affected by the HTML implementation requirements.  Since the lang attribute on the root element and the Content-Language pragma directive with a single language value do have the same effect, which differs significantly from the purpose of the HTTP Content-Language header, and it is misleading to pretend otherwise, the syntax of the former does not need to match the syntax of the latter.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;...&lt;br /&gt;
&lt;br /&gt;
* a carrot: what we want from authors is that they rely on lang (and xml:lang) for specifying the language — when the author does that, he/she should get immediate reward in the form of removal of conformance warning.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This rationale fails to explain why that same effect of encouraging authors to use the lang attribute, would not be achieved by a more consistent warning that states to use the lang attribute and remove the pragma directive.  There is no benefit gained by leaving the directive in, and merely silencing the validator by inserting a lang attribute does little to discourage the use of the redundant and totally unnecessary pragma directive.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=4997</id>
		<title>Content-Language</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Content-Language&amp;diff=4997"/>
		<updated>2010-06-28T10:11:49Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* allow multiple language tags in Content-Language */ Added arguments against multiple langauges&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;strong style=&amp;quot;color:red&amp;quot;&amp;gt;Open Poll Closes 2010-06-30&amp;lt;/strong&amp;gt; ==&lt;br /&gt;
Please submit your objections to meta Content-Language in this poll (which closes &amp;lt;strong&amp;gt;very soon&amp;lt;/strong&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
http://www.w3.org/2002/09/wbs/40318/issue-88-objection-poll/&lt;br /&gt;
&lt;br /&gt;
as well as adding them to this wiki page.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The [[meta]] tag, specifically http-equiv Content-Language pragma, is confusing and broken and should be removed from HTML5 altogether.&lt;br /&gt;
&lt;br /&gt;
See related issue: http://www.w3.org/html/wg/tracker/issues/88&lt;br /&gt;
&lt;br /&gt;
== remove Content-Language ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0308&lt;br /&gt;
&lt;br /&gt;
* This seems like the best option. It is preferable to remove broken features rather than keep them (even if &amp;quot;non-conforming&amp;quot;) to minimize risk of continued misuse/misunderstanding and otherwise time-wasting on behalf of web designers and developers. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== keep Content-Language as non-conforming ==&lt;br /&gt;
http://lists.w3.org/Archives/Public/public-html/2010Apr/0307.html&lt;br /&gt;
&lt;br /&gt;
* I&#039;d still prefer complete removal of a broken feature rather than issuing warnings. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== allow multiple language tags in Content-Language ==&lt;br /&gt;
http://www.w3.org/html/wg/wiki/ChangeProposals/ContentLanguages&lt;br /&gt;
&lt;br /&gt;
* Even the &amp;quot;Summary&amp;quot; for this proposal is long and confusing. The workarounds provided in the change proposal increase web authoring complexity. Broken features should be removed, from the language and the specification, rather than asking web developers to waste time learning about broken features and how to work around them. Let&#039;s keep the spec as clean as possible. [[User:Tantek|Tantek]] 01:29, 27 June 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
===Difference Between Content-Language HTTP Header and Pragma Directive===&lt;br /&gt;
&lt;br /&gt;
This premise of this change proposal is that the Content-Language HTTP header field is functionally equivalent to the Content-Language pragma directive using the meta element.  This premise is used to support the idea that that both should share the same syntax and client side processing requirements.  However, this premise is demonstrably wrong, and thus the change proposal is unsupported by evidence and must be rejected.&lt;br /&gt;
&lt;br /&gt;
In order to demonstrate the differences between the HTTP header and the pragma directive, it is necessary to analyse the purpose and functionality of each and see how they compare.&lt;br /&gt;
&lt;br /&gt;
====Declaring the Language of the Intended Audience====&lt;br /&gt;
&lt;br /&gt;
The HTTP Content-Language header field is used by HTTP servers to announce the language of the intended audience for a given resource representation.  This and other related information exchanged between the client and server can be used for content negotiation based on language.  When the server does this, it is important for this information to be included in the HTTP header where it can be seen by both the client and other intermediary servers.&lt;br /&gt;
&lt;br /&gt;
The information declared within the document using the pragma directive is unsuitable for this purpose, as it will not be parsed by intermediary servers that would otherwise utilise the information for caching purposes.&lt;br /&gt;
&lt;br /&gt;
====Server Configurataion====&lt;br /&gt;
&lt;br /&gt;
It has been claimed that the information declared using a pragma directive within the document may be parsed by some server implementations, which subsequently process and echo the value in the Content-Language HTTP header field.  Since this header field is allowed to contain multiple language values, it is claimed that this ability is limited by permitting only one language in the pragma directive.  However, no evidence has been presented to demonstrate how widely used this feature is, nor why such a feature should even be defined within HTML.&lt;br /&gt;
&lt;br /&gt;
This is a layering violation because information intended for server side processing, and specific implementation details thereof, should not unnecessarily affect the conformance definition of client side HTML.  That is, it is out of scope for HTML, as a client side markup language, to define specific processing requirements or features to be used by servers for implementing HTTP features.  There is also no inherent need for interoperability between different back end implementation details.&lt;br /&gt;
&lt;br /&gt;
Defining the pragma directive in a way that is optimised for specific server implementation details would be analogous to, for example, defining an ASP specific feature within HTML for use on Microsoft IIS platforms.  While server implementations are otherwise free to make any design choices, those design choices need not affect HTML conformance requirements.&lt;br /&gt;
&lt;br /&gt;
====Default Document Language====&lt;br /&gt;
&lt;br /&gt;
In practice, Content-Language used within the meta element in the HTML serves as client side metadata.  The functionality of Content-Language in this case is restricted entirely to the purpose of specifying a fallback language, to be used in the absence of the lang attribute.  This purpose differs significantly from the purpose of declaring the languages of the intended audience.&lt;br /&gt;
&lt;br /&gt;
Declaring multiple languages for the document&#039;s intended audience makes sense in some cases.  However, there can only be one default language.  Thus, for this purpose, the functionality as defined requires that only a single language value be specified.  While the HTTP Content-Language header field is also used for determining the fallback language in cases where it only has a single language value, that is not its primary purpose and is thus not a significant similarity between these two independent features.&lt;br /&gt;
&lt;br /&gt;
Permitting multiple language values to be specified in the pragma directive is at odds with its implementation requirements.  Thus, for the client-side meta data functionality of the pragma directive, it is not at all useful to have multiple languages specified, and so it does not make sense for multiple languages to be considered conforming.&lt;br /&gt;
&lt;br /&gt;
These 3 aspects of the functionality — declaring the langauge of the intended audience, server side configuration and default document language — clearly illustrate that the premise of this change proposal — the shared functionality between the two features — is fundamentally flawed.  The reality is that the in-document Content-Language pragma directive only shares its name with the HTTP header field, while its functionality is closer to that of the lang attribute. And since server side implementation details are out of scope of HTML, there is no need for the document conformance definition to permit multiple language values.  The solution chosen for addressing this issue must take this into account, and thus reject this change proposal.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Rationale&amp;diff=4822</id>
		<title>Rationale</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Rationale&amp;diff=4822"/>
		<updated>2010-05-05T20:56:33Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Meter and Progress (are not the same thing) */ Revised to provide example use cases and fix formatting.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document serves a rationale document for various parts of the HTML5 specification. Over time this page will be a complete rationale document.&lt;br /&gt;
&lt;br /&gt;
== Other Pages ==&lt;br /&gt;
&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend|Why not reuse legend or another &#039;&#039;mini-header&#039;&#039; element.]]&lt;br /&gt;
* [http://www.w3.org/html/wg/wiki/ChangeProposals/KeepNewElements Rationale for a variety of elements]&lt;br /&gt;
&lt;br /&gt;
== Specific Elements ==&lt;br /&gt;
&lt;br /&gt;
=== Plaintext ===&lt;br /&gt;
the &amp;amp;lt;plaintext&amp;amp;gt; element is a obsolete precursor to the &amp;amp;lt;pre&amp;amp;gt; element.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; It is is now in the HTML5 spec as a method of stopping all further html token parsing. It lacks an end tag and just emits the rest of the page as plain text. It throws a parse error upon reaching the end of the document as it is not considered a valid element (and it is missing an end-tag).&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[http://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt http://www.w3.org/MarkUp/draft-ietf-iiir-html-01.txt]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Image ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;image&amp;amp;gt; element is treated as an alternate (but invalid) name for &amp;amp;lt;img&amp;amp;gt;. This is because some sites (around 0.2%) make this mistake. It is already treated as an image by most major browsers.&lt;br /&gt;
&lt;br /&gt;
=== Meter and Progress (are not the same thing) ===&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;meter&amp;amp;gt; is not just a special case of &amp;amp;lt;progress&amp;amp;gt;.  The meter element represents a scalar measurement within a known range, such as storage quota usage, a relative popularity rating or relevance indicator.  The control allows for the indication of high and low ranges, or minimum, maximum and optimal levels.&lt;br /&gt;
&lt;br /&gt;
The progress element, on the other hand, represents the completion progress of a task.  This could be a real time indicator for background processing task (e.g. using Web Workers or a file upload).  Progress elmements can also be in the indeterminate state, indicating that something is in progress, but it&#039;s completion progress is unknown.&lt;br /&gt;
&lt;br /&gt;
The default rendering for a meter element could look something like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://developer.apple.com/mac/library/documentation/userexperience/conceptual/applehiguidelines/art/ct_leveldiscrete.gif&amp;quot; alt=&amp;quot;example of proper rendering for the meter element&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Whereas, the default rendering for the progress element could look like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://developer.apple.com/mac/library/documentation/userexperience/conceptual/applehiguidelines/art/ct_determprogsizes.jpg&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively, an indeterminate progress bar could also be styled as a throbber, which indicates progress without any indication of the remaining progress:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;img src=&amp;quot;http://developer.apple.com/mac/library/documentation/userexperience/conceptual/applehiguidelines/art/ct_asynchprogindsizes.jpg&amp;quot; alt=&amp;quot;picture of the default apple throbber&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See [http://www.mail-archive.com/whatwg@lists.whatwg.org/msg01308.html Re: &amp;amp;lt;progress&amp;amp;gt; draft] for details.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4740</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4740"/>
		<updated>2010-04-28T11:31:22Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Updated character encoding information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a given, conforming HTML document is a polyglot document.  This does not list all issues that would need to be checked to ensure that a given, conforming XHTML document is a polyglot document, however.  As such, syntactic XML constructs which are not valid in HTML are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. For HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
|  Meaningless talisman in HTML.&lt;br /&gt;
|  In DOM implementations for XHTML, &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; represents the lang attribute in the XML namespace.  For HTML, it represents an attribute in no namespace with the literal localname &amp;quot;xml:lang&amp;quot;. This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is effectively dependent upon the end-user&#039;s locale (Windows-1252 for most Western locales). For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using either: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, ensure the encoding is declared in the transport layer (HTTP Content-Type header), or use UTF-8 or UTF-16 with an appropriate Byte Order Mark.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Chars&lt;br /&gt;
|  Unescaped ampersand (&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;) or less-than (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;) characters are not allowed in text and attribute values, within XHTML. (This doesn&#039;t include within CDATA sections, comments, etc.)&lt;br /&gt;
|  HTML can include unescaped ampersands where they are unambiguous, and unescaped less than characters within rawtext or RCDATA content, and quoted attributes.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-  &lt;br /&gt;
!  The &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  The content model of these elements is RCDATA in HTML, but PCDATA in XHTML.  These elements may not contain escaping text spans (&amp;lt;code&amp;gt;&amp;amp;lt;!-- ... --&amp;amp;gt;&amp;lt;/code&amp;gt;, because they look like comments), or unescaped ampersands or less than characters.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4396</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4396"/>
		<updated>2010-02-04T00:23:22Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* HTML5 should support href on any element! */ Fixed more markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is HTML5. The WHATWG also works on Web Workers and occasionally specifications outside WHATWG space are discussed on the WHATWG mailing list and forwarded when appropriate.&lt;br /&gt;
&lt;br /&gt;
In the past it has worked on Web Forms 2.0 and Web Controls 1.0. Web Forms 2.0 has been integrated into HTML5 and Web Controls 1.0 has been abandoned for now, awaiting what [http://www.w3.org/TR/xbl/ XBL 2.0] will bring us.&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily subscribe to the WHATWG [http://whatwg.org/mailing-list mailing lists]. You may also [http://blog.whatwg.org/w3c-restarts-html-effort join the the W3C&#039;s new HTMLWG] by going through the slightly longer application process.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People send e-mail to [http://www.whatwg.org/mailing-list#specs the mailing list]. The editor then reads that [http://www.whatwg.org/issues/ feedback] and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc) makes language design decisions intended to address everyone&#039;s needs as well as possible while keeping the language consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the editor to change the spec any more (e.g. because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach -- there&#039;s no guarantee that everyone will be happy! There is also no voting.&lt;br /&gt;
&lt;br /&gt;
There is a small oversight committee (known as the &amp;quot;WHATWG members&amp;quot;, see the [http://www.whatwg.org/charter charter]) who have the authority to override or replace the editor if he starts making bad decisions.&lt;br /&gt;
&lt;br /&gt;
Currently the editor is Ian Hickson.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
Feedback on a feature should be sent to whatwg@whatwg.org (but you have to [http://whatwg.org/mailing-list#specs join the mailing list] first), or ian@hixie.ch. All feedback will receive a reply in due course.&lt;br /&gt;
&lt;br /&gt;
If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g. because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editor know by either e-mailing him (ian@hixie.ch), or contacting him on [[IRC]] (Hixie on Freenode). Requests for priority feedback handling are handled confidentially so other implementors won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
Questions and requests for clarifications should be asked either on the mailing list or on [[IRC]], in the #whatwg channel on Freenode.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* On a regular basis, especially around explicit call-for-comments, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward.&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
# Research the use cases and requirements by discussing the issue with authors and implementors.&lt;br /&gt;
# Come up with a clear description of the problem that needs to be solved.&lt;br /&gt;
# Discuss your proposal with authors and implementors. Read the responses. Listen to the feedback. Consider whether your ideas are good solutions to the use cases and requirements put forward. Discussions here should be done in public, e.g. on an archived public mailing list or documented in blogs.&lt;br /&gt;
# Get implementors to commit to implementing the feature. If you can&#039;t get several implementors to implement the feature, then get at least one user agent to implement it experimentally. Experimental implementations should be publicly available.&lt;br /&gt;
# Bring the experimental implementations to the attention of the spec&#039;s editor. Document the experience found from any implementations, the use cases and requirements that were found in the first step, the data that the design was based on.&lt;br /&gt;
# Demonstrate the importance of the problem. Demonstrate that the solution is one that will be used correctly and widely enough for it to solve the stated problem.&lt;br /&gt;
# Participate in the subsequent design discussions, considering all the proposals carefully. Typically at this step the original design gets thrown out and a significantly better design is developed, informed by the previous research, new research, and implementation and author experience with experimental implementations. Sometimes, the idea is abandoned at this stage.&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which should start a bit before implementations start being written to the spec. (Test suites usually find as many problems with implementations as they do with the spec; they aren&#039;t just for finding browser bugs.) We don&#039;t yet have a good story with respect to test suites, sadly. If you want to help us out, let the mailing list know! Be aware, though, it&#039;s a lot of work.&lt;br /&gt;
&lt;br /&gt;
== HTML5 ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? === &lt;br /&gt;
&lt;br /&gt;
[http://www.whatwg.org/specs/web-apps/current-work/ HTML5] is the main focus of the WHATWG community and also that of the W3C HTML Working Group. HTML5 is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML (HTML5) and XML (XHTML5) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before. Yet they are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec.&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [http://svn.whatwg.org/ subversion repository]. You may use any svn client to check out the latest version and use your clients diff tools in order compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* You may use the online [http://html5.org/tools/web-apps-tracker (X)HTML5 Tracking tool]. The tool provides an online interface for selecting and comparing revisions of the spec.&lt;br /&gt;
&lt;br /&gt;
* There is a commit-watchers mailing list that is notified of every edit: http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org&lt;br /&gt;
&lt;br /&gt;
* The W3C provide a Web view of their CVS mirror of the HTML5 spec: http://dev.w3.org/cvsweb/html5/spec/Overview.html&lt;br /&gt;
&lt;br /&gt;
* The W3C provide diff-marked HTML versions for each change that affect the W3C copy of the spec by e-mail: http://lists.w3.org/Archives/Public/public-html-diffs/latest&lt;br /&gt;
&lt;br /&gt;
* Non-editorial changes get broadcast on the WHATWG Twitter feed: http://twitter.com/WHATWG&lt;br /&gt;
&lt;br /&gt;
* All changes that affect the W3C copy of the spec get broadcast on the HTML5 Twitter feed: http://twitter.com/HTML5&lt;br /&gt;
&lt;br /&gt;
* The latest changes are visible in coloured diff form: http://whatwg.org/specs/web-apps/current-work/index-diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the spec? ===&lt;br /&gt;
&lt;br /&gt;
All active work at WHATWG is gathered in the (very large) [http://www.whatwg.org/specs/web-apps/current-work/complete.html Web Applications 1.0] document.&lt;br /&gt;
&lt;br /&gt;
WHATWG HTML is a subset containing only the HTML-specific material. It is available as [http://www.whatwg.org/specs/web-apps/current-work/ single-page]&lt;br /&gt;
and &#039;&#039;&#039;[http://whatwg.org/html multi-page]&#039;&#039;&#039;, as well as in PDF [http://www.whatwg.org/specs/web-apps/current-work/html5-a4.pdf A4] and&lt;br /&gt;
[http://www.whatwg.org/specs/web-apps/current-work/html5-letter.pdf Letter].&lt;br /&gt;
&lt;br /&gt;
The following table lists in the individual specifications included:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! WHATWG Specifications &amp;lt;br&amp;gt; (and sections therein)&lt;br /&gt;
! Section links for &amp;lt;br&amp;gt; Web Applications 1.0&lt;br /&gt;
! W3C/IETF Specifications&lt;br /&gt;
|-&lt;br /&gt;
! HTML5 only (excluding newer features)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://dev.w3.org/html5/spec/Overview.html Single-page], [http://dev.w3.org/html5/spec/spec.html Multi-page] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Microdata&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#microdata In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#microdata Microdata]&lt;br /&gt;
| [http://dev.w3.org/html5/md/Overview.html Microdata] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! 2D Context&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-2d-context In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#the-2d-context 2D Context]&lt;br /&gt;
| [http://dev.w3.org/html5/2dcontext/Overview.html 2D Context] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Communications - Cross-document messaging&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#crossDocumentMessages Cross-document messaging]&lt;br /&gt;
| [http://dev.w3.org/html5/postmsg/Overview.html#crossDocumentMessages Communications] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Communications - Channel messaging&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#channel-messaging In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#channel-messaging Channel messaging]&lt;br /&gt;
| [http://dev.w3.org/html5/postmsg/Overview.html#channel-messaging Communications] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Device Element&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#devices In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#devices Device]&lt;br /&gt;
| [http://dev.w3.org/html5/html-device/ HTML Device] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Workers&lt;br /&gt;
| [http://www.whatwg.org/specs/web-workers/current-work/ Web Workers specification]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#workers Web Workers]&lt;br /&gt;
| [http://dev.w3.org/html5/workers/Overview.html Web Workers] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Storage&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#webstorage Web Storage]&lt;br /&gt;
| [http://dev.w3.org/html5/webstorage/ Web Storage] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Sockets API&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#network Web Sockets API]&lt;br /&gt;
| [http://dev.w3.org/html5/websockets/ Web Sockets API] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Sockets Protocol&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#websocket-protocol Web Sockets Protocol]&lt;br /&gt;
| [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol The Web Socket Protocol] (IETF)&lt;br /&gt;
|-&lt;br /&gt;
! Server-Sent Events&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#server-sent-events Server-sent Events]&lt;br /&gt;
| [http://dev.w3.org/html5/eventsource/ Server-sent Events] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web SQL Database (stalled)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://dev.w3.org/html5/webdatabase/ Web SQL Database] (WebApps WG)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of the above are generated from one [http://www.whatwg.org/specs/web-apps/current-work/source source document].&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
There are no standalone author or implementor specifications. However, the WHATWG HTML and the HTML5 specifications (and their multipage versions) can be customized to either hide or emphasize user-agent-specific material. The mode can be selected using radio buttons at the top right of those documents.&lt;br /&gt;
&lt;br /&gt;
It is also possible to toggle the mode by changing the URL, here is an example for the multipage WHATWG HTML specification:&lt;br /&gt;
&lt;br /&gt;
* As a normal spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=complete&lt;br /&gt;
* Author view (hiding the user-agent-specific material): http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=author&lt;br /&gt;
* Implementor view (highlighting the user-agent-specific material): http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=highlight&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites that might help you work out what you can use in the meantime:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, them remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Finished&amp;quot; is a big deal... You&#039;ll be able to use HTML5 long before then. See [[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&lt;br /&gt;
&lt;br /&gt;
It is estimated by the editor that HTML5 will reach the W3C Candidate Recommendation stage during 2012. That doesn&#039;t mean you can&#039;t start using it yet, though. Different parts of the specification are at different maturity levels. Some sections are already relatively stable and there are implementations that are already quite close to completion, and those features can be used today (e.g. &amp;amp;lt;canvas&amp;amp;gt;). But other sections are still being actively worked on and changed regularly, or not even written yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see annotations in the margins showing the estimated stability of each section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The possible states are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Idea; yet to be specified&#039;&#039; -- the section is a placeholder.&lt;br /&gt;
* &#039;&#039;First draft&#039;&#039; -- An early stage.&lt;br /&gt;
* &#039;&#039;Working draft&#039;&#039; -- An early stage, but more mature than just &amp;quot;first draft&amp;quot;.&lt;br /&gt;
* &#039;&#039;Last call for comments&#039;&#039; -- The section is nearly done, but there may be feedback still to be processed. Send feedback sooner rather than later, or it might be too late.&lt;br /&gt;
* &#039;&#039;Awaiting implementation feedback&#039;&#039; -- The section is basically done, but might change in response to feedback from implementors. Major changes are unlikely past this point unless it is found that the feature, as specified, really doesn&#039;t work well.&lt;br /&gt;
* &#039;&#039;Implemented and widely deployed&#039;&#039; -- the feature is specified and complete. Once a section is interoperably implemented, it&amp;amp;#8217;s quite stable and unlikely to change significantly. Any changes to such a section would most likely only be editorial in nature, particularly if the feature is already in widespread use.&lt;br /&gt;
&lt;br /&gt;
There are also two special states:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Being edited right now&#039;&#039; -- the section is in high flux and is actively being edited. Contact Hixie on [[IRC]] if you have immediate feedback.&lt;br /&gt;
* &#039;&#039;Being considered for removal&#039;&#039; -- for one reason or another, the section is being considered for removal. Send feedback soon to help with the decision.&lt;br /&gt;
&lt;br /&gt;
The point to all this is that you shouldn&amp;amp;#8217;t place too much weight on the status of the specification as a whole. You need to consider the stability and maturity level of each section individually.&lt;br /&gt;
&lt;br /&gt;
It is estimated, again by the editor, that HTML5 will reach a W3C recommendation in the year 2022 or later. This will be approximately 18-20 years of development, since beginning in mid-2004. That&#039;s actually not that crazy, though. Work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hasn&#039;t reached the level that we want to reach with HTML5. There is no real test suite, there are many parts of the spec that are lacking real implementations, there are big parts that aren&#039;t interoperable, and the spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than it does now.&lt;br /&gt;
&lt;br /&gt;
For a spec to become a REC today, it requires two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
(In the interests of full disclosure, the W3C&#039;s [http://www.w3.org/2007/03/HTML-WG-charter.html#deliverables official line] is that the HTML5 spec will be complete, with interoperable implementations, in late 2010. However, that same timetable gave a date for First Public Working Draft that was eight months premature, and the W3C, as of the predicted date for the third milestone, Candidate Recommendation, had still not come anywhere near reaching the second milestone, Last Call. You can make your own judgements regarding the W3C timetable&#039;s credibility.)&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft has already started implementing parts of HTML5 in IE8.&lt;br /&gt;
&lt;br /&gt;
HTML5 is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]]—or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see HTML5 feature proposals below.&lt;br /&gt;
&lt;br /&gt;
== HTML5 syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML5 finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What will the DOCTYPE be? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary.  However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
=== How are pre-HTML5 documents parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by HTML5. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax of HTML5 therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed using the HTML5 parser.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [http://validator.whatwg.org/ HTML5 validator].&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in HTML5. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML5 use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike XHTML1, XHTML5 &#039;&#039;must not&#039;&#039; be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 to HTML5.&lt;br /&gt;
&lt;br /&gt;
HTML5 also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
No, HTML and XML have [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|many significant differences]], particularly parsing requirements, and you cannot process one using tools designed for the other. However, since HTML5 is defined in terms of the DOM, in most cases there are both HTML and XHTML serializations available that can represent the same document. There are, however, a few differences explained later that make it impossible to represent some HTML documents accurately as XHTML and vice versa. &lt;br /&gt;
&lt;br /&gt;
If you wish to process an HTML document as XHTML, it requires that you and convert it into XHTML first; and vice versa for processing XHTML as HTML.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML5 is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML5 does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to HTML5, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does HTML5 legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML5 feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML5. The main reason this isn&#039;t in HTML5 is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;amp;lt;a&amp;amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;legend&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;legend&amp;gt;Apples&amp;lt;/legend&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This is a styling problem and should be fixed in CSS. There&#039;s no reason to add a grouping element to HTML, as the semantics are already unambiguous.&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements. The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; research and opinions are being gathered that support the use of the &amp;amp;lt;cite&amp;gt; element to markup the names of speakers (e.g. for quotations). Please contribute yours:&lt;br /&gt;
* [[Cite_element#examples_in_the_wild|cite element: examples in the wild of speakers marked up with cite]]&lt;br /&gt;
* [[Cite_element#opinions|cite element: opinions on use of cite to markup names of speakers]]&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;time&amp;gt; element should allow vague times (&amp;quot;March&amp;quot;) and times from ancient history to be marked up ===&lt;br /&gt;
&lt;br /&gt;
This has been discussed a number of times. For an overview of the topic, please see these e-mails:&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018888.html&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/021745.html&lt;br /&gt;
At this stage, as discussed in the second of those e-mails, the best way forward is to demonstrate that there are communities interested in solving this problem, by using existing techniques such as microdata to address it. If such a solution achieves a high adoption rate, that will substantially increase the strength of the proposals.&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
Not especially. There are people who for a number of reasons are unable to join the W3C group, and there are others who are unable to join the WHATWG group. The editor is in both groups and takes all input into account -- and there are far more places where input on HTML5 is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc).&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The editor takes feedback from everyone into account and does not look at the source of those arguments for technical arguments.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki]&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/introduction.html#history0 The history section in HTML5 itself]&lt;br /&gt;
&lt;br /&gt;
== Web Workers ==&lt;br /&gt;
&lt;br /&gt;
Besides HTML5 the WHATWG works on [http://www.whatwg.org/specs/web-workers/current-work/ Web Workers]. It does this together with the W3C WebApps Working Group.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
Please reply inline or make the reply self-contained.&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your e-mail makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your e-mail backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post e-mails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write e-mail.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write e-mail?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;br /&gt;
&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
H&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4395</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4395"/>
		<updated>2010-02-04T00:22:26Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* HTML5 should support href on any element! */ Fixed markup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is HTML5. The WHATWG also works on Web Workers and occasionally specifications outside WHATWG space are discussed on the WHATWG mailing list and forwarded when appropriate.&lt;br /&gt;
&lt;br /&gt;
In the past it has worked on Web Forms 2.0 and Web Controls 1.0. Web Forms 2.0 has been integrated into HTML5 and Web Controls 1.0 has been abandoned for now, awaiting what [http://www.w3.org/TR/xbl/ XBL 2.0] will bring us.&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily subscribe to the WHATWG [http://whatwg.org/mailing-list mailing lists]. You may also [http://blog.whatwg.org/w3c-restarts-html-effort join the the W3C&#039;s new HTMLWG] by going through the slightly longer application process.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People send e-mail to [http://www.whatwg.org/mailing-list#specs the mailing list]. The editor then reads that [http://www.whatwg.org/issues/ feedback] and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc) makes language design decisions intended to address everyone&#039;s needs as well as possible while keeping the language consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the editor to change the spec any more (e.g. because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach -- there&#039;s no guarantee that everyone will be happy! There is also no voting.&lt;br /&gt;
&lt;br /&gt;
There is a small oversight committee (known as the &amp;quot;WHATWG members&amp;quot;, see the [http://www.whatwg.org/charter charter]) who have the authority to override or replace the editor if he starts making bad decisions.&lt;br /&gt;
&lt;br /&gt;
Currently the editor is Ian Hickson.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
Feedback on a feature should be sent to whatwg@whatwg.org (but you have to [http://whatwg.org/mailing-list#specs join the mailing list] first), or ian@hixie.ch. All feedback will receive a reply in due course.&lt;br /&gt;
&lt;br /&gt;
If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g. because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editor know by either e-mailing him (ian@hixie.ch), or contacting him on [[IRC]] (Hixie on Freenode). Requests for priority feedback handling are handled confidentially so other implementors won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
Questions and requests for clarifications should be asked either on the mailing list or on [[IRC]], in the #whatwg channel on Freenode.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* On a regular basis, especially around explicit call-for-comments, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward.&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential or fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
# Research the use cases and requirements by discussing the issue with authors and implementors.&lt;br /&gt;
# Come up with a clear description of the problem that needs to be solved.&lt;br /&gt;
# Discuss your proposal with authors and implementors. Read the responses. Listen to the feedback. Consider whether your ideas are good solutions to the use cases and requirements put forward. Discussions here should be done in public, e.g. on an archived public mailing list or documented in blogs.&lt;br /&gt;
# Get implementors to commit to implementing the feature. If you can&#039;t get several implementors to implement the feature, then get at least one user agent to implement it experimentally. Experimental implementations should be publicly available.&lt;br /&gt;
# Bring the experimental implementations to the attention of the spec&#039;s editor. Document the experience found from any implementations, the use cases and requirements that were found in the first step, the data that the design was based on.&lt;br /&gt;
# Demonstrate the importance of the problem. Demonstrate that the solution is one that will be used correctly and widely enough for it to solve the stated problem.&lt;br /&gt;
# Participate in the subsequent design discussions, considering all the proposals carefully. Typically at this step the original design gets thrown out and a significantly better design is developed, informed by the previous research, new research, and implementation and author experience with experimental implementations. Sometimes, the idea is abandoned at this stage.&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which should start a bit before implementations start being written to the spec. (Test suites usually find as many problems with implementations as they do with the spec; they aren&#039;t just for finding browser bugs.) We don&#039;t yet have a good story with respect to test suites, sadly. If you want to help us out, let the mailing list know! Be aware, though, it&#039;s a lot of work.&lt;br /&gt;
&lt;br /&gt;
== HTML5 ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? === &lt;br /&gt;
&lt;br /&gt;
[http://www.whatwg.org/specs/web-apps/current-work/ HTML5] is the main focus of the WHATWG community and also that of the W3C HTML Working Group. HTML5 is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML (HTML5) and XML (XHTML5) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before. Yet they are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec.&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [http://svn.whatwg.org/ subversion repository]. You may use any svn client to check out the latest version and use your clients diff tools in order compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* You may use the online [http://html5.org/tools/web-apps-tracker (X)HTML5 Tracking tool]. The tool provides an online interface for selecting and comparing revisions of the spec.&lt;br /&gt;
&lt;br /&gt;
* There is a commit-watchers mailing list that is notified of every edit: http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org&lt;br /&gt;
&lt;br /&gt;
* The W3C provide a Web view of their CVS mirror of the HTML5 spec: http://dev.w3.org/cvsweb/html5/spec/Overview.html&lt;br /&gt;
&lt;br /&gt;
* The W3C provide diff-marked HTML versions for each change that affect the W3C copy of the spec by e-mail: http://lists.w3.org/Archives/Public/public-html-diffs/latest&lt;br /&gt;
&lt;br /&gt;
* Non-editorial changes get broadcast on the WHATWG Twitter feed: http://twitter.com/WHATWG&lt;br /&gt;
&lt;br /&gt;
* All changes that affect the W3C copy of the spec get broadcast on the HTML5 Twitter feed: http://twitter.com/HTML5&lt;br /&gt;
&lt;br /&gt;
* The latest changes are visible in coloured diff form: http://whatwg.org/specs/web-apps/current-work/index-diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the spec? ===&lt;br /&gt;
&lt;br /&gt;
All active work at WHATWG is gathered in the (very large) [http://www.whatwg.org/specs/web-apps/current-work/complete.html Web Applications 1.0] document.&lt;br /&gt;
&lt;br /&gt;
WHATWG HTML is a subset containing only the HTML-specific material. It is available as [http://www.whatwg.org/specs/web-apps/current-work/ single-page]&lt;br /&gt;
and &#039;&#039;&#039;[http://whatwg.org/html multi-page]&#039;&#039;&#039;, as well as in PDF [http://www.whatwg.org/specs/web-apps/current-work/html5-a4.pdf A4] and&lt;br /&gt;
[http://www.whatwg.org/specs/web-apps/current-work/html5-letter.pdf Letter].&lt;br /&gt;
&lt;br /&gt;
The following table lists in the individual specifications included:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
! WHATWG Specifications &amp;lt;br&amp;gt; (and sections therein)&lt;br /&gt;
! Section links for &amp;lt;br&amp;gt; Web Applications 1.0&lt;br /&gt;
! W3C/IETF Specifications&lt;br /&gt;
|-&lt;br /&gt;
! HTML5 only (excluding newer features)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://dev.w3.org/html5/spec/Overview.html Single-page], [http://dev.w3.org/html5/spec/spec.html Multi-page] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Microdata&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#microdata In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#microdata Microdata]&lt;br /&gt;
| [http://dev.w3.org/html5/md/Overview.html Microdata] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! 2D Context&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-2d-context In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#the-2d-context 2D Context]&lt;br /&gt;
| [http://dev.w3.org/html5/2dcontext/Overview.html 2D Context] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Communications - Cross-document messaging&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#crossDocumentMessages Cross-document messaging]&lt;br /&gt;
| [http://dev.w3.org/html5/postmsg/Overview.html#crossDocumentMessages Communications] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Communications - Channel messaging&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#channel-messaging In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#channel-messaging Channel messaging]&lt;br /&gt;
| [http://dev.w3.org/html5/postmsg/Overview.html#channel-messaging Communications] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Device Element&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#devices In WHATWG HTML]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#devices Device]&lt;br /&gt;
| [http://dev.w3.org/html5/html-device/ HTML Device] (HTMLWG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Workers&lt;br /&gt;
| [http://www.whatwg.org/specs/web-workers/current-work/ Web Workers specification]&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#workers Web Workers]&lt;br /&gt;
| [http://dev.w3.org/html5/workers/Overview.html Web Workers] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Storage&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#webstorage Web Storage]&lt;br /&gt;
| [http://dev.w3.org/html5/webstorage/ Web Storage] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Sockets API&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#network Web Sockets API]&lt;br /&gt;
| [http://dev.w3.org/html5/websockets/ Web Sockets API] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web Sockets Protocol&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#websocket-protocol Web Sockets Protocol]&lt;br /&gt;
| [http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol The Web Socket Protocol] (IETF)&lt;br /&gt;
|-&lt;br /&gt;
! Server-Sent Events&lt;br /&gt;
|&lt;br /&gt;
| [http://www.whatwg.org/specs/web-apps/current-work/complete.html#server-sent-events Server-sent Events]&lt;br /&gt;
| [http://dev.w3.org/html5/eventsource/ Server-sent Events] (WebApps WG)&lt;br /&gt;
|-&lt;br /&gt;
! Web SQL Database (stalled)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| [http://dev.w3.org/html5/webdatabase/ Web SQL Database] (WebApps WG)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All of the above are generated from one [http://www.whatwg.org/specs/web-apps/current-work/source source document].&lt;br /&gt;
&lt;br /&gt;
=== Are there versions of the specification aimed specifically at authors/implementors? ===&lt;br /&gt;
&lt;br /&gt;
There are no standalone author or implementor specifications. However, the WHATWG HTML and the HTML5 specifications (and their multipage versions) can be customized to either hide or emphasize user-agent-specific material. The mode can be selected using radio buttons at the top right of those documents.&lt;br /&gt;
&lt;br /&gt;
It is also possible to toggle the mode by changing the URL, here is an example for the multipage WHATWG HTML specification:&lt;br /&gt;
&lt;br /&gt;
* As a normal spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=complete&lt;br /&gt;
* Author view (hiding the user-agent-specific material): http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=author&lt;br /&gt;
* Implementor view (highlighting the user-agent-specific material): http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=highlight&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites that might help you work out what you can use in the meantime:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, them remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Finished&amp;quot; is a big deal... You&#039;ll be able to use HTML5 long before then. See [[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&lt;br /&gt;
&lt;br /&gt;
It is estimated by the editor that HTML5 will reach the W3C Candidate Recommendation stage during 2012. That doesn&#039;t mean you can&#039;t start using it yet, though. Different parts of the specification are at different maturity levels. Some sections are already relatively stable and there are implementations that are already quite close to completion, and those features can be used today (e.g. &amp;amp;lt;canvas&amp;amp;gt;). But other sections are still being actively worked on and changed regularly, or not even written yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see annotations in the margins showing the estimated stability of each section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The possible states are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Idea; yet to be specified&#039;&#039; -- the section is a placeholder.&lt;br /&gt;
* &#039;&#039;First draft&#039;&#039; -- An early stage.&lt;br /&gt;
* &#039;&#039;Working draft&#039;&#039; -- An early stage, but more mature than just &amp;quot;first draft&amp;quot;.&lt;br /&gt;
* &#039;&#039;Last call for comments&#039;&#039; -- The section is nearly done, but there may be feedback still to be processed. Send feedback sooner rather than later, or it might be too late.&lt;br /&gt;
* &#039;&#039;Awaiting implementation feedback&#039;&#039; -- The section is basically done, but might change in response to feedback from implementors. Major changes are unlikely past this point unless it is found that the feature, as specified, really doesn&#039;t work well.&lt;br /&gt;
* &#039;&#039;Implemented and widely deployed&#039;&#039; -- the feature is specified and complete. Once a section is interoperably implemented, it&amp;amp;#8217;s quite stable and unlikely to change significantly. Any changes to such a section would most likely only be editorial in nature, particularly if the feature is already in widespread use.&lt;br /&gt;
&lt;br /&gt;
There are also two special states:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Being edited right now&#039;&#039; -- the section is in high flux and is actively being edited. Contact Hixie on [[IRC]] if you have immediate feedback.&lt;br /&gt;
* &#039;&#039;Being considered for removal&#039;&#039; -- for one reason or another, the section is being considered for removal. Send feedback soon to help with the decision.&lt;br /&gt;
&lt;br /&gt;
The point to all this is that you shouldn&amp;amp;#8217;t place too much weight on the status of the specification as a whole. You need to consider the stability and maturity level of each section individually.&lt;br /&gt;
&lt;br /&gt;
It is estimated, again by the editor, that HTML5 will reach a W3C recommendation in the year 2022 or later. This will be approximately 18-20 years of development, since beginning in mid-2004. That&#039;s actually not that crazy, though. Work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hasn&#039;t reached the level that we want to reach with HTML5. There is no real test suite, there are many parts of the spec that are lacking real implementations, there are big parts that aren&#039;t interoperable, and the spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than it does now.&lt;br /&gt;
&lt;br /&gt;
For a spec to become a REC today, it requires two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
(In the interests of full disclosure, the W3C&#039;s [http://www.w3.org/2007/03/HTML-WG-charter.html#deliverables official line] is that the HTML5 spec will be complete, with interoperable implementations, in late 2010. However, that same timetable gave a date for First Public Working Draft that was eight months premature, and the W3C, as of the predicted date for the third milestone, Candidate Recommendation, had still not come anywhere near reaching the second milestone, Last Call. You can make your own judgements regarding the W3C timetable&#039;s credibility.)&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft has already started implementing parts of HTML5 in IE8.&lt;br /&gt;
&lt;br /&gt;
HTML5 is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]]—or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see HTML5 feature proposals below.&lt;br /&gt;
&lt;br /&gt;
== HTML5 syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML5 finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What will the DOCTYPE be? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary.  However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
=== How are pre-HTML5 documents parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by HTML5. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax of HTML5 therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed using the HTML5 parser.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [http://validator.whatwg.org/ HTML5 validator].&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in HTML5. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML5 use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike XHTML1, XHTML5 &#039;&#039;must not&#039;&#039; be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 to HTML5.&lt;br /&gt;
&lt;br /&gt;
HTML5 also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
No, HTML and XML have [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|many significant differences]], particularly parsing requirements, and you cannot process one using tools designed for the other. However, since HTML5 is defined in terms of the DOM, in most cases there are both HTML and XHTML serializations available that can represent the same document. There are, however, a few differences explained later that make it impossible to represent some HTML documents accurately as XHTML and vice versa. &lt;br /&gt;
&lt;br /&gt;
If you wish to process an HTML document as XHTML, it requires that you and convert it into XHTML first; and vice versa for processing XHTML as HTML.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML5 is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML5 does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to HTML5, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does HTML5 legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML5 feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;amp;lt;a&amp;amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML5. The main reason this isn&#039;t in HTML5 is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;lt;a&amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;legend&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;legend&amp;gt;Apples&amp;lt;/legend&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This is a styling problem and should be fixed in CSS. There&#039;s no reason to add a grouping element to HTML, as the semantics are already unambiguous.&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements. The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; research and opinions are being gathered that support the use of the &amp;amp;lt;cite&amp;gt; element to markup the names of speakers (e.g. for quotations). Please contribute yours:&lt;br /&gt;
* [[Cite_element#examples_in_the_wild|cite element: examples in the wild of speakers marked up with cite]]&lt;br /&gt;
* [[Cite_element#opinions|cite element: opinions on use of cite to markup names of speakers]]&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;time&amp;gt; element should allow vague times (&amp;quot;March&amp;quot;) and times from ancient history to be marked up ===&lt;br /&gt;
&lt;br /&gt;
This has been discussed a number of times. For an overview of the topic, please see these e-mails:&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018888.html&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/021745.html&lt;br /&gt;
At this stage, as discussed in the second of those e-mails, the best way forward is to demonstrate that there are communities interested in solving this problem, by using existing techniques such as microdata to address it. If such a solution achieves a high adoption rate, that will substantially increase the strength of the proposals.&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
Not especially. There are people who for a number of reasons are unable to join the W3C group, and there are others who are unable to join the WHATWG group. The editor is in both groups and takes all input into account -- and there are far more places where input on HTML5 is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc).&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The editor takes feedback from everyone into account and does not look at the source of those arguments for technical arguments.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki]&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/introduction.html#history0 The history section in HTML5 itself]&lt;br /&gt;
&lt;br /&gt;
== Web Workers ==&lt;br /&gt;
&lt;br /&gt;
Besides HTML5 the WHATWG works on [http://www.whatwg.org/specs/web-workers/current-work/ Web Workers]. It does this together with the W3C WebApps Working Group.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
Please reply inline or make the reply self-contained.&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your e-mail makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your e-mail backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post e-mails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write e-mail.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write e-mail?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;br /&gt;
&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
H&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Change_Proposal:_figure_and_details&amp;diff=4381</id>
		<title>Change Proposal: figure and details</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Change_Proposal:_figure_and_details&amp;diff=4381"/>
		<updated>2010-01-12T00:03:16Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Impact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
The current HTML5 draft uses the dt and dd elements to markup the captions and content of the figure and details elements.  This change proposal explains why the dt and dd elements are a poor choice for these purposes and proposes an alternative.&lt;br /&gt;
----&lt;br /&gt;
== Rationale Against Using dt/dd for figure and details Elements ==&lt;br /&gt;
&lt;br /&gt;
=== Backwards Compatibility ===&lt;br /&gt;
Due to IE&#039;s legacy parsing issues, the dt and dd elements create problems for authors attempting to use and style these elements. The simplest workaround (wrapping both figure and details in an extra div) that authors would need to apply to avoid these issues is not intuitive, as clearly demonstrated by the wide range of alternative solutions that were attempted prior to its discovery.&lt;br /&gt;
&lt;br /&gt;
=== Legacy Cruft ===&lt;br /&gt;
The use of extra div elements may lead to a lot of confusion among authors, at least initially, and ultimately end up becoming extraneous markup that authors just include without really understanding why, even after the current generation of browsers are long since dead.&lt;br /&gt;
&lt;br /&gt;
We&#039;ve seen this kind of problem before with authors, for example, frequently wrapping scripts with pseudo-HTML-comments initially intended to hide the script from what are now very ancient browsers, none of which have been in use for over a decade.&lt;br /&gt;
&lt;br /&gt;
=== Styling Clashes ===&lt;br /&gt;
In addition to the aforementioned styling bug in IE, many existing stylesheets already include styles for the dt and dd elements, used in description lists (dl elements).  Authors attempting to incorporate figure or details into their existing pages would have to take care to avoid unintended styling clashes caused by selectors that aren&#039;t specific enough.  i.e.  It&#039;s common for authors to simply use the selector as &amp;quot;dt&amp;quot; or &amp;quot;dd&amp;quot;, rather than &amp;quot;dl&amp;gt;dt&amp;quot; and &amp;quot;dl&amp;gt;dd&amp;quot;, as that is currently unnecessary.  Authors will then have to adjust their styles, which could potentially cause unintended side affects to to the change in specificity of the selectors.&lt;br /&gt;
&lt;br /&gt;
=== Default Styles ===&lt;br /&gt;
The default styles for dt and dd elements is not ideal for figures.  As the dd element is usually indented with margin and/or padding, authors will usually be required to remove this with their own stylesheets, rather than being able to rely on more sensible defaults. It is true that eventually UA stylesheets may have special rules for &amp;quot;figure &amp;gt; dt&amp;quot; and the like, but during the transition period it will be extra work to remove inappropriate default styles.&lt;br /&gt;
&lt;br /&gt;
=== Structural Differences ===&lt;br /&gt;
Since authors are already familiar with the meanings and structure of dt and dd when used within dl, their very distinct meanings and structure when used within the figure and details may be confusing to authors.&lt;br /&gt;
&lt;br /&gt;
The dl element may contain multiple groups of dt and dd elements, wheres within figure and details, each element may only be used once.&lt;br /&gt;
&lt;br /&gt;
Within dl, a group must have one or more dt elements followed by one or more dd elements, whereas within figure, the elements may appear in any order.&lt;br /&gt;
&lt;br /&gt;
=== Semantic Differences ===&lt;br /&gt;
For the figure element, it&#039;s not very intuitive to determine which of either dt or dd represents the caption and which represents the content such as an image.  Some authors may interpret dd as being the description, which is what it means within dl, and thus assume that dd is meant for the caption, and the dt meant for the image or other content.  However, the spec defines these with the opposite meanings, with the understanding the dt, or title, is a synonym for caption.  Both alternatives points of view make some sense, but neither stands out as being obviously correct.  This will likely lead to a lot of authors using these elements in reverse.&lt;br /&gt;
&lt;br /&gt;
=== Unnecessary Elements ===&lt;br /&gt;
The dd element is completely unnecessary to distinguish it from the caption, which has its own element.  This combined with the extraneous div required for IE compatibility adds two extra elements that are not logically needed.  A previous iteration of the spec used the legend element for the caption, without any special wrapper just for the content.  This model seems much more intuitive and required less markup to use, and thus easier to get right.  Authors who do wish to have an extra wrapper around the content may use div if they choose, but should not be required to use it.&lt;br /&gt;
&lt;br /&gt;
When there is no caption, using figure then requires authors to use 3 extra elements, where they should only need one:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div&amp;amp;gt; &amp;amp;lt;!-- IE legacy workaround --&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;figure&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;dd&amp;amp;gt;&amp;amp;lt;img src=&amp;amp;quot;image&amp;amp;quot; alt=&amp;amp;quot;...&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/dd&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/figure&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will be unappealing to authors who may, as a result of the complexity, opt not to use the figure element.&lt;br /&gt;
&lt;br /&gt;
=== Aesthetics ===&lt;br /&gt;
Aesthetics is not necessarily the sole or most important concern. However, many authors seem to find the novel use of dt and dd unpleasant to read. dt and dd are relatively obscure elements, they are very short abbreviations, and their meaning in context is unclear, especially in figure. In particular, the following markup seems mysterious and strikes many as ugly and unintuitive:&lt;br /&gt;
&lt;br /&gt;
  &amp;amp;lt;figure&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;dd&amp;amp;gt;&amp;amp;lt;img src=&amp;amp;quot;image&amp;amp;quot; alt=&amp;amp;quot;...&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/dd&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;dt&amp;amp;gt;A Pair of Cats&amp;amp;lt;/dd&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;/figure&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
This seems to trigger a &amp;quot;yuck factor&amp;quot;, and it would be wise to avoid that. Aesthetics may seem like a relatively unimportant factor; however, the desire to avoid introducing new elements that led to dt/dd being used is itself largely an aesthetic concern.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Proposal 1 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;lt;legend&amp;gt;...&amp;lt;/legend&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;lt;legend&amp;gt;...&amp;lt;/legend&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
The proposal is to restore the use of the legend element for marking up the captions within both figure and details elements.&lt;br /&gt;
&lt;br /&gt;
== Proposal 2 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;lt;c&amp;gt;...&amp;lt;/c&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;lt;c&amp;gt;...&amp;lt;/c&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
The proposal is to introduce a new c element for marking up the captions within both figure and details elements.&lt;br /&gt;
&lt;br /&gt;
== Proposal 3 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;lt;fcaption&amp;gt;...&amp;lt;/fcaption&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;lt;dlabel&amp;gt;...&amp;lt;/dlabel&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Summary ===&lt;br /&gt;
The current HTML5 draft uses the dt and dd elements to markup the captions and content of the figure and details elements. This change proposal explains why the dt and dd elements are a poor choice for these purposes and proposes an alternative. Specifically, the proposal is to introduce a new fcaption element for marking up the caption within figure, and a dlabel element for use within details. The content portions of these elements (as opposed to the caption or label) would not have any special markup, they would be nested directly inside the figure or details element.&lt;br /&gt;
&lt;br /&gt;
=== Additional Rationale ===&lt;br /&gt;
&lt;br /&gt;
In addition to the rationale relative to the status quo in the spec, this proposal is better than some of the proposed alternatives.&lt;br /&gt;
&lt;br /&gt;
==== Follows HTML Precedent for Structured Elements ====&lt;br /&gt;
&lt;br /&gt;
Some HTML elements have relatively free content models, while others are &amp;quot;structured&amp;quot; - there are some or all child elements that have special meaning. Structured elements typically have helper elements that are specific to one element, or to a small family of related elements, to express their internal structure. Examples, from past versions of HTML, new in HTML5, and proposed for future versions of HTML:&lt;br /&gt;
&lt;br /&gt;
* table has thead, tfoot, tbody, td, th, tr, caption, col and colgroup.&lt;br /&gt;
* ul, ol and menu have li.&lt;br /&gt;
* fieldset has legend.&lt;br /&gt;
* applet and object have param.&lt;br /&gt;
* video and audio have source.&lt;br /&gt;
* dl has dt and dd.&lt;br /&gt;
* select and datalist have option and optgroup.&lt;br /&gt;
* ruby has rp and rt.&lt;br /&gt;
* datagrid was proposed to have a number of specialized child elements.&lt;br /&gt;
&lt;br /&gt;
In some cases (such as table or the list elements), the structured element can &#039;&#039;only&#039;&#039; have its specialized children. In other cases (fieldset, applet/object, or audio/video), the structured element can have relatively free content in addition to its specialized children.&lt;br /&gt;
&lt;br /&gt;
Thus, when introducing new structured elements such as figure and details, the normal design pattern for HTML is to introduce new specialized child elements to represent their structure. It is not the norm to reuse a very common element such as &amp;quot;h1&amp;quot; to represent specialized structure in a certain context. It is not the norm to reuse specialized child elements in a way that differs from their established content and meaning, as with dt/dd or legend. And it is unprecedented to use an attribute that can occur on any element to represent specialized structure, as with the proposed caption attribute. Furthermore, details and figure are not particularly closely related in purpose. One is a UI control, the other is a representation of the structure of prose documents. So it does not make sense for them to share a specialized child element. &lt;br /&gt;
&lt;br /&gt;
Applying a different design pattern for internal element structure to figure and details is likely to be confusing. The confusion of deviating from the usual HTML design pattern for this is likely to be greater than the cognitive cost of introducing no or fewer new elements.&lt;br /&gt;
&lt;br /&gt;
==== Avoids Clunky or Inappropriate Names ====&lt;br /&gt;
&lt;br /&gt;
The new element fltcap, suggested by another Change Proposal, appears confusing and mysterious. No one seems to get what it means on first reading. The expansion as &amp;quot;floating caption&amp;quot; seems confusing and semantically wrong. First, &amp;quot;floating caption&amp;quot; is not a very common term of art in publishing, but whenever it is used, it seems to refer to [http://www.google.com/search?client=safari&amp;amp;rls=en&amp;amp;q=floating+caption&amp;amp;ie=UTF-8&amp;amp;oe=UTF-8 captions overlayed on top of the image], not figure captions in general. Furthermore, a details control does not in general have a &amp;quot;caption&amp;quot;, floating or otherwise, rather it is a UI control and therefore is normally considered to have a &amp;quot;label&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The new element c is an extremely short and mysterious name. There is a limit to how many one-letter identifiers one can have in a language without rendering it unreadable or confusing, and they should be reserved for extremely common elements. Captions do not make the cut.&lt;br /&gt;
&lt;br /&gt;
Reusing legend does not seem like a good semantic fit for either figure or details. While a figure&#039;s caption is sometimes called a legend, the term &amp;quot;legend&amp;quot; in this context more often refers to the key next to a map or chart explaining how to read various visual elements. A details element is a UI element and those aren&#039;t ordinarily referred to as having a legend.&lt;br /&gt;
&lt;br /&gt;
h1 connotes &amp;quot;header&amp;quot;, which is not quite right for either figure or details.&lt;br /&gt;
&lt;br /&gt;
The caption attribute is good for figure, but not details. However, that proposal retains the dt/dd names for details. And those names remain clunky and non-obvious in the context of details (hard to remember which is which) and retain all of the general problems of using dt/dd for both elements. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;caption&amp;quot; and &amp;quot;label&amp;quot;, or variations thereof, are the most semantically appropriate names for the caption and label respectively on figure and details.&lt;br /&gt;
&lt;br /&gt;
==== Does Not Introduce Compatibility Problems ====&lt;br /&gt;
&lt;br /&gt;
Reuse of almost any existing element in an unrelated context introduces compatibility problems, whether &amp;quot;hard&amp;quot; problems with parsing or behavior, or &amp;quot;soft&amp;quot; problems with pre-existing author styles. This Change Proposal uses brand new elements and thus avoids all these problems, unlike the use of dt/dd, legend, label, caption, or h1. All of those are known to have some lesser or greater technical issues.&lt;br /&gt;
&lt;br /&gt;
==== Does Not Introduce Redundant Elements for the Content ====&lt;br /&gt;
&lt;br /&gt;
Semantically, and for purposes of UA behavior, we only really need to distinguish the caption part of the element. There is no need to wrap the remaining body part with a special element. True, they can be handy as a styling hook, but authors who need that styling hook can always use &amp;lt;div&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Proposal Details ===&lt;br /&gt;
&lt;br /&gt;
This proposal includes the following specific changes:&lt;br /&gt;
&lt;br /&gt;
1) Define a new element fcaption. Details would be approximately as follows:&lt;br /&gt;
&lt;br /&gt;
Categories: none&lt;br /&gt;
Contexts in which the element may be used: As the first or last child of a figure element.&lt;br /&gt;
Content model: flow content&lt;br /&gt;
Content attributes: global attributes&lt;br /&gt;
DOM interface: HTMLElement&lt;br /&gt;
Semantics: The fcaption element represents the caption of the figure that is its parent, if it has a parent that is a figure element.&lt;br /&gt;
&lt;br /&gt;
2) Define a new element dlabel. Details would be as above, but replacing mentions of &amp;quot;figure&amp;quot; with &amp;quot;details&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
3) Change figure as follows:&lt;br /&gt;
New content model: &amp;quot;Flow content, optionally either preceded by or followed by an fcaption element.&amp;quot;&lt;br /&gt;
New caption definition: &amp;quot;The first fcaption element child of the element, if any, represents the caption of the figure element&#039;s contents. If there is no child fcaption element, then there is no caption.&amp;quot;&lt;br /&gt;
New content definition: &amp;quot;All child elements other than the first fcaption element, if there are any, represent the element&#039;s contents. If there are no child elements besides the first fcaption, then there are no contents.&lt;br /&gt;
Update the examples appropriately.&lt;br /&gt;
Update the suggested UA stylesheet in the Rendering section as appropriate.&lt;br /&gt;
&lt;br /&gt;
4) Change details as follows:&lt;br /&gt;
  New content model: &amp;quot;One dlabel element, followed by Flow content.&amp;quot;&lt;br /&gt;
  New summary definition: &amp;quot;The first dlabel element child of the element, if any, represents the summary of the details. If there is no child dlabel element, the user agent should provide its own label (e.g. &amp;quot;Details&amp;quot;).&amp;quot;&lt;br /&gt;
  New details definition: &amp;quot;All child elements other than the first dlabel element, if there are any, represent the details. If there are no child elements besides the first dlabel, then there are no details.&lt;br /&gt;
  Update the examples appropriately.&lt;br /&gt;
  Update the suggested UA stylesheet in the Rendering section as appropriate.&lt;br /&gt;
&lt;br /&gt;
=== Impact ===&lt;br /&gt;
&lt;br /&gt;
This proposal would have a potential negative impact on authors: it would introduce two new elements relative to the current spec.&lt;br /&gt;
&lt;br /&gt;
However, the positive impact is arguably greater. The new elements would be more readable, more intuitive, and more in line with the standard HTML design pattern for structured elements. Thus, despite the addition of more elements, the overall increase in cognitive load will be less. In addition, there is no need to use &amp;amp;lt;div&amp;amp;gt; or any other wonky workarounds to get it to work in legacy UAs.&lt;br /&gt;
&lt;br /&gt;
The impact on implementations is trivial. fcaption and dlabel are trivial to implement, and the appearance and behavior can be mostly defined via stylesheet. This is not significantly more work than altering the rendering of dt and dd inside figure and details; in fact it may be less work in some implementations.&lt;br /&gt;
&lt;br /&gt;
The impact on conformance checkers and authoring tools is also trivial; neither approach is easier or harder to validate or generate.&lt;br /&gt;
&lt;br /&gt;
There is no direct impact on users either way.&lt;br /&gt;
&lt;br /&gt;
== Proposal 3b (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;lt;figcaption&amp;gt;...&amp;lt;/figcaption&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;lt;dsummary&amp;gt;...&amp;lt;/dsummary&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
Same as proposal 3, but with the element names &amp;quot;figcaption&amp;quot; and &amp;quot;dsummary&amp;quot; respectively.&lt;br /&gt;
&lt;br /&gt;
Reasoning: &amp;quot;figcaption&amp;quot; is more memorable. &amp;quot;dsummary&amp;quot; more accurately describes what the &amp;quot;label&amp;quot; of a &amp;lt;details&amp;gt; element is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proposal 4 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;amp;lt;caption&amp;gt;...&amp;amp;lt;/caption&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;amp;lt;label&amp;gt;...&amp;amp;lt;/label&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
The proposal is to use the caption element within figure and the label element within details for marking up the captions.&lt;br /&gt;
&lt;br /&gt;
CON: &amp;quot;caption&amp;quot; has significant unsolved parsing problems.&lt;br /&gt;
&lt;br /&gt;
CON: &amp;quot;label&amp;quot; use in &amp;lt;details&amp;gt; would prevent the summary of a &amp;lt;details&amp;gt; from containing a labeled &amp;lt;progress&amp;gt; element, which is common, and would make the content model ambiguous (since the contents of a &amp;lt;details&amp;gt; can itself contain labels).&lt;br /&gt;
&lt;br /&gt;
== Proposal 5 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;amp;lt;h1&amp;gt;...&amp;amp;lt;/h1&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;amp;lt;h1&amp;gt;...&amp;amp;lt;/h1&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
The proposal is to repurpose the h1 element for marking up the captions within both figure and details elements.&lt;br /&gt;
&lt;br /&gt;
CON: Styling issues in legacy UAs.&lt;br /&gt;
&lt;br /&gt;
CON: Content model would be ambiguous.&lt;br /&gt;
&lt;br /&gt;
== Proposal 6 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;amp;lt;p caption&amp;gt;...&amp;lt;/p&amp;gt;...&amp;lt;/figure&amp;gt;&amp;lt;/code&amp;gt;)==&lt;br /&gt;
===Summary===&lt;br /&gt;
The proposal is to introduce a caption attribute that may be used on an element within figure to denote the contents of that element as being the caption. This proposal does not address the details element.&lt;br /&gt;
&lt;br /&gt;
===Rationale===&lt;br /&gt;
* This allows the most intuitive name to be used, without the problems caused by actually using &amp;amp;lt;caption&amp;gt; as an element name.  &lt;br /&gt;
* It roughly parallels the existing uses of attributes to tie together an element and some containing element with additional semantics, as seen in &amp;lt;time pubdate&amp;gt;.&lt;br /&gt;
* It does not alter the existing semantics of the element it is applied to; a &amp;amp;lt;ul caption&amp;gt; is still a &amp;amp;lt;ul&amp;gt;, a &amp;amp;lt;time caption&amp;gt; is still a &amp;amp;lt;time&amp;gt;, etc.&lt;br /&gt;
* It forgoes the need for a &#039;wrapper&#039; element when you just want to immediately apply a special element.  For example, if you are putting photographs in a figure, with the only caption being the time it was taken, it would be best if you could simply put in the &amp;amp;lt;time&amp;gt; without a wrapper.  That is, &amp;amp;lt;figure&amp;gt;&amp;amp;lt;img src=foo&amp;gt;&amp;amp;lt;time caption datetime=2010-01-11&amp;gt;January 11th, 2010&amp;amp;lt;/time&amp;gt;&amp;amp;lt;/figure&amp;gt; is preferable to &amp;amp;lt;figure&amp;gt;&amp;amp;lt;img src=foo&amp;gt;&amp;amp;lt;caption&amp;gt;&amp;amp;lt;time datetime=2010-01-11&amp;gt;January 11th, 2010&amp;amp;lt;/time&amp;gt;&amp;amp;lt;/caption&amp;gt;&amp;amp;lt;/figure&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Details===&lt;br /&gt;
* Figure content model should be changed to &amp;quot;Flow Content&amp;quot;.&lt;br /&gt;
* The third paragraph in the prose (explaining the use of the &amp;amp;lt;dt&amp;gt; element) should be changed to roughly: &amp;quot;The first child element with the caption attribute, if any, represents the caption of the figure element&#039;s contents. If there is no child element with the caption attribute, then there is no caption.&amp;quot;&lt;br /&gt;
* The fourth paragraph in the prose (explaining the use of the &amp;amp;lt;dd&amp;gt; element) should be changed to roughly: &amp;quot;Any additional contents of the element beyond the caption (defined above), if any, represents the element&#039;s contents. If there are no additional contents, then there are no contents.&amp;quot;&lt;br /&gt;
* &amp;quot;caption&amp;quot; added to the list of global attributes in the &amp;quot;Global Attributes&amp;quot; section.  In its section it should contain roughly: &amp;quot;All HTML elements in the Flow Content category may have the caption content attribute set. The caption attribute is a boolean attribute.  When caption is set on an element that is a child of a figure element, the first such element defines the caption for that figure element.  It is invalid for a figure to have multiple child elements with the caption attribute set; in such a case, the first such element is the caption for the figure and the caption attribute is invalid and has no effect on subsequent elements.  The caption attribute is invalid and has no effect on any element that is not a direct child of a figure element.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Impact===&lt;br /&gt;
Easy denotation of figure captions, without any compatibility hacks that may persist long into the future.&lt;br /&gt;
&lt;br /&gt;
== Proposal 7 (&amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;lt;fcaption&amp;gt;...&amp;lt;/fcaption&amp;gt;...&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;lt;dlabel&amp;gt;...&amp;lt;/dlabel&amp;gt;...&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;figure&amp;gt;&amp;lt;fcaption&amp;gt;...&amp;lt;/fcaption&amp;gt;&amp;lt;fbody&amp;gt;...&amp;lt;/fbody&amp;gt;&amp;lt;/figure&amp;gt;; &amp;lt;details&amp;gt;&amp;lt;dlabel&amp;gt;...&amp;lt;/dlabel&amp;gt;&amp;lt;dbody&amp;gt;...&amp;lt;/dbody&amp;gt;&amp;lt;/details&amp;gt;&amp;lt;/code&amp;gt;) ==&lt;br /&gt;
&lt;br /&gt;
=== Summary ===&lt;br /&gt;
&lt;br /&gt;
The current HTML5 draft uses the dt and dd elements to markup the captions and content of the figure and details elements. This change proposal explains why the dt and dd elements are a poor choice for these purposes and proposes an alternative. Specifically, the proposal is to introduce a new fcaption element for marking up the caption within figure, and a dlabel element for use within details to replace dt. In addition, it proposes an optional fbody element for use inside figure, and an optional dbody element for use inside details, to mark up the content/body and replace dd.&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4324</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4324"/>
		<updated>2010-01-09T09:13:52Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* What are the various versions of the spec? */ Marked multi-page Next-gen HTML as having different views&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is HTML5. The WHATWG also works on Web Workers and occasionally specifications outside WHATWG space are discussed on the WHATWG mailing list and forwarded when appropriate.&lt;br /&gt;
&lt;br /&gt;
In the past it has worked on Web Forms 2.0 and Web Controls 1.0. Web Forms 2.0 has been integrated into HTML5 and Web Controls 1.0 has been abandoned for now, awaiting what [http://www.w3.org/TR/xbl/ XBL 2.0] will bring us.&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily subscribe to the WHATWG [http://whatwg.org/mailing-list mailing lists]. You may also [http://blog.whatwg.org/w3c-restarts-html-effort join the the W3C&#039;s new HTMLWG] by going through the slightly longer application process.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People send e-mail to [http://www.whatwg.org/mailing-list#specs the mailing list]. The editor then reads that [http://www.whatwg.org/issues/ feedback] and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc) makes language design decisions intended to address everyone&#039;s needs as well as possible while keeping the language consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the editor to change the spec any more (e.g. because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach -- there&#039;s no guarantee that everyone will be happy! There is also no voting.&lt;br /&gt;
&lt;br /&gt;
There is a small oversight committee (known as the &amp;quot;WHATWG members&amp;quot;, see the [http://www.whatwg.org/charter charter]) who have the authority to override or replace the editor if he starts making bad decisions.&lt;br /&gt;
&lt;br /&gt;
Currently the editor is Ian Hickson.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
Feedback on a feature should be sent to whatwg@whatwg.org (but you have to [http://whatwg.org/mailing-list#specs join the mailing list] first), or ian@hixie.ch. All feedback will receive a reply in due course.&lt;br /&gt;
&lt;br /&gt;
If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g. because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editor know by either e-mailing him (ian@hixie.ch), or contacting him on [[IRC]] (Hixie on Freenode). Requests for priority feedback handling are handled confidentially so other implementors won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
Questions and requests for clarifications should be asked either on the mailing list or on [[IRC]], in the #whatwg channel on Freenode.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* On a regular basis, especially around explicit call-for-comments, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward.&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential of fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
# Research the use cases and requirements by discussing the issue with authors and implementors.&lt;br /&gt;
# Come up with a clear description of the problem that needs to be solved.&lt;br /&gt;
# Discuss your proposal with authors and implementors. Read the responses. Listen to the feedback. Consider whether your ideas are good solutions to the use cases and requirements put forward. Discussions here should be done in public, e.g. on an archived public mailing list or documented in blogs.&lt;br /&gt;
# Get implementors to commit to implementing the feature. If you can&#039;t get several implementors to implement the feature, then get at least one user agent to implement it experimentally. Experimental implementations should be publicly available.&lt;br /&gt;
# Bring the experimental implementations to the attention of the spec&#039;s editor. Document the experience found from any implementations, the use cases and requirements that were found in the first step, the data that the design was based on.&lt;br /&gt;
# Demonstrate the importance of the problem. Demonstrate that the solution is one that will be used correctly and widely enough for it to solve the stated problem.&lt;br /&gt;
# Participate in the subsequent design discussions, considering all the proposals carefully. Typically at this step the original design gets thrown out and a significantly better design is developed, informed by the previous research, new research, and implementation and author experience with experimental implementations. Sometimes, the idea is abandoned at this stage.&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which should start a bit before implementations start being written to the spec. (Test suites usually find as many problems with implementations as they do with the spec; they aren&#039;t just for finding browser bugs.) We don&#039;t yet have a good story with respect to test suites, sadly. If you want to help us out, let the mailing list know! Be aware, though, it&#039;s a lot of work.&lt;br /&gt;
&lt;br /&gt;
== HTML5 ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? === &lt;br /&gt;
&lt;br /&gt;
[http://www.whatwg.org/specs/web-apps/current-work/ HTML5] is the main focus of the WHATWG community and also that of the W3C HTML Working Group. HTML5 is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML (HTML5) and XML (XHTML5) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before. Yet they are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec.&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [http://svn.whatwg.org/ subversion repository]. You may use any svn client to check out the latest version and use your clients diff tools in order compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* You may use the online [http://html5.org/tools/web-apps-tracker (X)HTML5 Tracking tool]. The tool provides an online interface for selecting and comparing revisions of the spec.&lt;br /&gt;
&lt;br /&gt;
* There is a commit-watchers mailing list that is notified of every edit: http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org&lt;br /&gt;
&lt;br /&gt;
* The W3C provide a Web view of their CVS mirror of the HTML5 spec: http://dev.w3.org/cvsweb/html5/spec/Overview.html&lt;br /&gt;
&lt;br /&gt;
* The W3C provide diff-marked HTML versions for each change that affect the W3C copy of the spec by e-mail: http://lists.w3.org/Archives/Public/public-html-diffs/latest&lt;br /&gt;
&lt;br /&gt;
* Non-editorial changes get broadcast on the WHATWG Twitter feed: http://twitter.com/WHATWG&lt;br /&gt;
&lt;br /&gt;
* All changes that affect the W3C copy of the spec get broadcast on the HTML5 Twitter feed: http://twitter.com/HTML5&lt;br /&gt;
&lt;br /&gt;
* The latest changes are visible in coloured diff form: http://whatwg.org/specs/web-apps/current-work/index-diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the spec? ===&lt;br /&gt;
&lt;br /&gt;
The specs that the WHATWG works on are available in a variety of forms.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!WHATWG&lt;br /&gt;
!WHATWG Web Applications&lt;br /&gt;
!W3C/IETF&lt;br /&gt;
|-&lt;br /&gt;
!Next-generation HTML (including&amp;amp;nbsp;HTML5)&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/ Single-page]*, &#039;&#039;&#039;[http://whatwg.org/html Multi-page]&#039;&#039;&#039;*, [http://www.whatwg.org/specs/web-apps/current-work/html5-a4.pdf A4 (PDF)], [http://www.whatwg.org/specs/web-apps/current-work/html5-letter.pdf Letter (PDF)]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html Web Applications 1.0 (complete)]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!HTML5&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[http://dev.w3.org/html5/spec/Overview.html Single-page]*, [http://dev.w3.org/html5/spec/spec.html Multi-page]&lt;br /&gt;
|-&lt;br /&gt;
!Microdata&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#microdata Microdata multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#microdata Microdata section]&lt;br /&gt;
|[http://dev.w3.org/html5/md/Overview.html md]&lt;br /&gt;
|-&lt;br /&gt;
!2D Context&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-2d-context The 2D context multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#the-2d-context 2D Context section]&lt;br /&gt;
|[http://dev.w3.org/html5/2dcontext/Overview.html 2dcontext]&lt;br /&gt;
|-&lt;br /&gt;
!Communications&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages Cross-document messaging multi-page segment] and [http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#channel-messaging Channel messaging multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#crossDocumentMessages Cross-document messaging section] and [http://www.whatwg.org/specs/web-apps/current-work/complete.html#channel-messaging Channel messaging section]&lt;br /&gt;
|[http://dev.w3.org/html5/postmsg/Overview.html Communications]&lt;br /&gt;
|-&lt;br /&gt;
!Device Element&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#devices The device element multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#devices The device element section]&lt;br /&gt;
|[http://dev.w3.org/html5/html-device/ HTML Device]&lt;br /&gt;
|-&lt;br /&gt;
!Web Workers&lt;br /&gt;
|[http://whatwg.org/ww Web Workers]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#workers Web Workers section]&lt;br /&gt;
|[http://dev.w3.org/html5/workers/Overview.html Web Workers]&lt;br /&gt;
|-&lt;br /&gt;
!Web Storage&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#webstorage Web Storage section]&lt;br /&gt;
|[http://dev.w3.org/html5/webstorage/ Web Storage]&lt;br /&gt;
|-&lt;br /&gt;
!Web Sockets API&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#network Web Sockets section]&lt;br /&gt;
|[http://dev.w3.org/html5/websockets/ Web Sockets API]&lt;br /&gt;
|-&lt;br /&gt;
!Web Sockets Protocol&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#websocket-protocol Web Socket Protocol section]&lt;br /&gt;
|[http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol The Web Socket Protocol] (IETF)&lt;br /&gt;
|-&lt;br /&gt;
!Server-Sent Events&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#server-sent-events Sever-sent Events section]&lt;br /&gt;
|[http://dev.w3.org/html5/eventsource/ Server-sent Events]&lt;br /&gt;
|-&lt;br /&gt;
!Web SQL Database (stalled)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|[http://dev.w3.org/html5/webdatabase/ Web SQL Database]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All of the above are generated from one [http://www.whatwg.org/specs/web-apps/current-work/source source document].&lt;br /&gt;
&lt;br /&gt;
(*) Several of the specs above, marked with an asterisk, can further be viewed in three different ways, by toggling the radio buttons at the top right of those documents. Here are some shortcuts for viewing the multipage version of the HTML specification in these three different ways:&lt;br /&gt;
* As a normal spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=complete&lt;br /&gt;
* Hiding all the user-agent-specific material (&amp;quot;author view&amp;quot;): http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=author&lt;br /&gt;
* Highlighting all the user-agent-specific material: http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=highlight&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites that might help you work out what you can use in the meantime:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, them remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Finished&amp;quot; is a big deal... You&#039;ll be able to use HTML5 long before then. See [[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&lt;br /&gt;
&lt;br /&gt;
It is estimated by the editor that HTML5 will reach the W3C Candidate Recommendation stage during 2012. That doesn&#039;t mean you can&#039;t start using it yet, though. Different parts of the specification are at different maturity levels. Some sections are already relatively stable and there are implementations that are already quite close to completion, and those features can be used today (e.g. &amp;amp;lt;canvas&amp;amp;gt;). But other sections are still being actively worked on and changed regularly, or not even written yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see annotations in the margins showing the estimated stability of each section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The possible states are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Idea; yet to be specified&#039;&#039; -- the section is a placeholder.&lt;br /&gt;
* &#039;&#039;First draft&#039;&#039; -- An early stage.&lt;br /&gt;
* &#039;&#039;Working draft&#039;&#039; -- An early stage, but more mature than just &amp;quot;first draft&amp;quot;.&lt;br /&gt;
* &#039;&#039;Last call for comments&#039;&#039; -- The section is nearly done, but there may be feedback still to be processed. Send feedback sooner rather than later, or it might be too late.&lt;br /&gt;
* &#039;&#039;Awaiting implementation feedback&#039;&#039; -- The section is basically done, but might change in response to feedback from implementors. Major changes are unlikely past this point unless it is found that the feature, as specified, really doesn&#039;t work well.&lt;br /&gt;
* &#039;&#039;Implemented and widely deployed&#039;&#039; -- the feature is specified and complete. Once a section is interoperably implemented, it&amp;amp;#8217;s quite stable and unlikely to change significantly. Any changes to such a section would most likely only be editorial in nature, particularly if the feature is already in widespread use.&lt;br /&gt;
&lt;br /&gt;
There are also two special states:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Being edited right now&#039;&#039; -- the section is in high flux and is actively being edited. Contact Hixie on [[IRC]] if you have immediate feedback.&lt;br /&gt;
* &#039;&#039;Being considered for removal&#039;&#039; -- for one reason or another, the section is being considered for removal. Send feedback soon to help with the decision.&lt;br /&gt;
&lt;br /&gt;
The point to all this is that you shouldn&amp;amp;#8217;t place too much weight on the status of the specification as a whole. You need to consider the stability and maturity level of each section individually.&lt;br /&gt;
&lt;br /&gt;
It is estimated, again by the editor, that HTML5 will reach a W3C recommendation in the year 2022 or later. This will be approximately 18-20 years of development, since beginning in mid-2004. That&#039;s actually not that crazy, though. Work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hasn&#039;t reached the level that we want to reach with HTML5. There is no real test suite, there are many parts of the spec that are lacking real implementations, there are big parts that aren&#039;t interoperable, and the spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than it does now.&lt;br /&gt;
&lt;br /&gt;
For a spec to become a REC today, it requires two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
(In the interests of full disclosure, the W3C&#039;s [http://www.w3.org/2007/03/HTML-WG-charter.html#deliverables official line] is that the HTML5 spec will be complete, with interoperable implementations, in late 2010. However, that same timetable gave a date for First Public Working Draft that was eight months premature, and the W3C, as of the predicted date for the third milestone, Candidate Recommendation, had still not come anywhere near reaching the second milestone, Last Call. You can make your own judgements regarding the W3C timetable&#039;s credibility.)&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft has already started implementing parts of HTML5 in IE8.&lt;br /&gt;
&lt;br /&gt;
HTML5 is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]]—or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see HTML5 feature proposals below.&lt;br /&gt;
&lt;br /&gt;
== HTML5 syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML5 finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What will the DOCTYPE be? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary.  However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
=== How are pre-HTML5 documents parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by HTML5. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax of HTML5 therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed using the HTML5 parser.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [http://validator.whatwg.org/ HTML5 validator].&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in HTML5. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML5 use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike XHTML1, XHTML5 &#039;&#039;must not&#039;&#039; be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 to HTML5.&lt;br /&gt;
&lt;br /&gt;
HTML5 also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
No, HTML and XML have [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|many significant differences]], particularly parsing requirements, and you cannot process one using tools designed for the other. However, since HTML5 is defined in terms of the DOM, in most cases there are both HTML and XHTML serializations available that can represent the same document. There are, however, a few differences explained later that make it impossible to represent some HTML documents accurately as XHTML and vice versa. &lt;br /&gt;
&lt;br /&gt;
If you wish to process an HTML document as XHTML, it requires that you and convert it into XHTML first; and vice versa for processing XHTML as HTML.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML5 is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML5 does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to HTML5, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does HTML5 legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML5 feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;lt;a&amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML5. The main reason this isn&#039;t in HTML5 is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;lt;a&amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;legend&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;legend&amp;gt;Apples&amp;lt;/legend&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This is a styling problem and should be fixed in CSS. There&#039;s no reason to add a grouping element to HTML, as the semantics are already unambiguous.&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements. The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; research and opinions are being gathered that support the use of the &amp;amp;lt;cite&amp;gt; element to markup the names of speakers (e.g. for quotations). Please contribute yours:&lt;br /&gt;
* [[Cite_element#examples_in_the_wild|cite element: examples in the wild of speakers marked up with cite]]&lt;br /&gt;
* [[Cite_element#opinions|cite element: opinions on use of cite to markup names of speakers]]&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;time&amp;gt; element should allow vague times (&amp;quot;March&amp;quot;) and times from ancient history to be marked up ===&lt;br /&gt;
&lt;br /&gt;
This has been discussed a number of times. For an overview of the topic, please see these e-mails:&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018888.html&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/021745.html&lt;br /&gt;
At this stage, as discussed in the second of those e-mails, the best way forward is to demonstrate that there are communities interested in solving this problem, by using existing techniques such as microdata to address it. If such a solution achieves a high adoption rate, that will substantially increase the strength of the proposals.&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
Not especially. There are people who for a number of reasons are unable to join the W3C group, and there are others who are unable to join the WHATWG group. The editor is in both groups and takes all input into account -- and there are far more places where input on HTML5 is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc).&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The editor takes feedback from everyone into account and does not look at the source of those arguments for technical arguments.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki]&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/introduction.html#history0 The history section in HTML5 itself]&lt;br /&gt;
&lt;br /&gt;
== Web Workers ==&lt;br /&gt;
&lt;br /&gt;
Besides HTML5 the WHATWG works on [http://www.whatwg.org/specs/web-workers/current-work/ Web Workers]. It does this together with the W3C WebApps Working Group.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
Please reply inline or make the reply self-contained.&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your e-mail makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your e-mail backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post e-mails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write e-mail.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write e-mail?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;br /&gt;
&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
H&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Change_Proposal:_figure_and_details&amp;diff=4318</id>
		<title>Change Proposal: figure and details</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Change_Proposal:_figure_and_details&amp;diff=4318"/>
		<updated>2010-01-08T15:02:40Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Added rationale against dt/dd elements and added placeholders for various proposals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
The current HTML5 draft uses the dt and dd elements to markup the captions and content of the figure and details elements.  This change proposal explains why the dt and dd elements are a poor choice for these purposes and proposes an alternative.&lt;br /&gt;
----&lt;br /&gt;
== Rationale Against Using dt/dd for figure and details Elements ==&lt;br /&gt;
&lt;br /&gt;
=== Backwards Compatibility ===&lt;br /&gt;
Due to IE&#039;s legacy parsing issues, the dt and dd elements create problems for authors attempting to use and style these elements. The simplest workaround (wrapping both figure and details in an extra div) that authors would need to apply to avoid these issues is not intuitive, as clearly demonstrated by the wide range of alternative solutions that were attempted prior to its discovery.&lt;br /&gt;
&lt;br /&gt;
=== Legacy Cruft ===&lt;br /&gt;
This will likely lead to a lot of confusion among authors, at least initially, and ultimately end up becoming extraneous markup that authors just include without really understanding why, even after the current generation of browsers are long since dead.&lt;br /&gt;
&lt;br /&gt;
We&#039;ve seen this kind of problem before with authors, for example, frequently wrapping scripts with pseudo-HTML-comments initially intended to hide the script from what are now very ancient browsers, none of which have been in use for over a decade.&lt;br /&gt;
&lt;br /&gt;
=== Styling Clashes ===&lt;br /&gt;
In addition to the aforementioned styling bug in IE, many existing stylesheets already include styles for the dt and dd elements, used in description lists (dl elements).  Authors attempting to incorporate figure or details into their existing pages would have to take care to avoid unintended styling clashes caused by selectors that aren&#039;t specific enough.  i.e.  It&#039;s common for authors to simply use the selector as &amp;quot;dt&amp;quot; or &amp;quot;dd&amp;quot;, rather than &amp;quot;dl&amp;gt;dt&amp;quot; and &amp;quot;dl&amp;gt;dd&amp;quot;, as that is currently unnecessary.  Authors will then have to adjust their styles, which could potentially cause unintended side affects to to the change in specificity of the selectors.&lt;br /&gt;
&lt;br /&gt;
=== Default Styles ===&lt;br /&gt;
The default styles for dt and dd elements is not ideal for figures.  As the dd element is usually indented with margin and/or padding, authors will usually be required to remove this with their own stylesheets, rather than being able to rely on more sensible defaults.&lt;br /&gt;
&lt;br /&gt;
=== Structural Differences ===&lt;br /&gt;
Since authors are already familiar with the meanings and structure of dt and dd when used within dl, their very distinct meanings and structure when used within the figure and details may be confusing to authors.&lt;br /&gt;
&lt;br /&gt;
The dl element may contain multiple groups of dt and dd elements, wheres within figure and details, each element may only be used once.&lt;br /&gt;
&lt;br /&gt;
Within dl, a group must have one or more dt elements followed by one or more dd elements, whereas within figure, the elements may appear in any order.&lt;br /&gt;
&lt;br /&gt;
=== Semantic Differences ===&lt;br /&gt;
For the figure element, it&#039;s not very intuitive to determine which of either dt or dd represents the caption and which represents the content such as an image.  Some authors may interpret dd as being the description, which is what it means within dl, and thus assume that dd is meant for the caption, and the dt meant for the image or other content.  However, the spec defines these with the opposite meanings, with the understanding the dt, or title, is a synonym for caption.  Both alternatives points of view make some sense, but neither stands out as being obviously correct.  This will likely lead to a lot of authors using these elements in reverse.&lt;br /&gt;
&lt;br /&gt;
=== Unnecessary Elements ===&lt;br /&gt;
The dd element is completely unnecessary to distinguish it from the caption, which has its own element.  This combined with the extraneous div required for IE compatibility adds two extra elements that are not logically needed.  A previous iteration of the spec used the legend element for the caption, without any special wrapper just for the content.  This model seems much more intuitive and required less markup to use, and thus easier to get right.  Authors who do wish to have an extra wrapper around the content may use div if they choose, but should not be required to use it.&lt;br /&gt;
&lt;br /&gt;
When there is no caption, using figure then requires authors to use 3 extra elements, where they should only need one:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;div&amp;amp;gt; &amp;amp;lt;!-- IE legacy workaround --&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;figure&amp;amp;gt;&lt;br /&gt;
     &amp;amp;lt;dd&amp;amp;gt;&amp;amp;lt;img src=&amp;amp;quot;image&amp;amp;quot; alt=&amp;amp;quot;...&amp;amp;quot;&amp;amp;gt;&amp;amp;lt;/dd&amp;amp;gt;&lt;br /&gt;
   &amp;amp;lt;/figure&amp;amp;gt;&lt;br /&gt;
 &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will be unappealing to authors who may, as a result of the complexity, opt not to use the figure element.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Proposal 1 ==&lt;br /&gt;
The proposal is to restore the use of the legend element for marking up the captions within both figure and details elements.&lt;br /&gt;
&lt;br /&gt;
== Proposal 2 ==&lt;br /&gt;
The proposal is to introduce a new c element for marking up the captions within both figure and details elements.&lt;br /&gt;
&lt;br /&gt;
== Proposal 3 ==&lt;br /&gt;
The proposal is to introduce a new fcaption element for marking up the caption within figure, and a dlabel element for use within details.&lt;br /&gt;
&lt;br /&gt;
== Proposal 4 ==&lt;br /&gt;
The proposal is to use the caption element within figure and the label element within details for marking up the captions.&lt;br /&gt;
&lt;br /&gt;
== Proposal 5 ==&lt;br /&gt;
The proposal is to repurpose the h1 element for marking up the captions within both figure and details elements.&lt;br /&gt;
&lt;br /&gt;
== Proposal 6==&lt;br /&gt;
The proposal is to introduce a caption attribute that may be used on an element within figure and details to denote the contents of that element as being the caption.&lt;br /&gt;
&lt;br /&gt;
(caption attribute may be allowed on a limited set of elements, or maybe just p elements)&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4317</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=FAQ&amp;diff=4317"/>
		<updated>2010-01-08T12:09:59Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* What are the various versions of the spec? */ Reformatted into a table.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The WHATWG ==&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
The Web Hypertext Application Technology Working Group (WHATWG) is a growing community of people interested in evolving the Web. It focuses primarily on the development of HTML and APIs needed for Web applications.&lt;br /&gt;
&lt;br /&gt;
The WHATWG was founded by individuals of Apple, the Mozilla Foundation, and Opera Software in 2004, after a W3C workshop. Apple, Mozilla and Opera were becoming increasingly concerned about the W3C’s direction with XHTML, lack of interest in HTML and apparent disregard for the needs of real-world authors. So, in response, these organisations set out with a mission to address these concerns and the Web Hypertext Application Technology Working Group was born.&lt;br /&gt;
&lt;br /&gt;
=== What is the WHATWG working on? === &lt;br /&gt;
&lt;br /&gt;
The WHATWG&#039;s main focus is HTML5. The WHATWG also works on Web Workers and occasionally specifications outside WHATWG space are discussed on the WHATWG mailing list and forwarded when appropriate.&lt;br /&gt;
&lt;br /&gt;
In the past it has worked on Web Forms 2.0 and Web Controls 1.0. Web Forms 2.0 has been integrated into HTML5 and Web Controls 1.0 has been abandoned for now, awaiting what [http://www.w3.org/TR/xbl/ XBL 2.0] will bring us.&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved? === &lt;br /&gt;
&lt;br /&gt;
There are lots of ways you can get involved, take a look and see &#039;&#039;[[What you can do]]&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
=== Is participation free? === &lt;br /&gt;
&lt;br /&gt;
Yes, everyone can contribute. There are no memberships fees involved, it&#039;s an open process. You may easily subscribe to the WHATWG [http://whatwg.org/mailing-list mailing lists]. You may also [http://blog.whatwg.org/w3c-restarts-html-effort join the the W3C&#039;s new HTMLWG] by going through the slightly longer application process.&lt;br /&gt;
&lt;br /&gt;
== The WHATWG Process ==&lt;br /&gt;
&lt;br /&gt;
=== How does the WHATWG work? ===&lt;br /&gt;
&lt;br /&gt;
People send e-mail to [http://www.whatwg.org/mailing-list#specs the mailing list]. The editor then reads that [http://www.whatwg.org/issues/ feedback] and, taking it into account along with research, studies, and feedback from many other sources (blogs, forums, IRC, etc) makes language design decisions intended to address everyone&#039;s needs as well as possible while keeping the language consistent.&lt;br /&gt;
&lt;br /&gt;
This continues, with people sending more feedback, until nobody is able to convince the editor to change the spec any more (e.g. because two people want opposite things, and the editor has considered all the information available and decided that one of the two proposals is the better one).&lt;br /&gt;
&lt;br /&gt;
This is not a consensus-based approach -- there&#039;s no guarantee that everyone will be happy! There is also no voting.&lt;br /&gt;
&lt;br /&gt;
There is a small oversight committee (known as the &amp;quot;WHATWG members&amp;quot;, see the [http://www.whatwg.org/charter charter]) who have the authority to override or replace the editor if he starts making bad decisions.&lt;br /&gt;
&lt;br /&gt;
Currently the editor is Ian Hickson.&lt;br /&gt;
&lt;br /&gt;
=== How should tool developers, screen reader developers, browser vendors, search engine vendors, and other implementors interact with the WHATWG? ===&lt;br /&gt;
&lt;br /&gt;
Feedback on a feature should be sent to whatwg@whatwg.org (but you have to [http://whatwg.org/mailing-list#specs join the mailing list] first), or ian@hixie.ch. All feedback will receive a reply in due course.&lt;br /&gt;
&lt;br /&gt;
If you want feedback to be dealt with faster than &amp;quot;eventually&amp;quot;, e.g. because you are about to work on that feature and need the spec to be updated to take into account all previous feedback, let the editor know by either e-mailing him (ian@hixie.ch), or contacting him on [[IRC]] (Hixie on Freenode). Requests for priority feedback handling are handled confidentially so other implementors won&#039;t know that you are working on that feature.&lt;br /&gt;
&lt;br /&gt;
Questions and requests for clarifications should be asked either on the mailing list or on [[IRC]], in the #whatwg channel on Freenode.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for removing bad ideas from a specification? ===&lt;br /&gt;
&lt;br /&gt;
There are several processes by which we trim weeds from the specifications.&lt;br /&gt;
&lt;br /&gt;
* On a regular basis, especially around explicit call-for-comments, we go through every section and mark areas as being considered for removal. This happened early in 2008 with the data templates, repetition blocks, and DFN-element cross references, for example. If no feedback is received to give us strong reasons to keep such features, then they eventually are removed altogether.&lt;br /&gt;
&lt;br /&gt;
* Anyone can ask for a feature to be removed; such feedback is considered like all other feedback and is based on the merits of the arguments put forward.&lt;br /&gt;
&lt;br /&gt;
* If browsers don&#039;t widely implement a feature, or if authors don&#039;t use a feature, or if the uses of the feature are inconsequential of fundamentally wrong or damaging, then, after due consideration, features will be removed.&lt;br /&gt;
&lt;br /&gt;
Removing features is a critical part of spec development.&lt;br /&gt;
&lt;br /&gt;
=== Is there a process for adding new features to a specification? ===&lt;br /&gt;
&lt;br /&gt;
The process is rather informal, but basically boils down to this:&lt;br /&gt;
# Research the use cases and requirements by discussing the issue with authors and implementors.&lt;br /&gt;
# Come up with a clear description of the problem that needs to be solved.&lt;br /&gt;
# Discuss your proposal with authors and implementors. Read the responses. Listen to the feedback. Consider whether your ideas are good solutions to the use cases and requirements put forward. Discussions here should be done in public, e.g. on an archived public mailing list or documented in blogs.&lt;br /&gt;
# Get implementors to commit to implementing the feature. If you can&#039;t get several implementors to implement the feature, then get at least one user agent to implement it experimentally. Experimental implementations should be publicly available.&lt;br /&gt;
# Bring the experimental implementations to the attention of the spec&#039;s editor. Document the experience found from any implementations, the use cases and requirements that were found in the first step, the data that the design was based on.&lt;br /&gt;
# Demonstrate the importance of the problem. Demonstrate that the solution is one that will be used correctly and widely enough for it to solve the stated problem.&lt;br /&gt;
# Participate in the subsequent design discussions, considering all the proposals carefully. Typically at this step the original design gets thrown out and a significantly better design is developed, informed by the previous research, new research, and implementation and author experience with experimental implementations. Sometimes, the idea is abandoned at this stage.&lt;br /&gt;
&lt;br /&gt;
If the idea survives the above design process, the spec will be eventually updated to reflect the new design. Implementations will then be updated to reflect the new design (if they aren&#039;t, that indicates the new design is not good, and it will be reworked or removed). The spec will be updated to fix the many problems discovered by authors and implementors, over a period of several years, as more authors and implementors are exposed to the design. Eventually, a number of provably interoperable implementations are deployed. At this point development of the feature is somewhat frozen.&lt;br /&gt;
&lt;br /&gt;
Writing a comprehensive test suite is also an important step, which should start a bit before implementations start being written to the spec. (Test suites usually find as many problems with implementations as they do with the spec; they aren&#039;t just for finding browser bugs.) We don&#039;t yet have a good story with respect to test suites, sadly. If you want to help us out, let the mailing list know! Be aware, though, it&#039;s a lot of work.&lt;br /&gt;
&lt;br /&gt;
== HTML5 ==&lt;br /&gt;
&lt;br /&gt;
=== What is HTML5? === &lt;br /&gt;
&lt;br /&gt;
[http://www.whatwg.org/specs/web-apps/current-work/ HTML5] is the main focus of the WHATWG community and also that of the W3C HTML Working Group. HTML5 is a new version of HTML4, XHTML1, and DOM Level 2 HTML addressing many of the issues of those specifications while at the same time enhancing (X)HTML to more adequately address Web applications. Besides defining a markup language that can be written in both HTML (HTML5) and XML (XHTML5) it also defines many APIs that form the basis of the Web architecture. Some of these APIs were known as &amp;quot;DOM Level 0&amp;quot; and were never documented before. Yet they are extremely important for browser vendors to support existing Web content and for authors to be able to build Web applications.&lt;br /&gt;
&lt;br /&gt;
=== How can I keep track of changes to the spec? === &lt;br /&gt;
&lt;br /&gt;
There are a number of ways to track changes to the spec.&lt;br /&gt;
&lt;br /&gt;
* The specification is available in the [http://svn.whatwg.org/ subversion repository]. You may use any svn client to check out the latest version and use your clients diff tools in order compare revisions and see what has been changed.&lt;br /&gt;
&lt;br /&gt;
* You may use the online [http://html5.org/tools/web-apps-tracker (X)HTML5 Tracking tool]. The tool provides an online interface for selecting and comparing revisions of the spec.&lt;br /&gt;
&lt;br /&gt;
* There is a commit-watchers mailing list that is notified of every edit: http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org&lt;br /&gt;
&lt;br /&gt;
* The W3C provide a Web view of their CVS mirror of the HTML5 spec: http://dev.w3.org/cvsweb/html5/spec/Overview.html&lt;br /&gt;
&lt;br /&gt;
* The W3C provide diff-marked HTML versions for each change that affect the W3C copy of the spec by e-mail: http://lists.w3.org/Archives/Public/public-html-diffs/latest&lt;br /&gt;
&lt;br /&gt;
* Non-editorial changes get broadcast on the WHATWG Twitter feed: http://twitter.com/WHATWG&lt;br /&gt;
&lt;br /&gt;
* All changes that affect the W3C copy of the spec get broadcast on the HTML5 Twitter feed: http://twitter.com/HTML5&lt;br /&gt;
&lt;br /&gt;
* The latest changes are visible in coloured diff form: http://whatwg.org/specs/web-apps/current-work/index-diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What are the various versions of the spec? ===&lt;br /&gt;
&lt;br /&gt;
The specs that the WHATWG works on are available in a variety of forms.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!W3C HTML WG&lt;br /&gt;
!WHATWG&lt;br /&gt;
!WHATWG Web Applications&lt;br /&gt;
|-&lt;br /&gt;
!HTML5&lt;br /&gt;
|[http://dev.w3.org/html5/spec/Overview.html Single-page]*, [http://dev.w3.org/html5/spec/spec.html Multi-page]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/html5/ Single-page]*&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!HTML (Incl. HTML5)&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/ Single-page]*, &#039;&#039;&#039;[http://whatwg.org/html Multi-page]&#039;&#039;&#039;, [http://www.whatwg.org/specs/web-apps/current-work/html5-a4.pdf A4 (PDF)], [http://www.whatwg.org/specs/web-apps/current-work/html5-letter.pdf Letter (PDF)]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html Web Applications 1.0 (complete)]&lt;br /&gt;
|-&lt;br /&gt;
!Microdata&lt;br /&gt;
|[http://dev.w3.org/html5/md/Overview.html md]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#microdata Microdata multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#microdata Microdata section]&lt;br /&gt;
|-&lt;br /&gt;
!2D Context&lt;br /&gt;
|[http://dev.w3.org/html5/2dcontext/Overview.html 2dcontext]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#the-2d-context The 2D context multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#the-2d-context 2D Context section]&lt;br /&gt;
|-&lt;br /&gt;
!Communications&lt;br /&gt;
|[http://dev.w3.org/html5/postmsg/Overview.html postmsg]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages Cross-document messaging multi-page segment] and [http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#channel-messaging Channel messaging multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#crossDocumentMessages Cross-document messaging section] and [http://www.whatwg.org/specs/web-apps/current-work/complete.html#channel-messaging Channel messaging section]&lt;br /&gt;
|-&lt;br /&gt;
!Device Element&lt;br /&gt;
|[http://dev.w3.org/html5/html-device/ html-device]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/multipage/commands.html#devices The device element multi-page segment]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#devices The device element section]&lt;br /&gt;
|-&lt;br /&gt;
!Web Workers&lt;br /&gt;
|[http://dev.w3.org/html5/workers/Overview.html workers]&lt;br /&gt;
|[http://whatwg.org/ww Web Workers]&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#workers Web Workers section]&lt;br /&gt;
|-&lt;br /&gt;
!Web Storage&lt;br /&gt;
|[http://dev.w3.org/html5/webstorage/ webstorage]&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#webstorage Web Storage section]&lt;br /&gt;
|-&lt;br /&gt;
!Web Sockets API&lt;br /&gt;
|[http://dev.w3.org/html5/websockets/ websockets]&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#network Web Sockets section]&lt;br /&gt;
|-&lt;br /&gt;
!Web Sockets Protocol&lt;br /&gt;
|[http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol draft-hixie-thewebsocketprotocol] (IETF)&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#websocket-protocol Web Socket Protocol section]&lt;br /&gt;
|-&lt;br /&gt;
!Server-Sent Events&lt;br /&gt;
|[http://dev.w3.org/html5/eventsource/ eventsource]&lt;br /&gt;
|&lt;br /&gt;
|[http://www.whatwg.org/specs/web-apps/current-work/complete.html#server-sent-events Sever-sent Events section]&lt;br /&gt;
|-&lt;br /&gt;
!Web SQL Database&lt;br /&gt;
|[http://dev.w3.org/html5/webdatabase/ webdatabase] (deprecated)&lt;br /&gt;
|&lt;br /&gt;
|(excluded)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
All of the above are generated from one [http://www.whatwg.org/specs/web-apps/current-work/source source document].&lt;br /&gt;
&lt;br /&gt;
(*) Several of the specs above, marked with an asterisk, can further be viewed in three different ways, by toggling the radio buttons at the top right of those documents. Here are some shortcuts for viewing the multipage version of the HTML specification in these three different ways:&lt;br /&gt;
* As a normal spec: http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=complete&lt;br /&gt;
* Hiding all the user-agent-specific material (&amp;quot;author view&amp;quot;): http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=author&lt;br /&gt;
* Highlighting all the user-agent-specific material: http://www.whatwg.org/specs/web-apps/current-work/multipage/?style=highlight&lt;br /&gt;
&lt;br /&gt;
=== When will we be able to start using these new features? ===&lt;br /&gt;
&lt;br /&gt;
You can use some of them now. Others might take a few more years to get widely implemented. Here are some sites that might help you work out what you can use in the meantime:&lt;br /&gt;
&lt;br /&gt;
* http://diveintohtml5.org/&lt;br /&gt;
&lt;br /&gt;
If you know of any more (or if you have some yourself) then add them to the list! If there are some on the list that aren&#039;t very useful compared to the rest, them remove them!&lt;br /&gt;
&lt;br /&gt;
=== When will HTML5 be finished? ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Finished&amp;quot; is a big deal... You&#039;ll be able to use HTML5 long before then. See [[FAQ#When_will_we_be_able_to_start_using_these_new_features.3F|When will we be able to start using these new features?]]&lt;br /&gt;
&lt;br /&gt;
It is estimated by the editor that HTML5 will reach the W3C Candidate Recommendation stage during 2012. That doesn&#039;t mean you can&#039;t start using it yet, though. Different parts of the specification are at different maturity levels. Some sections are already relatively stable and there are implementations that are already quite close to completion, and those features can be used today (e.g. &amp;amp;lt;canvas&amp;amp;gt;). But other sections are still being actively worked on and changed regularly, or not even written yet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can see annotations in the margins showing the estimated stability of each section.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The possible states are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Idea; yet to be specified&#039;&#039; -- the section is a placeholder.&lt;br /&gt;
* &#039;&#039;First draft&#039;&#039; -- An early stage.&lt;br /&gt;
* &#039;&#039;Working draft&#039;&#039; -- An early stage, but more mature than just &amp;quot;first draft&amp;quot;.&lt;br /&gt;
* &#039;&#039;Last call for comments&#039;&#039; -- The section is nearly done, but there may be feedback still to be processed. Send feedback sooner rather than later, or it might be too late.&lt;br /&gt;
* &#039;&#039;Awaiting implementation feedback&#039;&#039; -- The section is basically done, but might change in response to feedback from implementors. Major changes are unlikely past this point unless it is found that the feature, as specified, really doesn&#039;t work well.&lt;br /&gt;
* &#039;&#039;Implemented and widely deployed&#039;&#039; -- the feature is specified and complete. Once a section is interoperably implemented, it&amp;amp;#8217;s quite stable and unlikely to change significantly. Any changes to such a section would most likely only be editorial in nature, particularly if the feature is already in widespread use.&lt;br /&gt;
&lt;br /&gt;
There are also two special states:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;Being edited right now&#039;&#039; -- the section is in high flux and is actively being edited. Contact Hixie on [[IRC]] if you have immediate feedback.&lt;br /&gt;
* &#039;&#039;Being considered for removal&#039;&#039; -- for one reason or another, the section is being considered for removal. Send feedback soon to help with the decision.&lt;br /&gt;
&lt;br /&gt;
The point to all this is that you shouldn&amp;amp;#8217;t place too much weight on the status of the specification as a whole. You need to consider the stability and maturity level of each section individually.&lt;br /&gt;
&lt;br /&gt;
It is estimated, again by the editor, that HTML5 will reach a W3C recommendation in the year 2022 or later. This will be approximately 18-20 years of development, since beginning in mid-2004. That&#039;s actually not that crazy, though. Work on HTML4 started in the mid 90s, and HTML4 &#039;&#039;still&#039;&#039;, more than ten years later, hasn&#039;t reached the level that we want to reach with HTML5. There is no real test suite, there are many parts of the spec that are lacking real implementations, there are big parts that aren&#039;t interoperable, and the spec has hundreds if not thousands of known errors that haven&#039;t been fixed. When HTML4 came out, REC meant something much less exciting than it does now.&lt;br /&gt;
&lt;br /&gt;
For a spec to become a REC today, it requires two 100% complete and fully interoperable implementations, which is proven by each successfully passing literally thousands of test cases (20,000 tests for the whole spec would probably be a conservative estimate). When you consider how long it takes to write that many test cases and how long it takes to implement each feature, you&amp;amp;#8217;ll begin to understand why the time frame seems so long.&lt;br /&gt;
&lt;br /&gt;
(In the interests of full disclosure, the W3C&#039;s [http://www.w3.org/2007/03/HTML-WG-charter.html#deliverables official line] is that the HTML5 spec will be complete, with interoperable implementations, in late 2010. However, that same timetable gave a date for First Public Working Draft that was eight months premature, and the W3C, as of the predicted date for the third milestone, Candidate Recommendation, had still not come anywhere near reaching the second milestone, Last Call. You can make your own judgements regarding the W3C timetable&#039;s credibility.)&lt;br /&gt;
&lt;br /&gt;
=== What about Microsoft and Internet Explorer? === &lt;br /&gt;
&lt;br /&gt;
Microsoft has already started implementing parts of HTML5 in IE8.&lt;br /&gt;
&lt;br /&gt;
HTML5 is being developed with compatibility with existing browsers in mind, though (including IE). Support for many features can be simulated using JavaScript.&lt;br /&gt;
&lt;br /&gt;
=== Is design rationale documented? ===&lt;br /&gt;
&lt;br /&gt;
Sort of. Often the documentation can be found in the mailing list or IRC channel archives. Sometimes an issue was raised formally, and resolution is recorded in the issue tracker. Sometimes, there is an explanation in the specification, but doing that everywhere would make the specification huge.&lt;br /&gt;
&lt;br /&gt;
For a few cases that someone did take the time document, the information can be found at the following locations:&lt;br /&gt;
&lt;br /&gt;
* [[Why no namespaces]]&lt;br /&gt;
* [[Why no script implements]]&lt;br /&gt;
* [[Why not reuse legend]]—or another &#039;&#039;mini-header&#039;&#039; element.&lt;br /&gt;
&lt;br /&gt;
Also see HTML5 feature proposals below.&lt;br /&gt;
&lt;br /&gt;
== HTML5 syntax issues ==&lt;br /&gt;
&lt;br /&gt;
=== Will HTML5 finally put an end to the XHTML as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; debate? === &lt;br /&gt;
&lt;br /&gt;
Yes. Unlike HTML4 and XHTML1, the choice of HTML or XHTML is solely dependent upon the choice of the media type, rather than the DOCTYPE. See [[HTML vs. XHTML]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== What will the DOCTYPE be? === &lt;br /&gt;
&lt;br /&gt;
In HTML:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML: no DOCTYPE is required and its use is generally unnecessary.  However, you may use one if you want (see the following question).  Note that the above is well-formed XML and so it may also appear in XHTML documents.&lt;br /&gt;
&lt;br /&gt;
For compatibility with legacy producers designed for outputting HTML, but which are unable to easily output the above DOCTYPE, this alternative legacy-compat version may be used instead.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this is &#039;&#039;&#039;not&#039;&#039;&#039; intended for dealing with any compatibility issues with legacy browsers.  It is meant for legacy authoring tools only.&lt;br /&gt;
&lt;br /&gt;
Excluding the string &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt;, the DOCTYPE is case insensitive in HTML.  In XHTML, it is case sensitive and must be either of the two variants given above.  For this reason, the DOCTYPEs given above are recommended to be used over other case variants, such as &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
These alternatives were chosen because they meet the following criteria:&lt;br /&gt;
&lt;br /&gt;
* They trigger standards mode in all current and all relevant legacy browsers.&lt;br /&gt;
* They are well-formed in XML and can appear in XHTML documents.&lt;br /&gt;
* It is possible to output at least one of the alternatives, if not both, with extant markup generators.&lt;br /&gt;
* They intentionally contain no language version identifier so the DOCTYPE will remain usable for all future revisions of HTML.&lt;br /&gt;
* The first is short and memorable to encourage its use.&lt;br /&gt;
* The legacy-compat DOCTYPE is intentionally unattractive and self descriptive of purpose to discourage unnecessary use.&lt;br /&gt;
&lt;br /&gt;
=== Under what conditions should a DOCTYPE be used in XHTML? ===&lt;br /&gt;
&lt;br /&gt;
Generally, the use of a DOCTYPE in XHTML is unnecessary.  However, there are cases where inclusion of a DOCTYPE is a reasonable thing to do:&lt;br /&gt;
&lt;br /&gt;
# The document is intended to be a polyglot document that may be served as both HTML or XHTML.&lt;br /&gt;
# You wish to declare entity references for use within the document.  Note that most browsers only read the internal subset and do not retrieve external entities. (This is not compatible with HTML, and thus not suitable for polyglot documents.)&lt;br /&gt;
# You wish to use a custom DTD for DTD-based validation. But take note of [http://about.validator.nu/#faq what&#039;s wrong with DTDs].&lt;br /&gt;
&lt;br /&gt;
=== How are pre-HTML5 documents parsed? ===&lt;br /&gt;
&lt;br /&gt;
All documents with a text/html media type (that is, including those without or with an HTML 2.0, HTML 3.2, HTML4, or XHTML1 DOCTYPE) will be parsed using the same parser algorithm as defined by HTML5. This matches what Web browsers have done for HTML documents so far and keeps code complexity down. That in turn is good for security, maintainability, and in general keeping the amount of bugs down. The HTML syntax of HTML5 therefore does not require a new parser and documents with an HTML4 DOCTYPE for example will be parsed using the HTML5 parser.&lt;br /&gt;
&lt;br /&gt;
Validators are allowed to have different code paths for previous levels of HTML.&lt;br /&gt;
&lt;br /&gt;
=== If there is no DTD, how can I validate my page? === &lt;br /&gt;
&lt;br /&gt;
With an [http://validator.whatwg.org/ HTML5 validator].&lt;br /&gt;
&lt;br /&gt;
=== What is an HTML Serialization? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization refers to the syntax of an HTML document defined in HTML5. The syntax is inspired by the SGML syntax from earlier versions of HTML, bits of XML (e.g. allowing a trailing slash on void elements, xmlns attributes), and reality of deployed content on the Web.&lt;br /&gt;
&lt;br /&gt;
Any document whose MIME type is determined to be &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is considered to be an HTML serialization and must be parsed using an HTML parser.&lt;br /&gt;
&lt;br /&gt;
=== What is an XML (or XHTML) Serialization? === &lt;br /&gt;
&lt;br /&gt;
The XML Serialization refers to the syntax defined by XML 1.0 and Namespaces in XML 1.0. A resource that has an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;, is an XML document and if it uses elements in the HTML namespace, it contains XHTML. If the root element is &amp;amp;#8220;html&amp;amp;#8221; in the HTML namespace, the document is referred to as an XHTML document.&lt;br /&gt;
&lt;br /&gt;
=== What MIME type does HTML5 use? === &lt;br /&gt;
&lt;br /&gt;
The HTML serialization &#039;&#039;must&#039;&#039; be served using the &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; MIME type.&lt;br /&gt;
&lt;br /&gt;
The XHTML serialization &#039;&#039;must&#039;&#039; be served using an XML MIME type, such as &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt;. Unlike XHTML1, XHTML5 &#039;&#039;must not&#039;&#039; be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Using the incorrect MIME type (&amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;) for XHTML will cause the document to be parsed according to parsing requirements for HTML. In other words, it will be treated as tag soup. Ensuring the use of an XML MIME type is the only way to ensure that browsers handle the document as XML.&lt;br /&gt;
&lt;br /&gt;
=== Should I close empty elements with &amp;lt;code&amp;gt;/&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;? === &lt;br /&gt;
&lt;br /&gt;
Void elements in HTML (e.g. the &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; elements) do not require a trailing slash. e.g. Instead of writing &amp;lt;code&amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;lt;/code&amp;gt;, you only need to write &amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;lt;/code&amp;gt;. This is the same as in HTML4. However, due to the widespread attempts to use XHTML1, there are a significant number of pages using the trailing slash. Because of this, the trailing slash syntax has been permitted on void elements in HTML in order to ease migration from XHTML1 to HTML5.&lt;br /&gt;
&lt;br /&gt;
HTML5 also introduces the ability to embed MathML elements. On elements inside a &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; element the trailing slash works just like it does in XML. I.e. it closes the element. This is only inside that context however, it does not work for normal HTML elements.&lt;br /&gt;
&lt;br /&gt;
=== If I&amp;amp;#8217;m careful with the syntax I use in my HTML document, can I process it with an XML parser? === &lt;br /&gt;
&lt;br /&gt;
No, HTML and XML have [[HTML_vs._XHTML#Differences_Between_HTML_and_XHTML|many significant differences]], particularly parsing requirements, and you cannot process one using tools designed for the other. However, since HTML5 is defined in terms of the DOM, in most cases there are both HTML and XHTML serializations available that can represent the same document. There are, however, a few differences explained later that make it impossible to represent some HTML documents accurately as XHTML and vice versa. &lt;br /&gt;
&lt;br /&gt;
If you wish to process an HTML document as XHTML, it requires that you and convert it into XHTML first; and vice versa for processing XHTML as HTML.&lt;br /&gt;
&lt;br /&gt;
=== What is the namespace declaration? === &lt;br /&gt;
&lt;br /&gt;
In XHTML, you are required to specify the [http://www.w3schools.com/xml/xml_namespaces.asp namespace.]&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In HTML, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is currently allowed on any HTML element, but only if it has the value &amp;amp;#8220;&amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;&amp;amp;#8220;. It doesn&amp;amp;#8217;t do anything at all, it is merely allowed to ease migration from XHTML1. It is not actually a namespace declaration in HTML, because HTML doesn&amp;amp;#8217;t yet support namespaces.  See the question [[FAQ#Will_there_be_support_for_namespaces_in_HTML.3F|will there be support for namespaces in HTML]].&lt;br /&gt;
&lt;br /&gt;
=== Will there be support for namespaces in HTML? === &lt;br /&gt;
&lt;br /&gt;
HTML5 is being defined in terms of the DOM and during parsing of a text/html all HTML elements will be automatically put in the HTML namespace, &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;. However, unlike the XHTML serialization, there is no real namespace syntax available in the HTML serialization (see previous question). In other words, you do not need to declare the namespace in your HTML markup, as you do in XHTML. However, you are permitted to put an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute on each HTML element as long as the namespace is &amp;lt;code&amp;gt;http://www.w3.org/1999/xhtml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In addition, the HTML syntax provides for a way to embed elements from MathML and SVG. Elements placed inside the container element &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; will automatically be put in the MathML namespace or the SVG namespace, respectively, by the parser. Namespace syntax is not required, but again an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute is allowed if its value is the right namespace.&lt;br /&gt;
&lt;br /&gt;
In conclusion, while HTML5 does not allow the XML namespace syntax, there is a way to embed MathML and SVG and the xmlns attribute can be used on any element under the given constraints, in a way that is reasonably compatible on the DOM level.&lt;br /&gt;
&lt;br /&gt;
=== How do I specify the character encoding? === &lt;br /&gt;
&lt;br /&gt;
For HTML, it is strongly recommended that you specify the encoding using the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header. If you are unable to [http://www.w3.org/International/O-HTTP-charset configure your server] to send the correct headers, then you may use the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following restrictions apply to character encoding declarations:&lt;br /&gt;
&lt;br /&gt;
* The character encoding name given must be the name of the character encoding used to serialize the file.&lt;br /&gt;
* The value must be a [http://www.iana.org/assignments/character-sets valid character encoding name], and must be the preferred name for that encoding.&lt;br /&gt;
* The character encoding declaration must be serialized without the use of character references or character escapes of any kind.&lt;br /&gt;
* The &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element used for this purpose must occur within the first 512 bytes of the file.  It is considered good practice for this to be the first child of the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; element so that it is as close to the beginning of the file as possible.&lt;br /&gt;
&lt;br /&gt;
Note that this &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element is different from HTML 4, though it is compatible with many browsers because of the way encoding detection has been implemented.&lt;br /&gt;
&lt;br /&gt;
For polyglot documents, which may be served as either HTML or XHTML, you may also include that in XHTML documents, but only if the encoding is &amp;quot;UTF-8&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To ease transition from HTML4 to HTML5, although the former is the recommended syntax, you may also use the following. (This does not apply to XHTML or polyglot documents)&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
In XHTML, XML rules for determining the character encoding apply.  The meta element is never used for determining the encoding of an XHTML document (although it may appear in UTF-8 encoded XHTML documents).  You should use either the HTTP &amp;lt;code&amp;gt;Content-Type&amp;lt;/code&amp;gt; header or the XML declaration to specify the encoding.&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;?xml version=&amp;amp;quot;1.0&amp;amp;quot; encoding=&amp;amp;quot;UTF-8&amp;amp;quot;?&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
Otherwise, you must use the default of &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. It is recommended that you use &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== What are the differences between HTML and XHTML? === &lt;br /&gt;
&lt;br /&gt;
See the list of [[HTML vs. XHTML#Differences_Between_HTML_and_XHTML|differences between HTML and XHTML]] in the wiki.&lt;br /&gt;
&lt;br /&gt;
=== What are best practices to be compatible with HTML DOM and XHTML DOM? ===&lt;br /&gt;
&lt;br /&gt;
Though the intent is that HTML and XHTML can both produce identical DOMs, there still are some differences between working with an HTML DOM and an XHTML one.&lt;br /&gt;
&lt;br /&gt;
Case sensitivity :&lt;br /&gt;
* Whenever possible, avoid testing Element.tagName and Node.nodeName (or do toLowerCase() before testing).&lt;br /&gt;
Namespaces:&lt;br /&gt;
* Use the namespace-aware version for creating elements: Document.createElementNS(ns, elementName)&lt;br /&gt;
&lt;br /&gt;
=== Why does HTML5 legitimise tag soup? === &lt;br /&gt;
&lt;br /&gt;
Actually it doesn&amp;amp;#8217;t. This is a misconception that comes from the confusion between conformance requirements for documents, and the requirements for user agents.&lt;br /&gt;
&lt;br /&gt;
Due to the fundamental design principle of supporting existing content, the spec must define how to handle all HTML, regardless of whether documents are conforming or not. Therefore, the spec defines (or will define) precisely how to handle and recover from erroneous markup, much of which would be considered tag soup.&lt;br /&gt;
&lt;br /&gt;
For example, the spec defines algorithms for dealing with syntax errors such as incorrectly nested tags, which will ensure that a well structured DOM tree can be produced.&lt;br /&gt;
&lt;br /&gt;
Defining that is essential for one day achieving interoperability between browsers and reducing the dependence upon reverse engineering each other.&lt;br /&gt;
&lt;br /&gt;
However, the conformance requirements for authors are defined separately from the processing requirements. Just because browsers are required to handle erroneous content, it does not make such markup conforming.&lt;br /&gt;
&lt;br /&gt;
For example, user agents will be required to support the marquee element, but authors must not use the marquee element in conforming documents.&lt;br /&gt;
&lt;br /&gt;
It is important to make the distinction between the rules that apply to user agents and the rules that apply to authors for producing conforming documents. They are completely orthogonal.&lt;br /&gt;
&lt;br /&gt;
== HTML5 feature proposals ==&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element! === &lt;br /&gt;
&lt;br /&gt;
The spec allows &amp;lt;a&amp;gt; to contain blocks. It doesn&#039;t support putting href=&amp;quot;&amp;quot; on any element, though.&lt;br /&gt;
&lt;br /&gt;
Supporting &amp;lt;code&amp;gt;href&amp;lt;/code&amp;gt; on any element has several problems associated with it that make it difficult to support in HTML5. The main reason this isn&#039;t in HTML5 is that browser vendors have reported that implementing it would be extremely complex. Browser vendors get to decide what they implement, and there&#039;s no point to us telling them to do something they aren&#039;t going to do. In addition:&lt;br /&gt;
&lt;br /&gt;
* It isn&amp;amp;#8217;t backwards compatible with existing browsers.&lt;br /&gt;
* It adds no new functionality that can&amp;amp;#8217;t already be achieved using the &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; element and a little script.&lt;br /&gt;
* It doesn&amp;amp;#8217;t make sense for all elements, such as interactive elements like &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;button&amp;lt;/code&amp;gt;, where the use of href would interfere with their normal function.&lt;br /&gt;
&lt;br /&gt;
The only advantage it seems to add is that it reduces typing for authors in some cases, but that is not a strong enough reason to support it in light of the other reasons.&lt;br /&gt;
&lt;br /&gt;
Wrapping &amp;lt;a&amp;gt; elements around blocks solves most use cases. It doesn&#039;t handle making rows in tables into links, though; for those just do something like this instead:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;tr onclick=&amp;quot;location = this.getElementsByTagName(&#039;a&#039;)[0]&amp;quot;&amp;gt; ... &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support list headers! ===&lt;br /&gt;
&lt;br /&gt;
You can give a header to a list using the &amp;lt;figure&amp;gt; and &amp;lt;legend&amp;gt; elements:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;figure&amp;gt;&lt;br /&gt;
  &amp;lt;legend&amp;gt;Apples&amp;lt;/legend&amp;gt;&lt;br /&gt;
  &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Granny Smith&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Evil Apple of Knowledge&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Apple, Inc&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
 &amp;lt;/figure&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also label a group of lists using a definition list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;dl&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Dry:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1c flour&amp;lt;/li&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1/4c sugar&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp baking soda&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
  &amp;lt;dt&amp;gt;Wet:&amp;lt;/dt&amp;gt;&lt;br /&gt;
  &amp;lt;dd&amp;gt;&lt;br /&gt;
   &amp;lt;ul&amp;gt;  &lt;br /&gt;
    &amp;lt;li&amp;gt;1 egg &amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1/2c milk&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;1tsp vanilla extract&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
  &amp;lt;/dd&amp;gt;&lt;br /&gt;
 &amp;lt;/dl&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These techniques are preferred over adding an &amp;lt;lh&amp;gt; element as proposed in the old HTML3 draft, mostly because of thorny issues with parsing near &amp;amp;lt;li&amp;gt; elements.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should support a way for anyone to invent new elements! ===&lt;br /&gt;
&lt;br /&gt;
There are actually quite a number of ways for people to invent their own extensions to HTML:&lt;br /&gt;
&lt;br /&gt;
* Authors can use the &#039;&#039;class&#039;&#039; attribute to extend elements, effectively creating their own elements, while using the most applicable existing &amp;quot;real&amp;quot; HTML element, so that browsers and other tools that don&#039;t know of the extension can still support it somewhat well. This is the tack used by Microformats, for example.&lt;br /&gt;
* Authors can include data for scripts to process using the &#039;&#039;data-*=&amp;quot;&amp;quot;&#039;&#039; attributes. These are guaranteed to never be touched by browsers, and allow scripts to include data on HTML elements that scripts can then look for and process.&lt;br /&gt;
* Authors can use the &#039;&#039;&amp;lt;meta name=&amp;quot;&amp;quot; content=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism to include page-wide metadata. Names should be registered on the wiki&#039;s [[MetaExtensions]] page.&lt;br /&gt;
* Authors can use the &#039;&#039;rel=&amp;quot;&amp;quot;&#039;&#039; mechanism to annotate links with specific meanings. This is also used by Microformats. Names should be registered on the wiki&#039;s [[RelExtensions]] page.&lt;br /&gt;
* Authors can embed raw data using the &#039;&#039;&amp;lt;script type=&amp;quot;&amp;quot;&amp;gt;&#039;&#039; mechanism with a custom type, for further handling by a script.&lt;br /&gt;
* Authors can create plugins and invoke them using the &#039;&#039;&amp;lt;embed&amp;gt;&#039;&#039; element. This is how Flash works.&lt;br /&gt;
* Authors can extend APIs using the JS prototyping mechanism. This is widely used by script libraries, for instance.&lt;br /&gt;
* Authors can use the microdata feature (the item=&amp;quot;&amp;quot; and itemprop=&amp;quot;&amp;quot; attributes) to embed nested name-value pairs of data to be shared with other applications and sites.&lt;br /&gt;
* Authors can propose new elements and attributes to the working group and, if the wider community agrees that they are worth the effort, they are added to the language. (If an addition is urgent, please let us know when proposing it, and we will try to address it quickly.)&lt;br /&gt;
&lt;br /&gt;
There is currently no mechanism for introducing new proprietary features in HTML documents (i.e. for introducing new elements and attributes) without discussing the extension with user agent vendors and the wider Web community. This is intentional; we don&#039;t want user agents inventing their own proprietary elements and attributes like in the &amp;quot;bad old days&amp;quot; without working with interested parties to make sure their feature is well designed.&lt;br /&gt;
&lt;br /&gt;
We request that people not invent new elements and attributes to add to HTML without first contacting the working group and getting a proposal discussed with interested parties.&lt;br /&gt;
&lt;br /&gt;
=== HTML5 should group &amp;amp;lt;dt&amp;gt;s and &amp;amp;lt;dd&amp;gt;s together in &amp;lt;di&amp;gt;s! === &lt;br /&gt;
&lt;br /&gt;
This is a styling problem and should be fixed in CSS. There&#039;s no reason to add a grouping element to HTML, as the semantics are already unambiguous.&lt;br /&gt;
&lt;br /&gt;
=== Why are some presentational elements like &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; still included? ===&lt;br /&gt;
&lt;br /&gt;
The inclusion of these elements is a largely pragmatic decision based upon their widespread usage, and their usefulness for use cases which are not covered by more specific elements.&lt;br /&gt;
&lt;br /&gt;
While there are a number of common use cases for italics which are covered by more specific elements, such as emphasis (em), citations (cite), definitions (dfn) and variables (var), there are many other use cases which are not covered well by these elements.  For example, a taxonomic designation, a technical term, an idiomatic phrase from another language, a thought, or a ship name.&lt;br /&gt;
&lt;br /&gt;
Similarly, although a number of common use cases for bold text are also covered by more specific elements such as strong emphasis (strong), headings (h1-h6) or table headers (th); there are others which are not, such as key words in a document abstract or product names in a review.&lt;br /&gt;
&lt;br /&gt;
Some people argue that in such cases, the span element should be used with an appropriate class name and associated stylesheet.  However, the b and i elements provide for a reasonable fallback styling in environments that don&#039;t support stylesheets or which do not render visually, such as screen readers, and they also provide some indication that the text is somehow distinct from its surrounding content.&lt;br /&gt;
&lt;br /&gt;
In essence, they convey distinct, though non-specific, semantics, which are to be determined by the reader in the context of their use. In other words, although they don’t convey specific semantics by themselves, they indicate that that the content is somehow distinct from its surroundings and leaves the interpretation of the semantics up to the reader.&lt;br /&gt;
&lt;br /&gt;
This is further explained in the article &amp;lt;cite&amp;gt;[http://lachy.id.au/log/2007/05/b-and-i The &amp;amp;lt;b&amp;gt; and &amp;amp;lt;i&amp;gt; Elements]&amp;lt;/cite&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Similarly, the small element is defined for content that is commonly typographically rendered in small print, and which often referred to as fine print.  This could include copyright statements, disclaimers and other legal text commonly found at the end of a document.&lt;br /&gt;
&lt;br /&gt;
==== But they are PRESENTATIONAL! ====&lt;br /&gt;
&lt;br /&gt;
While &amp;amp;lt;b&amp;gt;, &amp;amp;lt;i&amp;gt; and &amp;amp;lt;small&amp;gt; historically have been presentational, they are defined in a media-independent manner in HTML5. For example, &amp;amp;lt;small&amp;gt; corresponds to the really quickly spoken part at the end of radio advertisements. The problem with elements like &amp;amp;lt;font&amp;gt; isn&#039;t that they are &#039;&#039;presentational&#039;&#039; per se, it&#039;s that they are media-dependent (they apply to visual browsers but not to speech browsers).&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;cite&amp;gt; element should allow names of people to be marked up ===&lt;br /&gt;
&lt;br /&gt;
From what some have seen, &amp;amp;lt;cite&amp;gt; is almost always used to mean &amp;quot;italics&amp;quot;. More careful authors have used the element to mark up names and titles, and some people have gone out of their way to only mark up citations.&lt;br /&gt;
&lt;br /&gt;
So, we can&#039;t really decide what the element should be based on past practice, like we usually do.&lt;br /&gt;
&lt;br /&gt;
This leaves the question of what is the most useful use we can put the element to, if we keep it. The conclusion so far has been that the most useful use for &amp;amp;lt;cite&amp;gt; is as an element to allow typographic control over titles, since those are often made italics, and that semantic is roughly close to what it meant in previous versions, and happens to match at least one of the common uses for the element. Generally, however, names and titles aren&#039;t typeset the same way, so making the element apply to both would lead to confusing typography.&lt;br /&gt;
&lt;br /&gt;
There are already many ways of marking up names already (e.g. the [http://microformats.org/wiki/hcard hCard microformat], the microdata vCard vocabulary, &amp;amp;lt;span&amp;gt; and class names, etc), if you really need it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt; research and opinions are being gathered that support the use of the &amp;amp;lt;cite&amp;gt; element to markup the names of speakers (e.g. for quotations). Please contribute yours:&lt;br /&gt;
* [[Cite_element#examples_in_the_wild|cite element: examples in the wild of speakers marked up with cite]]&lt;br /&gt;
* [[Cite_element#opinions|cite element: opinions on use of cite to markup names of speakers]]&lt;br /&gt;
&lt;br /&gt;
=== The &amp;amp;lt;time&amp;gt; element should allow vague times (&amp;quot;March&amp;quot;) and times from ancient history to be marked up ===&lt;br /&gt;
&lt;br /&gt;
This has been discussed a number of times. For an overview of the topic, please see these e-mails:&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018888.html&lt;br /&gt;
* http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/021745.html&lt;br /&gt;
At this stage, as discussed in the second of those e-mails, the best way forward is to demonstrate that there are communities interested in solving this problem, by using existing techniques such as microdata to address it. If such a solution achieves a high adoption rate, that will substantially increase the strength of the proposals.&lt;br /&gt;
&lt;br /&gt;
== WHATWG and the W3C HTML WG ==&lt;br /&gt;
&lt;br /&gt;
=== Are there plans to merge the groups? ===&lt;br /&gt;
&lt;br /&gt;
Not especially. There are people who for a number of reasons are unable to join the W3C group, and there are others who are unable to join the WHATWG group. The editor is in both groups and takes all input into account -- and there are far more places where input on HTML5 is sent than just these two mailing lists (e.g. blogs, www-html@w3.org, forums, direct mail, meetings, etc).&lt;br /&gt;
&lt;br /&gt;
=== Which group has authority in the event of a dispute? ===&lt;br /&gt;
&lt;br /&gt;
The editor takes feedback from everyone into account and does not look at the source of those arguments for technical arguments.&lt;br /&gt;
&lt;br /&gt;
=== What is the history of HTML? ===&lt;br /&gt;
&lt;br /&gt;
Here are some documents that detail the history of HTML:&lt;br /&gt;
* [http://esw.w3.org/topic/HTML/history HTML&#039;s timeline on the ESW wiki]&lt;br /&gt;
* [http://www.whatwg.org/specs/web-apps/current-work/multipage/introduction.html#history0 The history section in HTML5 itself]&lt;br /&gt;
&lt;br /&gt;
== Web Workers ==&lt;br /&gt;
&lt;br /&gt;
Besides HTML5 the WHATWG works on [http://www.whatwg.org/specs/web-workers/current-work/ Web Workers]. It does this together with the W3C WebApps Working Group.&lt;br /&gt;
&lt;br /&gt;
== Mailing List ==&lt;br /&gt;
&lt;br /&gt;
=== Should I top-post or reply inline? ===&lt;br /&gt;
&lt;br /&gt;
Please reply inline or make the reply self-contained.&lt;br /&gt;
&lt;br /&gt;
Basically, please remove anything after the last line you have written, so that people don&#039;t have to scroll down to find out what else you wrote, and make sure that your e-mail makes sense on its own, as it will probably be read out of context years later.&lt;br /&gt;
&lt;br /&gt;
That is, you should reply like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; What do you want? &lt;br /&gt;
&lt;br /&gt;
I want cats!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; When do you want it?&lt;br /&gt;
&lt;br /&gt;
Now!&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should definitely not reply like this (because this requires people to read your e-mail backwards):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good example of how to post e-mails?&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (because this leaves people to wonder if there is any text lower down that you have written):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
This is a bad way to write e-mail.&lt;br /&gt;
&lt;br /&gt;
Ian wrote:&lt;br /&gt;
&amp;gt; Is this a good way to write e-mail?&lt;br /&gt;
&amp;gt; Lorem ipsum foo bar baz.&lt;br /&gt;
&amp;gt; Unrelated other bits that aren&#039;t replied to.&lt;br /&gt;
&amp;gt; Yet more text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should also not reply like this (with no context at all), because the reader will not know what you are referring to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;error&amp;quot; &amp;gt;&lt;br /&gt;
No, I think that&#039;s a bad idea. It wouldn&#039;t be good for the readers, for instance.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quote enough original text or provide an introduction yourself.&lt;br /&gt;
&lt;br /&gt;
If you use Outlook or Outlook Express, you can use either [http://home.in.tum.de/~jain/software/outlook-quotefix/ Outlook-QuoteFix] or [http://home.in.tum.de/~jain/software/oe-quotefix/ OE-QuoteFix]. These plugins fix several of Outlook&#039;s problems with sending properly formatted emails.&lt;br /&gt;
H&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4026</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4026"/>
		<updated>2009-09-08T17:44:33Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFEEEE; padding: .5em 1em;&amp;quot;&amp;gt;&amp;lt;strong&amp;gt;This page is currently being revised. Some information is incomplete or missing.&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!Parsing Modes&lt;br /&gt;
|Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|XML parsing rules are used.  There is only one mode.&lt;br /&gt;
|The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!Error Handling&lt;br /&gt;
|HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!Namespaces&lt;br /&gt;
|Elements and attributes for known vocabularies (HTML, SVG and MathML) are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on HTML elements&lt;br /&gt;
|Elements in the HTML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt;.  The attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier. When parsed by an HTML parser, the attribute ends up in no namespace.&lt;br /&gt;
&lt;br /&gt;
Attributes of the form &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; may not be used on HTML elements.&lt;br /&gt;
|The HTML namespace must be declared for HTML elements according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on foreign elements&lt;br /&gt;
|&lt;br /&gt;
Elements in the SVG namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/svg&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Elements in the MathML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Foreign elements may also have an &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  This attribute is optional, even if XLink attributes are used, because the namespaces for XLink attributes is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
When parsed by an HTML parser, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|The SVG and MathML namespaces must be declared for SVG and MathML elements, respectively, according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XLink attributes&lt;br /&gt;
|Foreign elements may use the attributes &amp;lt;code&amp;gt;xlink:actuate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:arcrole&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:role&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:show&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xlink:type&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xlink&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|XLink attributes may be specified on foreign elements using any prefix, subject to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The XLink namespace must be declared according to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039; if XLink attributes are used within the document.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XML attributes&lt;br /&gt;
|&lt;br /&gt;
Foreign elements may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
HTML elements may use the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute. The attribute in no namespace with no prefix and with the literal localname &amp;quot;&amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;&amp;quot; has no effect on language processing.  HTML elements must not use the &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
| Any element, including HTML elements, may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Space characters&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000C FORM FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!CDATA sections&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Processing Instructions&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Character References&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Entity References&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4023</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4023"/>
		<updated>2009-09-06T22:41:39Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Added placeholder rows for some things&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!Parsing Modes&lt;br /&gt;
|Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|XML parsing rules are used.  There is only one mode.&lt;br /&gt;
|The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!Error Handling&lt;br /&gt;
|HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!Namespaces&lt;br /&gt;
|Elements and attributes for known vocabularies (HTML, SVG and MathML) are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on HTML elements&lt;br /&gt;
|Elements in the HTML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt;.  The attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier. When parsed by an HTML parser, the attribute ends up in no namespace.&lt;br /&gt;
&lt;br /&gt;
Attributes of the form &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; may not be used on HTML elements.&lt;br /&gt;
|The HTML namespace must be declared for HTML elements according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on foreign elements&lt;br /&gt;
|&lt;br /&gt;
Elements in the SVG namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/svg&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Elements in the MathML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Foreign elements may also have an &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  This attribute is optional, even if XLink attributes are used, because the namespaces for XLink attributes is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
When parsed by an HTML parser, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|The SVG and MathML namespaces must be declared for SVG and MathML elements, respectively, according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XLink attributes&lt;br /&gt;
|Foreign elements may use the attributes &amp;lt;code&amp;gt;xlink:actuate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:arcrole&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:role&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:show&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xlink:type&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xlink&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|XLink attributes may be specified on foreign elements using any prefix, subject to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The XLink namespace must be declared according to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039; if XLink attributes are used within the document.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XML attributes&lt;br /&gt;
|&lt;br /&gt;
Foreign elements may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
HTML elements may use the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute. The attribute in no namespace with no prefix and with the literal localname &amp;quot;&amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;&amp;quot; has no effect on language processing.  HTML elements must not use the &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
| Any element, including HTML elements, may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Space characters&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000C FORM FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
!CDATA sections&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Processing Instructions&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Character References&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Entity References&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4022</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4022"/>
		<updated>2009-09-06T21:02:28Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!Parsing Modes&lt;br /&gt;
|Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|XML parsing rules are used.  There is only one mode.&lt;br /&gt;
|The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!Error Handling&lt;br /&gt;
|HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!Namespaces&lt;br /&gt;
|Elements and attributes for known vocabularies (HTML, SVG and MathML) are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on HTML elements&lt;br /&gt;
|Elements in the HTML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt;.  The attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier. When parsed by an HTML parser, the attribute ends up in no namespace.&lt;br /&gt;
&lt;br /&gt;
Attributes of the form &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; may not be used on HTML elements.&lt;br /&gt;
|The HTML namespace must be declared for HTML elements according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on foreign elements&lt;br /&gt;
|&lt;br /&gt;
Elements in the SVG namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/svg&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Elements in the MathML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Foreign elements may also have an &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  This attribute is optional, even if XLink attributes are used, because the namespaces for XLink attributes is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
When parsed by an HTML parser, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|The SVG and MathML namespaces must be declared for SVG and MathML elements, respectively, according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XLink attributes&lt;br /&gt;
|Foreign elements may use the attributes &amp;lt;code&amp;gt;xlink:actuate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:arcrole&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:role&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:show&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xlink:type&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xlink&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|XLink attributes may be specified on foreign elements using any prefix, subject to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The XLink namespace must be declared according to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039; if XLink attributes are used within the document.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XML attributes&lt;br /&gt;
|&lt;br /&gt;
Foreign elements may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
HTML elements may use the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute. The attribute in no namespace with no prefix and with the literal localname &amp;quot;&amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;&amp;quot; has no effect on language processing.  HTML elements must not use the &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
| Any element, including HTML elements, may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Space characters&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000C FORM FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4021</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4021"/>
		<updated>2009-09-06T11:24:25Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Described namespace attributes and processing in more detail.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!Parsing Modes&lt;br /&gt;
|Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|XML parsing rules are used.  There is only one mode.&lt;br /&gt;
|The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!Error Handling&lt;br /&gt;
|HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!Namespaces&lt;br /&gt;
|Elements and attributes are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on HTML elements&lt;br /&gt;
|Elements in the HTML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt;.  The attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier. When parsed by an HTML parser, the attribute ends up in no namespace.&lt;br /&gt;
&lt;br /&gt;
Attributes of the form &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; may not be used on HTML elements.&lt;br /&gt;
|The HTML namespace must be declared for HTML elements according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Namespace attributes on foreign elements&lt;br /&gt;
|&lt;br /&gt;
Elements in the SVG namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/svg&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Elements in the MathML namespace may have an &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1998/Math/MathML&amp;quot;&amp;lt;/code&amp;gt;.  The attribute is optional because the namespace is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
Foreign elements may also have an &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attribute specified, if, and only if, it has the exact value &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  This attribute is optional, even if XLink attributes are used, because the namespaces for XLink attributes is implied during parsing.&lt;br /&gt;
&lt;br /&gt;
When parsed by an HTML parser, the &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:xlink&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|The SVG and MathML namespaces must be declared for SVG and MathML elements, respectively, according to the rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes end up in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/2000/xmlns&amp;quot;&amp;lt;/code&amp;gt; namespace.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XLink attributes&lt;br /&gt;
|Foreign elements may use the attributes &amp;lt;code&amp;gt;xlink:actuate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:arcrole&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:href&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:role&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:show&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xlink:title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xlink:type&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/1999/xlink&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xlink&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|XLink attributes may be specified on foreign elements using any prefix, subject to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039;.  The XLink namespace must be declared according to the conformance rules defined by &#039;&#039;Namespaces in XML&#039;&#039; if XLink attributes are used within the document.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!XML attributes&lt;br /&gt;
|&lt;br /&gt;
Foreign elements may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
HTML elements may use the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute. The attribute in no namespace with no prefix and with the literal localname &amp;quot;&amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;&amp;quot; has no effect on language processing.  HTML elements must not use the &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
| Any element, including HTML elements, may use the attributes &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xml:space&amp;lt;/code&amp;gt;.  These attributes are placed in the &amp;lt;code&amp;gt;&amp;quot;http://www.w3.org/XML/1998/namespace&amp;quot;&amp;lt;/code&amp;gt;.  The prefix used must be &amp;quot;&amp;lt;code&amp;gt;xml&amp;lt;/code&amp;gt;&amp;quot;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Space characters&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000C FORM FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4020</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4020"/>
		<updated>2009-09-06T09:34:59Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Revised parsing modes description.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!Parsing Modes&lt;br /&gt;
|Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|XML parsing rules are used.  There is only one mode.&lt;br /&gt;
|The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!  Error Handling&lt;br /&gt;
|  HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Namespaces&lt;br /&gt;
|  Elements and attributes are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|  The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Space characters&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000C FORM FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4019</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4019"/>
		<updated>2009-09-06T09:33:49Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Revised space character description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Parsing Modes&lt;br /&gt;
|  Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|  XML parsing rules are used.&lt;br /&gt;
|  The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!  Error Handling&lt;br /&gt;
|  HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Namespaces&lt;br /&gt;
|  Elements and attributes are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|  The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!Space characters&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000C FORM FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The space characters are defined as:&lt;br /&gt;
* U+0009 CHARACTER TABULATION&lt;br /&gt;
* U+000A LINE FEED&lt;br /&gt;
* U+000D CARRIAGE RETURN&lt;br /&gt;
* U+0020 SPACE&lt;br /&gt;
|The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4018</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4018"/>
		<updated>2009-09-06T01:10:55Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Mentioned obsolete permitted DOCTYPEs, more thorougly describe the permitted syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Parsing Modes&lt;br /&gt;
|  Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|  XML parsing rules are used.&lt;br /&gt;
|  The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!  Error Handling&lt;br /&gt;
|  HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Namespaces&lt;br /&gt;
|  Elements and attributes are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|  The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Space characters&lt;br /&gt;
|  The space characters are defined as U+0020 SPACE, U+0009 CHARACTER TABULATION, U+000A LINE FEED, U+000C FORM FEED, and U+000D CARRIAGE RETURN.  i.e. SPACE, TAB, LF, FF and CR.&lt;br /&gt;
|  The space characters include U+0020 SPACE, U+0009 CHARACTER TABULATION, U+000A LINE FEED, and U+000D CARRIAGE RETURN.  i.e. SPACE, TAB, LF, and CR.&lt;br /&gt;
|  The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When using the obsolete but conforming DOCTYPEs based on the HTML 4.0 and 4.01 Strict DTDs, the system identifier is optional.  The obsolete but conforming DOCTYPEs based on XHTML 1.0 Strict and XHTML 1.1 may also be specified.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply (everything is case sensitive).&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.  If the poublic identifier is specified, the system identifier must also be specified.  The obsolete status of the &#039;&#039;obsolete permitted DOCTYPEs&#039;&#039; defined for HTML does not apply to XHTML.  Any DOCTYPE may be used, subject to the conformance rules defined by XML.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* HTML Parse Errors with special handling:&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4017</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4017"/>
		<updated>2009-09-05T23:20:15Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Added whitespace and placeholders for more elements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Parsing Modes&lt;br /&gt;
|  Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|  XML parsing rules are used.&lt;br /&gt;
|  The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!  Error Handling&lt;br /&gt;
|  HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Namespaces&lt;br /&gt;
|  Elements and attributes are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|  The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Space characters&lt;br /&gt;
|  The space characters are defined as U+0020 SPACE, U+0009 CHARACTER TABULATION, U+000A LINE FEED, U+000C FORM FEED, and U+000D CARRIAGE RETURN.  i.e. SPACE, TAB, LF, FF and CR.&lt;br /&gt;
|  The space characters include U+0020 SPACE, U+0009 CHARACTER TABULATION, U+000A LINE FEED, and U+000D CARRIAGE RETURN.  i.e. SPACE, TAB, LF, and CR.&lt;br /&gt;
|  The difference is the inclusion of Form Feed.&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply.&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Raw text elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  RCDATA elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Foreign elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Normal elements&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
** Unexpected characters occuring in or before attribute names.&lt;br /&gt;
** Unexpected occurrence of EOF.&lt;br /&gt;
** Unexpected characters before the DOCTYPE name.&lt;br /&gt;
** Missing DOCTYPE name.&lt;br /&gt;
** A &amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt; identifer in a &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier (Note: including either of these is a syntax error in HTML5; but, in XML only the &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier is allowed to occur on its own).&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
* The internal subset is permitted in XML, but meaningless (and forbidden) in HTML.&lt;br /&gt;
** In some cases, an internal subset in HTML would end up being partly rendered inline.&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4016</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4016"/>
		<updated>2009-09-05T23:09:47Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */ Added namespaces&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Parsing Modes&lt;br /&gt;
|  Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|  XML parsing rules are used.&lt;br /&gt;
|  The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!  Error Handling&lt;br /&gt;
|  HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Namespaces&lt;br /&gt;
|  Elements and attributes are implicitly assigned to appropriate namespaces, according to the rules specified in the parsing algorithm.&lt;br /&gt;
|  The rules defined in the [http://www.w3.org/TR/REC-xml-names/ Namespaces in XML] specification apply.  Namespaces must be explicitly declared.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply.&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
** Unexpected characters occuring in or before attribute names.&lt;br /&gt;
** Unexpected occurrence of EOF.&lt;br /&gt;
** Unexpected characters before the DOCTYPE name.&lt;br /&gt;
** Missing DOCTYPE name.&lt;br /&gt;
** A &amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt; identifer in a &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier (Note: including either of these is a syntax error in HTML5; but, in XML only the &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier is allowed to occur on its own).&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
* The internal subset is permitted in XML, but meaningless (and forbidden) in HTML.&lt;br /&gt;
** In some cases, an internal subset in HTML would end up being partly rendered inline.&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4015</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4015"/>
		<updated>2009-09-05T23:01:08Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Syntax and Parsing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Parsing Modes&lt;br /&gt;
|  Three parsing modes are defined: &#039;&#039;no quirks mode&#039;&#039;, &#039;&#039;quirks mode&#039;&#039; and &#039;&#039;limited quirks mode&#039;&#039;.  The mode is only ever changed from the default by the HTML parser, based on the presence, absence, or value of the DOCTYPE string.  &lt;br /&gt;
|  XML parsing rules are used.&lt;br /&gt;
|  The parsing modes in HTML also have an effect upon script and stylehsheet processing. XHTML is considered to be in &#039;&#039;no quirks mode&#039;&#039; for these purposes.&lt;br /&gt;
|-&lt;br /&gt;
!  Error Handling&lt;br /&gt;
|  HTML does not have a well-formedness constraint, no errors are fatal. Graceful error handling and recovery procedures are thoroughly defined.&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  The DOCTYPE&lt;br /&gt;
|&lt;br /&gt;
A DOCTYPE is a mostly useless, but required, header. The DOCTYPE is used during parsing to determing the parsing mode.  The keywords &amp;quot;&amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt;&amp;quot;, &amp;quot;&amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt;&amp;quot; and &amp;quot;&amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt;&amp;quot;, and the name &amp;quot;&amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;&amp;quot; are treated case insensitively.  The system identifier &amp;lt;code&amp;gt;&amp;quot;about:legacy-compat&amp;quot;&amp;lt;/code&amp;gt; (and the public and system identifiers for previous versions of HTML) are case sensitive.&lt;br /&gt;
&lt;br /&gt;
Conforming HTML documents are required to use &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (case insensitively) or the legacy-compat version &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is forbidden.  The system identifier is never de-referenced by HTML implementations.&lt;br /&gt;
|&lt;br /&gt;
The DOCTYPE is optional.  XML rules for case sensitivity apply.&lt;br /&gt;
&lt;br /&gt;
Either of the DOCTYPEs defined in HTML5 may be used, or any other custom DOCTYPE.&lt;br /&gt;
&lt;br /&gt;
Use of an internal subset is permitted according to the requirements of XML.  Some validating XML processors may dereference the system identifier, if used, but most browsers use non-validating processors.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Void Elements&lt;br /&gt;
|  Void elements only have a start tag; end tags must not be specified for void elements, and it is impossible for them to contain any content.  A trailing slash may optionally be inserted at the end of the element&#039;s tag, immediately before the closing greater-than sign.&lt;br /&gt;
|  Void elements may use either the empty-element tag syntax (&#039;&#039;EmptyElemTag&#039;&#039;) or use a start tag immediately followed by an end tag, with no content in between.  While it is possible for the element to contain content, this is non-conforming.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Optional tags&lt;br /&gt;
|&lt;br /&gt;
For [[#HTML_Elements_with_Optional_Tags|some elements]], the start and/or end tags are optional and are implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
** Unexpected characters occuring in or before attribute names.&lt;br /&gt;
** Unexpected occurrence of EOF.&lt;br /&gt;
** Unexpected characters before the DOCTYPE name.&lt;br /&gt;
** Missing DOCTYPE name.&lt;br /&gt;
** A &amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt; identifer in a &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier (Note: including either of these is a syntax error in HTML5; but, in XML only the &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier is allowed to occur on its own).&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
* The internal subset is permitted in XML, but meaningless (and forbidden) in HTML.&lt;br /&gt;
** In some cases, an internal subset in HTML would end up being partly rendered inline.&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
==== HTML Elements with Optional Tags ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Element&lt;br /&gt;
! Start Tag&lt;br /&gt;
! End Tag&lt;br /&gt;
|-&lt;br /&gt;
!html&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!head&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!body&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!li&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!dt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!p&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!colgroup&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!thead&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tbody&lt;br /&gt;
|optional&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tfoot&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!tr&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!th&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!td&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rt&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!rp&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!optgroup&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|-&lt;br /&gt;
!option&lt;br /&gt;
|required&lt;br /&gt;
|optional&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
   1.  9.1.1 The DOCTYPE&lt;br /&gt;
   2. 9.1.2 Elements&lt;br /&gt;
         1. 9.1.2.1 Start tags&lt;br /&gt;
         2. 9.1.2.2 End tags&lt;br /&gt;
         3. 9.1.2.3 Attributes&lt;br /&gt;
         4. 9.1.2.4 Optional tags&lt;br /&gt;
         5. 9.1.2.5 Restrictions on content models&lt;br /&gt;
         6. 9.1.2.6 Restrictions on the contents of raw text and RCDATA elements&lt;br /&gt;
   3. 9.1.3 Text&lt;br /&gt;
         1. 9.1.3.1 Newlines&lt;br /&gt;
   4. 9.1.4 Character references&lt;br /&gt;
   5. 9.1.5 CDATA sections&lt;br /&gt;
   6. 9.1.6 Comments&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4014</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4014"/>
		<updated>2009-09-05T21:19:57Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Merged Syntax and Parsing sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Syntax and Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Well-formedness constraints&lt;br /&gt;
|  HTML does not have a well-formedness constraint, defines graceful error handling&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  Omitted end tags&lt;br /&gt;
|&lt;br /&gt;
For some elements, the end tag is optional and is implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Void elements must have the end tag omitted.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
** Unexpected characters occuring in or before attribute names.&lt;br /&gt;
** Unexpected occurrence of EOF.&lt;br /&gt;
** Unexpected characters before the DOCTYPE name.&lt;br /&gt;
** Missing DOCTYPE name.&lt;br /&gt;
** A &amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt; identifer in a &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier (Note: including either of these is a syntax error in HTML5; but, in XML only the &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier is allowed to occur on its own).&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
* The internal subset is permitted in XML, but meaningless (and forbidden) in HTML.&lt;br /&gt;
** In some cases, an internal subset in HTML would end up being partly rendered inline.&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
** &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;li&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;dt&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4013</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4013"/>
		<updated>2009-09-05T12:40:55Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Parsing */ Began reformatting and rewriting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.  The following table describes the differences between how each is parsed.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Well-formedness constraints&lt;br /&gt;
|  HTML does not have a well-formedness constraint, defines graceful error handling&lt;br /&gt;
|  Well-formedness errors are fatal&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  Unescaped Special Characters &lt;br /&gt;
|&lt;br /&gt;
Unescaped ampersands (U+0026 AMPERSAND - &amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;) are permitted within the content of &#039;&#039;normal elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039;, &#039;&#039;foreign elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039; where they are not considered to be &#039;&#039;ambiguous ampersands&#039;&#039;, and within &#039;&#039;Raw text elements&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Unescaped less than signs (U+003C LESS-THAN SIGN - &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) are permitted in &#039;&#039;Raw text elements&#039;&#039;, &#039;&#039;RCDATA elements&#039;&#039; and &#039;&#039;attribute values&#039;&#039;, excluding the &#039;&#039;unquoted attribute value syntax&#039;&#039;.&lt;br /&gt;
|  Unescaped ampersands and less-than signs may not appear within &#039;&#039;CharData&#039;&#039; or &#039;&#039;AttValue&#039;&#039; (basically, the normal text content of elements and attribute values.)  Violation of this constraint is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  Comment syntax&lt;br /&gt;
|  Comments must start with the four character sequence &amp;quot;&amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;/code&amp;gt;&amp;quot; and must be ended by the three character sequence &amp;quot;&amp;lt;code&amp;gt;--&amp;gt;&amp;lt;/code&amp;gt;&amp;quot;.  The content of comments must not start with a single U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor start with a U+002D HYPHEN-MINUS (-) character followed by a U+003E GREATER-THAN SIGN (&#039;&amp;gt;&#039;) character, nor contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a U+002D HYPHEN-MINUS (-) character.  Violating these constraints is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  The content of comments must not contain two consecutive U+002D HYPHEN-MINUS (-) characters, nor end with a hypen. Violating this is a well-formedness error.&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
|  Omitted end tags&lt;br /&gt;
|&lt;br /&gt;
For some elements, the end tag is optional and is implied by certain specified conditions.  For example, the end tag for the &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element is implied by a subsequent &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
Void elements must have the end tag omitted.&lt;br /&gt;
&lt;br /&gt;
Omitting the end tag for other elements is a parse error and various error recovery procedures are applied appropriately.&lt;br /&gt;
|  End tags must be explicitly included for all elements, except empty elements using the &#039;&#039;EmptyElemTag&#039;&#039; syntax.&lt;br /&gt;
|  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THIS PAGE IS IN THE PROCESS OF BEING REVISED&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
** Unexpected characters occuring in or before attribute names.&lt;br /&gt;
** Unexpected occurrence of EOF.&lt;br /&gt;
** Unexpected characters before the DOCTYPE name.&lt;br /&gt;
** Missing DOCTYPE name.&lt;br /&gt;
** A &amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt; identifer in a &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier (Note: including either of these is a syntax error in HTML5; but, in XML only the &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier is allowed to occur on its own).&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
* The internal subset is permitted in XML, but meaningless (and forbidden) in HTML.&lt;br /&gt;
** In some cases, an internal subset in HTML would end up being partly rendered inline.&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
** &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;li&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;dt&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4012</id>
		<title>HTML vs. XHTML</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=HTML_vs._XHTML&amp;diff=4012"/>
		<updated>2009-09-05T08:01:31Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* MIME Types */ Reformatted as a table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Differences Between HTML and XHTML ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;border: 1px dashed lightgray; background-color: #FFF8E4; padding: .5em 1em;&amp;quot;&amp;gt;Please note that the information in here is based upon the current spec for (X)HTML5.  Some of the issues technically do not apply to previous versions of HTML.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although HTML and XHTML appear to have similarities in their syntax, they are significantly different in many ways.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;&#039;Note&#039;&#039;&#039;: As the current WHATWG document is a draft, this section will need to track to a moving target.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Feature&lt;br /&gt;
!  HTML Requirement&lt;br /&gt;
!  XHTML Requirement&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
|  Mime Type&lt;br /&gt;
|  Must use &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  Must use an XML MIME type, such as &amp;lt;code&amp;gt;application/xml&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
|  It is the MIME type that determines what type of document you are using.  Any document, including a document authored with the intention of being XHTML, served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is technically an HTML document.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that XHTML 1.0 previously defined that documents adhering to the compatibility guidelines were allowed allowed to be served as &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt;, but HTML 5 now defines that such documents are HTML, not XHTML.&lt;br /&gt;
&lt;br /&gt;
=== Parsing ===&lt;br /&gt;
&lt;br /&gt;
XHTML uses XML parsing requirements. HTML uses its own which are defined much more closely to the way browsers actually handle HTML today.&lt;br /&gt;
&lt;br /&gt;
* In XHTML, well-formedness errors are fatal. In HTML, error handling rules are much more graceful. XML well-formedness errors, some of which are also syntax errors in HTML, include the following:&lt;br /&gt;
** Unencoded ampersands (&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;), and less than signs (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;) (This does not apply to &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections). (Note: in HTML, an unencoded ampersand is allowed in some cases.)&lt;br /&gt;
** Comments containing extra pairs of hyphens or ending with a hyphen. e.g.&lt;br /&gt;
*** &amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;i&amp;gt; syntax -- error &amp;lt;/i&amp;gt;--&amp;amp;gt;&amp;lt;/code&amp;gt; or&lt;br /&gt;
*** &amp;lt;code&amp;gt;&amp;amp;lt;!--&amp;lt;i&amp;gt; syntax error -&amp;lt;/i&amp;gt;--&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Mismatched end tags (does not apply to elements with optional tags) &lt;br /&gt;
** Unclosed tags.&lt;br /&gt;
** Unexpected characters occuring in or before attribute names.&lt;br /&gt;
** Unexpected occurrence of EOF.&lt;br /&gt;
** Unexpected characters before the DOCTYPE name.&lt;br /&gt;
** Missing DOCTYPE name.&lt;br /&gt;
** A &amp;lt;code&amp;gt;PUBLIC&amp;lt;/code&amp;gt; identifer in a &amp;lt;code&amp;gt;DOCTYPE&amp;lt;/code&amp;gt; without a &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier (Note: including either of these is a syntax error in HTML5; but, in XML only the &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; identifier is allowed to occur on its own).&lt;br /&gt;
** End tags with attributes. &lt;br /&gt;
** Unexpected end tags (in HTML, an unexpected &amp;lt;code&amp;gt;&amp;amp;lt;/br&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;/p&amp;gt;&amp;lt;/code&amp;gt; can cause the start tag to be implied before it).&lt;br /&gt;
* The internal subset is permitted in XML, but meaningless (and forbidden) in HTML.&lt;br /&gt;
** In some cases, an internal subset in HTML would end up being partly rendered inline.&lt;br /&gt;
* The sequence of characters &amp;amp;quot;&amp;lt;code&amp;gt;]]&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;amp;quot; in content when it does not mark the end of a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section is a well-formedness error in XHTML, but valid in HTML.&lt;br /&gt;
* In XHTML: &amp;lt;code&amp;gt;&amp;amp;lt;![CDATA[...]]&amp;amp;gt;&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; section. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;&amp;amp;lt;?foo ...?&amp;amp;gt;&amp;lt;/code&amp;gt; is a processing instruction. In HTML, it&#039;s a bogus comment.&lt;br /&gt;
* In HTML, the trailing slash used for the empty element syntax is a parse error for non-void elements (see below), but is ignored in all cases.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. (Note: the definition of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; differs from that in XML). In XML, they&#039;re parsed as normal elements (which means that things that look like comments are treated as &amp;lt;em&amp;gt;real&amp;lt;/em&amp;gt; comments, and things that look like start tags actually are start tags).&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; elements. (Note: The definition of &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; differs from that in SGML and there is no &amp;lt;code&amp;gt;RCDATA&amp;lt;/code&amp;gt; in XML).&lt;br /&gt;
* In HTML, if scripting is enabled, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element is parsed as an &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; element. If scripting is disabled, it&#039;s parsed as a normal element. In XHTML, the element is always parsed as a normal element, and can&#039;t really be used to stop content from being present when script is disabled.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;noembed&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;noframes&amp;lt;/code&amp;gt; elements are parsed as &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; elements. In XHTML, they are parsed as normal elements, and therefore do not stop content from being used.&lt;br /&gt;
* White space characters in attribute values are [http://www.w3.org/TR/REC-xml/#AVNormalize normalized] to spaces in XHTML.&lt;br /&gt;
* In HTML, elements with optional tags are implied in certain conditions.&lt;br /&gt;
* In HTML, tags for certain elements, which appear out of context, are ignored. This includes &amp;lt;code&amp;gt;caption&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frame&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;frameset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;optgroup&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The &amp;lt;code&amp;gt;plaintext&amp;lt;/code&amp;gt; element has a special parsing requirement in HTML. (It is, however, forbidden.)&lt;br /&gt;
* In HTML, a line feed that immediately follows a &amp;lt;code&amp;gt;pre&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;listing&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; start tag is ignored.&lt;br /&gt;
* &amp;lt;em&amp;gt;Many other special handling of edge cases and error conditions, not all of which are listed here, occur in HTML.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
* In HTML, [http://wiki.whatwg.org/wiki/FAQ#What_will_the_DOCTYPE_be.3F the &amp;lt;code&amp;gt;doctype&amp;lt;/code&amp;gt; is required]. In XHTML, it is optional.&lt;br /&gt;
* In HTML, the DOCTYPE is case insensitive. (e.g. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;!doctype html&amp;amp;gt;&amp;lt;/code&amp;gt;, or any case variation of that is acceptable).  In XHTML, the DOCTYPE, if used, is case sensitive and must be well-formed XML.  i.e. &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;, with optional PUBLIC and/or SYSTEM identifiers.&lt;br /&gt;
* In XHTML, tag names and attribute names are case sensitive. In HTML, they are case insensitive.&lt;br /&gt;
* In XHTML, non-empty elements require both a start and an end tag. In HTML, certain elements allow the omission of either or both:&lt;br /&gt;
** &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;body&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;li&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;dt&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;colgroup&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;thead&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; (both)&lt;br /&gt;
** &amp;lt;code&amp;gt;tfoot&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;td&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
** &amp;lt;code&amp;gt;th&amp;lt;/code&amp;gt; (end tag)&lt;br /&gt;
* In XHTML, empty elements may use either the empty element syntax (&amp;lt;code&amp;gt;&amp;amp;lt;br/&amp;amp;gt;&amp;lt;/code&amp;gt;) or have an end tag immediately follow the start tag (&amp;lt;code&amp;gt;&amp;amp;lt;br&amp;amp;gt;&amp;amp;lt;/br&amp;amp;gt;&amp;lt;/code&amp;gt;). In HTML, the empty element syntax (trailing slash) is allowed on void elements, but forbidden on other elements. However, it serves no purpose whatsoever and can be omitted. End tags for void elements are forbidden.&lt;br /&gt;
** &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;link&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;br&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;img&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;embed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;param&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;area&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt;&lt;br /&gt;
* HTML allows attribute minimisation (i.e. omitting the equals sign and the value), XHTML does not.&lt;br /&gt;
* HTML allows the use of unquoted attribute values, XHTML does not.&lt;br /&gt;
* XHTML allows the use of &amp;lt;code&amp;gt;CDATA&amp;lt;/code&amp;gt; sections, HTML does not.&lt;br /&gt;
* XHTML allows the use of processing instructions, HTML does not.&lt;br /&gt;
* In HTML, all entity references are predefined and do not require a DTD. But because there is no DTD for XHTML5, entity references cannot be used in XHTML. (excluding the 5 predefined entities: &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;apos;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** You can provide your own DTD for use with your own validating parser, but be aware that browsers do not use validating parsers and will not read the DTD.&lt;br /&gt;
* The valid set of unicode characters in XML 1.0 is limited beyond that in HTML.&lt;br /&gt;
* Namespace prefixes are permitted in XHTML. They are forbidden in HTML.&lt;br /&gt;
&lt;br /&gt;
=== Markup ===&lt;br /&gt;
&lt;br /&gt;
* The [http://wiki.whatwg.org/wiki/FAQ#What_is_the_namespace_declaration.3F namespace declaration] (&amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; attribute) is required in XHTML.  The xmlns attribute is also allowed to appear on any element in HTML on the condition that is has the value &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XHTML mildly easier.  When parsed by an HTML parser, the attribute ends up in the null namespace&lt;br /&gt;
** In XML (with an [http://www.w3.org/TR/xml-names/ XML Namespaces]-aware parser), an xmlns attribute is part of the namespace declaration mechanism, and an element cannot actually have an xmlns attribute in the null namespace.  In DOM implementations, the attribute ends up in the &amp;quot;&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; namespace.&lt;br /&gt;
* XHTML allows non XHTML elements and attributes (in different namespaces) to be used, HTML does not.&lt;br /&gt;
* XHTML uses the &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute, HTML uses &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; instead,&lt;br /&gt;
* XML ID introduces &amp;lt;code&amp;gt;xml:id&amp;lt;/code&amp;gt;, which could be used in XHTML. In HTML it has no effect.&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; element may be used. In XHTML, it is forbidden.&lt;br /&gt;
* XHTML can use &amp;lt;code&amp;gt;xml:base&amp;lt;/code&amp;gt;, HTML cannot. &lt;br /&gt;
* In XHTML, &amp;lt;code&amp;gt;table&amp;lt;/code&amp;gt; elements may contain child &amp;lt;code&amp;gt;tr&amp;lt;/code&amp;gt; elements. In the HTML serialisation, due to backwards compatibility constraints, this is not possible (though it may be done through DOM manipulation).&lt;br /&gt;
&lt;br /&gt;
=== Character Encoding ===&lt;br /&gt;
&lt;br /&gt;
* In XHTML, the XML declaration may be used to [http://wiki.whatwg.org/wiki/FAQ#How_do_I_specify_the_character_encoding.3F specify the character encoding]. In HTML, the XML declaration is forbidden&lt;br /&gt;
* In HTML, the &amp;lt;code&amp;gt;meta&amp;lt;/code&amp;gt; element with a &amp;lt;code&amp;gt;charset&amp;lt;/code&amp;gt; attribute may be used instead. It is forbidden in XHTML and is ignored if included.&lt;br /&gt;
* The default character encoding for XHTML is, according to XML rules, &amp;lt;code&amp;gt;UTF-8&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UTF-16&amp;lt;/code&amp;gt;. If the encoding is unspecified in HTML, it should be determined through implementation specific heuristics or fallback to a default value (Note: this section of the spec is not yet finished).&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;document.writeln()&amp;lt;/code&amp;gt; cannot be used in XHTML, they can in HTML. &lt;br /&gt;
* In XHTML, the use of the &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt; property requires that the string be a well-formed fragment of XML. &lt;br /&gt;
* DOM APIs are case sensitive in XHTML and some are case insensitive in HTML.  (This does not apply to elements which are not in the HTML namespace)&lt;br /&gt;
** Element.tagName and Node.nodeName return the value in uppercase.&lt;br /&gt;
** Document.createElement() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Element.setAttributeNode() will change the attribute name to lowercase.&lt;br /&gt;
** Element.setAttribute() is case insensitive (the canonical form is lowercase).&lt;br /&gt;
** Document.getElementsByTagName() and Element.getElementsByTagName() are case insensitive.&lt;br /&gt;
** Document.renameNode(). If the new namespace is the HTML namespace, then the new qualified name will be lowercased before the rename takes place.&lt;br /&gt;
* In HTML, Document.createElement() will create an element in the HTML namespace.  In XML (including XHTML), the namespace is defined by both DOM2 and DOM3 to be null.&lt;br /&gt;
** In XHTML, browsers lack interoperability in this area.  In Firefox and Safari, the namespace is dependent upon the MIME type.  In Opera, it&#039;s dependent upon the root element.&lt;br /&gt;
* XPath expressions targeted at pre-HTML5 browsers need to use the XHTML namespace for XHTML and null for HTML. (HTML5 browsers would use the XHTML namespace even in HTML.)&lt;br /&gt;
&lt;br /&gt;
=== Stylesheets ===&lt;br /&gt;
&lt;br /&gt;
* Selectors, as used in CSS, match case sensitively in XHTML, but case insensitively in HTML.&lt;br /&gt;
* CSS requires special handling of the body element in HTML for painting backgrounds on the canvas, which do not apply to XHTML.&lt;br /&gt;
&lt;br /&gt;
== Differences Between HTML 4.01 and HTML 5 ==&lt;br /&gt;
&lt;br /&gt;
See [http://dev.w3.org/html5/html4-differences/ HTML 5 differences from HTML 4].&lt;br /&gt;
&lt;br /&gt;
== Differences Between DOM Level 2.0, 3.0 and the HTML 5 DOM APIs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This section might belong on a separate page.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* TODO (need to talk about the changes to the DOM API that HTML5 is making, compared with DOM2 and DOM3)&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
* [http://meiert.com/de/publications/translations/whatwg.org/html-vs-xhtml/ German translation: &amp;quot;HTML 5 und XHTML 5 im Vergleich (WHATWG)&amp;quot;]&lt;br /&gt;
* [http://dancewithnet.com/2007/10/28/differences-between-html-and-xhtml/ Chinese translation: &amp;quot;HTML和XHTML的不同&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4011</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4011"/>
		<updated>2009-09-05T07:53:11Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Added xml:lang&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a given, conforming HTML document is a polyglot document.  This does not list all issues that would need to be checked to ensure that a given, conforming XHTML document is a polyglot document, however.  As such, syntactic XML constructs which are not valid in HTML are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. For HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; attribute&lt;br /&gt;
|  Meaningless talisman in HTML.&lt;br /&gt;
|  In DOM implementations for XHTML, &amp;lt;code&amp;gt;xml:lang&amp;lt;/code&amp;gt; represents the lang attribute in the XML namespace.  For HTML, it represents an attribute in no namespace with the literal localname &amp;quot;xml:lang&amp;quot;. This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using either: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, ensure the encoding is declared in the transport layer (HTTP Content-Type header), or use UTF-8 or UTF-16 with an appropriate Byte Order Mark.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Chars&lt;br /&gt;
|  Unescaped ampersand (&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;) or less-than (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;) characters are not allowed in text and attribute values, within XHTML. (This doesn&#039;t include within CDATA sections, comments, etc.)&lt;br /&gt;
|  HTML can include unescaped ampersands where they are unambiguous, and unescaped less than characters within rawtext or RCDATA content, and quoted attributes.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-  &lt;br /&gt;
!  The &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  The content model of these elements is RCDATA in HTML, but PCDATA in XHTML.  These elements may not contain escaping text spans (&amp;lt;code&amp;gt;&amp;amp;lt;!-- ... --&amp;amp;gt;&amp;lt;/code&amp;gt;, because they look like comments), or unescaped ampersands or less than characters.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4010</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4010"/>
		<updated>2009-09-05T06:53:09Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Described escaping text spans for RCDATA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a given, conforming HTML document is a polyglot document.  This does not list all issues that would need to be checked to ensure that a given, conforming XHTML document is a polyglot document, however.  As such, syntactic XML constructs which are not valid in HTML are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using either: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, ensure the encoding is declared in the transport layer (HTTP Content-Type header), or use UTF-8 or UTF-16 with an appropriate Byte Order Mark.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Chars&lt;br /&gt;
|  Unescaped ampersand (&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;) or less-than (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;) characters are not allowed in text and attribute values, within XHTML. (This doesn&#039;t include within CDATA sections, comments, etc.)&lt;br /&gt;
|  HTML can include unescaped ampersands where they are unambiguous, and unescaped less than characters within rawtext or RCDATA content, and quoted attributes.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-  &lt;br /&gt;
!  The &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  The content model of these elements is RCDATA in HTML, but PCDATA in XHTML.  These elements may not contain escaping text spans (&amp;lt;code&amp;gt;&amp;amp;lt;!-- ... --&amp;amp;gt;&amp;lt;/code&amp;gt;, because they look like comments), or unescaped ampersands or less than characters.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4009</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4009"/>
		<updated>2009-09-05T06:49:17Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Updted unescaped special chars&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a given, conforming HTML document is a polyglot document.  This does not list all issues that would need to be checked to ensure that a given, conforming XHTML document is a polyglot document, however.  As such, syntactic XML constructs which are not valid in HTML are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using either: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, ensure the encoding is declared in the transport layer (HTTP Content-Type header), or use UTF-8 or UTF-16 with an appropriate Byte Order Mark.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Chars&lt;br /&gt;
|  Unescaped ampersand (&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;) or less-than (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;) characters are not allowed in text and attribute values, within XHTML. (This doesn&#039;t include within CDATA sections, comments, etc.)&lt;br /&gt;
|  HTML can include unescaped ampersands where they are unambiguous, and unescaped less than characters within rawtext or RCDATA content, and quoted attributes.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-  &lt;br /&gt;
!  The &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  The content model of these elements is RCDATA in HTML, but PCDATA in XHTML.  These elements may not contain escaping text spans, or unescaped ampersands or less than characters.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4008</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4008"/>
		<updated>2009-09-05T01:40:25Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a given, conforming HTML document is a polyglot document.  This does not list all issues that would need to be checked to ensure that a given, conforming XHTML document is a polyglot document, however.  As such, syntactic XML constructs which are not valid in HTML are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using either: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, ensure the encoding is declared in the transport layer (HTTP Content-Type header), or use UTF-8 or UTF-16 with an appropriate Byte Order Mark.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Unescaped Special Chars&lt;br /&gt;
|  Unescaped ampersand (&amp;lt;code&amp;gt;&amp;amp;amp;&amp;lt;/code&amp;gt;) or less-than (&amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;) characters are not allowed in XHTML&lt;br /&gt;
|  HTML can include unescaped ampersands where they are unambiguous, and unescaped less than characters within rawtext or RCDATA content, and quoted attributes.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-  &lt;br /&gt;
!  The &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;textarea&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;title&amp;lt;/code&amp;gt; Elements&lt;br /&gt;
|  The content model of these elements is RCDATA in HTML, but PCDATA in XHTML.  These elements may not contain escaping text spans, or unescaped ampersands or less than characters.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4007</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4007"/>
		<updated>2009-09-04T18:57:36Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Updated character encoding issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using either: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, ensure the encoding is declared in the transport layer (HTTP Content-Type header), or use UTF-8 or UTF-16 with an appropriate Byte Order Mark.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4006</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4006"/>
		<updated>2009-09-04T17:59:51Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Added noscript and iframe elements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, or otherwise ensure the encoding is declared in the transport layer (HTTP Content-Type header).&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  The &amp;lt;code&amp;gt;noscript&amp;lt;/code&amp;gt; Element is forbidden in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element Content&lt;br /&gt;
|  The &amp;lt;code&amp;gt;iframe&amp;lt;/code&amp;gt; Element must be empty in XHTML documents.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4005</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4005"/>
		<updated>2009-09-04T17:20:00Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, or otherwise ensure the encoding is declared in the transport layer (HTTP Content-Type header).&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4004</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4004"/>
		<updated>2009-09-04T17:19:13Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Merged case sensitivity issues, mentioned legacy-compat DOCTYPE.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt; (or the legacy-compat version).&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, or otherwise ensure the encoding is declared in the transport layer (HTTP Content-Type header).&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4003</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4003"/>
		<updated>2009-09-04T17:16:32Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Described more polyglot document requirements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Level Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  DOCTYPE Declaration&lt;br /&gt;
|  The DOCTYPE declaration is case sensitive in XHTML. Must be &amp;lt;code&amp;gt;&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Default Character Encoding&lt;br /&gt;
|  The default character encoding for &amp;lt;code&amp;gt;text/html&amp;lt;/code&amp;gt; is UTF-8. For &amp;lt;code&amp;gt;application/xhtml+xml&amp;lt;/code&amp;gt; (and other XML types), it is UTF-8.&lt;br /&gt;
|  Use UTF-8 and declare this using: &amp;lt;code&amp;gt;&amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt;, or otherwise ensure the encoding is declared in the transport layer (HTTP Content-Type header).&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  The use of this sequence of characters is a well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Unquoted attributes are not allowed in XHTML.&lt;br /&gt;
|  &lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Minimised attributes (attributes without a value) cannot be used in XML.&lt;br /&gt;
|  Used expanded form. e.g. &amp;lt;code&amp;gt;disabled=&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;disabled=&amp;quot;disabled&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Void elements require explicit closing with trailing slashes.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Optional start- and end-tags&lt;br /&gt;
|  Neither start- nor end-tags may be omitted.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; Element&lt;br /&gt;
|  In HTML, the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element will be implied automatically, but in XHTML, it is optional.&lt;br /&gt;
|  Explicitly include the &amp;lt;code&amp;gt;tbody&amp;lt;/code&amp;gt; element.&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  All tag names and attribute names for HTML elements must be written in lowercase. Tag names for SVG and MathML must be written in the case defined by those language specifications.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-Compatible (and SVG+MathML)&lt;br /&gt;
|-&lt;br /&gt;
!  Character Entity References&lt;br /&gt;
|  Without a DTD, only the 5 predefined entity references in XML may be used.&lt;br /&gt;
|  The additional entity references defined and supported using the XHTML 1.0 or 1.1 DOCTYPE cannot be used in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4002</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4002"/>
		<updated>2009-09-04T16:52:10Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Named Entities&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Type Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  The &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt; root element needs to have an &amp;lt;code&amp;gt;xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&amp;lt;/code&amp;gt; attribute. The &amp;lt;code&amp;gt;svg&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; elements need to declare the appropriate namespaces for SVG and MathML, respectively, and, if used within the document, XLink.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.  This issue is &#039;&#039;&#039;Unavoidable&#039;&#039;&#039;.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  Well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
! ...&lt;br /&gt;
| (This table is incomplete)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4001</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4001"/>
		<updated>2009-09-04T10:03:31Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Named Entities&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
!  Polyglot Type Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.&lt;br /&gt;
|&lt;br /&gt;
|  &#039;&#039;&#039;Unavoidable&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  Well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML.&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
! ...&lt;br /&gt;
| (This table is incomplete)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4000</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=4000"/>
		<updated>2009-09-04T09:59:56Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: /* Polyglot Document Checking */ Added LF after Start Tags issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Named Entities&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|  Polyglot Type Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.&lt;br /&gt;
|&lt;br /&gt;
|  &#039;&#039;&#039;Unavoidable&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  Well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
!  Line feeds after start tags&lt;br /&gt;
|  A line feed (LF) after the start tags for &amp;lt;code&amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or the non-conforming &amp;lt;code&amp;gt;&amp;amp;lt;listing&amp;amp;gt;&amp;lt;/code&amp;gt; element) is ignored in HTML. (Note that CR and CRLF are treated equivalently to LF)&lt;br /&gt;
|  Avoid using line feeds after these start tags&lt;br /&gt;
|  Strict Polyglot&lt;br /&gt;
|-&lt;br /&gt;
! ...&lt;br /&gt;
| (This table is incomplete)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=3999</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=3999"/>
		<updated>2009-09-04T08:34:16Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Added polyglot document checking section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional &amp;amp;lt;/p&amp;amp;gt; ahead of new structural element&lt;br /&gt;
|  Boolean option to warn about omitted paragraph end tags ahead of start tags of section, nav, article, aside, header and footer&lt;br /&gt;
|  &lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Case sensitivity&lt;br /&gt;
|  Boolean option to check tag names and attribute names for case sensitivity.&lt;br /&gt;
|  HTML and MathML elements and attributes are all lowercase, but SVG contains some camel case names.&lt;br /&gt;
|-&lt;br /&gt;
!  Named Entities&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# XHTML 1.0 entity references only ([http://www.zeldman.com/2009/08/31/loving-html5/#comment-48070 request])&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Polyglot Document Checking ==&lt;br /&gt;
&lt;br /&gt;
There are 3 levels of polyglot documents that can be created.&lt;br /&gt;
&lt;br /&gt;
;Talismans Only :An HTML document that contains a number of XML-like syntactic constructs purely as a matter of convention. The document itself may not entirely conform with all well-formedness requirements or may not function properly for other reasons if it were to be treated as XHTML.  (This is not really a true polyglot document, but is included here for completeness)&lt;br /&gt;
;XHTML Compatible :A valid HTML document that is also fully conforming XHTML.  However, the different processing requirements between HTML and XHTML may give slightly different results that would not match in a tree comparison and is not round-trippable.&lt;br /&gt;
;Strict Polyglot :A valid HTML document that is also fully conforming XHTML, which would pass a tree comparison of the resulting DOMs (excluding unavoidable differences), and which is fully round-trippable.&lt;br /&gt;
&lt;br /&gt;
Note that these descriptions intentionally ignore differences that could be caused by script and stylesheet processing.&lt;br /&gt;
&lt;br /&gt;
The following is a table of issues that would need to be checked to ensure that a document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
Any syntactic XML construct which is not valid in HTML is also assumed to be problematic, but are not listed here. For example, the internal subset of a DOCTYPE declaration or the use of CDATA sections within HTML elements.  In other words, this table only lists the things that would need to be checked to ensure that a fully conforming HTML document is a polyglot document.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|  Polyglot Type Requirement&lt;br /&gt;
|-&lt;br /&gt;
!  &amp;lt;code&amp;gt;xmlns&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmlns:&amp;lt;var&amp;gt;prefix&amp;lt;/var&amp;gt;&amp;lt;/code&amp;gt; attributes.&lt;br /&gt;
|  In DOM implementations for XHTML, these attributes are in the &amp;lt;code&amp;gt;http://www.w3.org/2000/xmlns/&amp;lt;/code&amp;gt; namespace. In HTML, these are in no namespace.&lt;br /&gt;
|&lt;br /&gt;
|  &#039;&#039;&#039;Unavoidable&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!  The characters &amp;quot;&amp;lt;code&amp;gt;]]&amp;gt;&amp;lt;/code&amp;gt;&amp;quot; in content&lt;br /&gt;
|  Well-formedness error in XHTML.&lt;br /&gt;
|&lt;br /&gt;
|  XHTML-compatible  &lt;br /&gt;
|-  &lt;br /&gt;
!  &amp;lt;code&amp;gt;script&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; element Content&lt;br /&gt;
|  In HTML, these elements are parsed as CDATA, allowing the use of unescaped special characters. In XHTML, these are parsed as #PCDATA, and any occurrence of the characters &amp;amp;lt; or &amp;amp;amp; must be escaped as &amp;lt;code&amp;gt;&amp;amp;amp;lt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;amp;amp;amp;&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
|  Scripts and stylesheets containing these characters should be linked externally instead.&lt;br /&gt;
|  XHTML-compatible&lt;br /&gt;
|-&lt;br /&gt;
! ...&lt;br /&gt;
| (This table is incomplete)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=3996</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=3996"/>
		<updated>2009-09-03T14:11:19Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: Fixed a row heading, adjusted named entities description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Named Entities&lt;br /&gt;
|  Options to allow:&lt;br /&gt;
# The 5 predefined named entity references only (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
!  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=3995</id>
		<title>Validator.nu Useful Warning Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Validator.nu_Useful_Warning_Requests&amp;diff=3995"/>
		<updated>2009-09-03T14:08:55Z</updated>

		<summary type="html">&lt;p&gt;Lachlan Hunt: List a few commonly requested warnings to begin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page documents requests for potential optional checks to be implemented by HTML5 QA tools, like Validator.nu.  This is only intended to document feature requests, and may not reflect what is, or will be, implemented in the future.&lt;br /&gt;
&lt;br /&gt;
The following tables describe issues that a QA tool might provide options to warn about.  None of the issues listed in these tables are technically conformance errors, but have been requested directly by authors and/or are considered to be useful for authors to be warned about.&lt;br /&gt;
&lt;br /&gt;
== Syntactic Issues ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Quoted attributes&lt;br /&gt;
|  Boolean option to require quoted attribute values for all attributes.&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Minimised attributes&lt;br /&gt;
|  Boolean option to require all boolean attributes to use the non minimised form. e.g. &amp;amp;lt;input disabled=&amp;quot;disabled&amp;quot;&amp;amp;gt; instead of &amp;amp;lt;input disabled&amp;amp;gt;&lt;br /&gt;
|  XHTML-like syntactic convention commonly requested by authors.&lt;br /&gt;
|-&lt;br /&gt;
!  Trailing Slashes&lt;br /&gt;
|  Options to either:&lt;br /&gt;
# Warn about unnecessary trailing slashes in void elements&lt;br /&gt;
# Require trailing slashes for in void elements&lt;br /&gt;
# None (default)&lt;br /&gt;
|  Some authors like to follow the XML convention, others prefer to always omit them, and others don&#039;t care that much. ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional End Tags&lt;br /&gt;
|  Boolean option to require end tags for all non-void elements, which normally have optional end tags&lt;br /&gt;
|  ([http://www.zeldman.com/superfriends/guide/#validation request])&lt;br /&gt;
|-&lt;br /&gt;
!  Optional Start Tags&lt;br /&gt;
|  Options to require start tags for the elements &#039;html&#039;, &#039;head&#039;, &#039;body&#039; and &#039;tbody&#039;.&lt;br /&gt;
|  XHTML-like convention, mostly applies to html, head and body.  Some authors still choose to omit tbody, but like to always include the others.&lt;br /&gt;
|-&lt;br /&gt;
!  Named Entities&lt;br /&gt;
|  Options to only allow:&lt;br /&gt;
# The 5 predefined named entity references (lt, gt, amp, quot, apos)&lt;br /&gt;
# HTML 4.01 entity references only&lt;br /&gt;
# All named entity references&lt;br /&gt;
| Warning about HTML4.01 references is a useful check for compatibility reasons, due to existing legacy browsers that don&#039;t support the additional entity references imported from MathML yet.  Use of only the 5 predefined entity references is needed for those who want XHTML compatibility, without a DOCTYPE.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Other Warnings ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  Title&lt;br /&gt;
!  Description&lt;br /&gt;
!  Notes&lt;br /&gt;
|-&lt;br /&gt;
!  Untitled document&lt;br /&gt;
|  Warn about the use of meaningless or empty titles. e.g. &amp;amp;lt;title&amp;amp;gt;Untitled document&amp;amp;lt;title&amp;amp;gt; (or similar)&lt;br /&gt;
|  This is a common default title inserted by authoring tools. Advise the author to use a more appropriate title for the document.  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|-&lt;br /&gt;
|  Unnecessary whitespace&lt;br /&gt;
|  Warn about long stretches of unnecessary whitespace&lt;br /&gt;
|  ([http://krijnhoetmer.nl/irc-logs/whatwg/20090903#l-132 request])&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lachlan Hunt</name></author>
	</entry>
</feed>