What are the valid declarations for html5? - html

I've seen the following declaration to utilize html5.
<!DOCTYPE html>
However does one really need to specify this? What actually happens when you use just: <!DOCTYPE>. How can I check what doctype is being used and if there is a default being used with a browser?

What actually happens when you use just: <!DOCTYPE>
Using just <!DOCTYPE> instead of <!DOCTYPE html> triggers browsers to go into “quirks mode”:
https://en.wikipedia.org/wiki/Quirks_mode
https://developer.mozilla.org/en-US/docs/Quirks_Mode_and_Standards_Mode
https://hsivonen.fi/doctype/
So yes to stop browsers from going into quirks mode you really do need to use <!DOCTYPE html>.
How can I check what doctype is being used
Browser don’t “use” the doctype for anything other than deciding whether to go into quirks mode.
…if there is a default being used with a browser?
There is no default doctype browsers use. The only default is: If a doc has no doctype at all, then browsers go into quirks mode. The shortest possible doctype to prevent browsers from going into quirks mode is <!DOCTYPE html>. That’s why it was chosen in the HTML spec to be defined as the standard doctype for HTML (including for all future versions of HTML).

If you are using html 5 you should use
<!DOCTYPE html>
fore on doctype tags have a look on this link

Related

Multiple Doctypes in a single HTML Document

If a HTML document has two doctypes, how will the doctypes affect the rendering of the page and which doctype would the browser pick? Is having two (or more) doctypes in a single document valid or confusing?
Example:
<!DOCTYPE html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
</html>
Only a single doctype declaration is permitted. This follows rather directly from the HTML specifications as well the HTML5 drafts, and it can also be checked using a validator.
Thus, there is no specification of what should happen. The natural expectation is that since browsers process the doctype declaration only in “doctype sniffing” when deciding on the browser mode (Quirks Mode vs. Standards Mode), only the first doctype declaration takes effect and the other is ignored.
This can be tested e.g. as follows (using an HTML 3.2 doctype, which triggers Quirks Mode on all doctype-sniffer browsers):
<!DOCTYPE HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<title>Testing duplicate doctype effect</title>
<script>
document.write(document.compatMode);
</script>
</html>
This displays “CSS1Compat” (= Standards Mode), whereas swapping the doctype declarations causes “BackCompat” (= Quirks Mode).
I believe the very first DOCTYPE is used by the browser and it's against the specification to have more than one in a document.
I think (not sure) that the only situation when multiple DOCTYPE-s may be valid is when using IE conditional comments. Browsers other than IE won't see those, of course.
I remember reading a blog entry (can't find it now, so I may be wrong in this) but some (most?) browsers even ignore the DOCTYPE if it's not the first thing they encounter. (This may have been a bug that got fixed since.)
Here's W3School's reference page about DOCTYPE:
http://www.w3schools.com/tags/tag_doctype.asp
If you have multiple DOCTYPE-s in your HTML page then browser will consider first one, browser parse the DOM line by line. Once browser get DOCTYPE then it will stop looking for other doctypes and will jump to search for HTML tag.
In the above question HTML-5 DOCTYPE is mentioned first and then
HTML-4, according to this browser will render things as HTML-5 doctype
It is better to try once in http://www.w3schools.com/ ... Try to use 'code' or 'kbd' or 'dfn' or 'samp' or 'strong' tag by mentioning both doctypes by priority.

No userData behavior when I have <!DOCTYPE html>?

I wanted to use HTML5 localStorage in IE9 but it does not support local file system (or file://)
So I fallback to use userData behavior.
But I couldn't get it to work.
After all the testing, I figured out that if I remove the <!DOCTYPE html> at the beginning of my html, everything works!
Can someone please tell me why?
and if <!DOCTYPE html> is a must for HTML5 file?
HTML5 is not an official standard yet. If you set a doctype to a given standard, but use commands which are not part of that standard, or you use a doctype the the browser does not know, browser might not interpret these commands.
Maybe the W3C-validator http://validator.w3.org/ can help you

Are there different HTML5 doctypes?

When I use to write pages in XHTML. I had 3 types of doctype - strict, transitional and frameset.
Do we have them in HTML5?
the html5 doctype is
<!DOCTYPE html>
When you use the new HTML5 DOCTYPE, it triggers browsers to render the page in standards compliant mode.
Standards-compliant mode
In standards-compliant mode, the web browser assumes the page has been authored to the web content specification declared; code that does not conform to the declared standard may not display, or may display incorrectly.
For a web browser’s standards-compliant mode to be triggered, the webpage must have a complete document type declaration, including the URI to the document type definition (DTD).
There is typically less variation in webpage display between different browsers when standards-compliant mode is triggered, as the same centralised W3C specification is used as a reference when creating the web browser software.
Courtesy this link
No, the HTML5 doctype
<!DOCTYPE html>
is unique, since it was chosen as the shortest doctype (string) able to turn all current browser (even IE6, afaik) in standard mode (and it can be written in upper/mixed case)
HTML 5 requires a doctype for legacy compatibility. It has a short doctype <!DOCTYPE html> and a long doctype <!DOCTYPE html SYSTEM "about:legacy-compat"> The long doctype is only for systems that cannot generate the short one. - HTML 5 specification
No, HTML5 is just HTML5, there are no subsets.
There is but one:
<!DOCTYPE html>
The standard required preamble in the HTML serialisation of HTML5 (i.e. when served as text/html) is
<!DOCTYPE html>
Some HTML generators, most notably XSLT, have difficulty creating the above doctype. They may use
<!DOCTYPE html SYSTEM "about:legacy-compat">
In the XML serialisation of HTML5 (i.e. when served as application/xhtml+xml), the doctype may be either of the above, or it may be omitted entirely.
Note that these variations are not like strict, transitional or frameset. What is valid and invalid in HTML5 is the same for each of the above variations - leaving aside the orthogonal matter of differences between HTML and XML syntax.
HTML5 has only one and that is:
<!DOCTYPE html>

Is it safe to change to the HTML5 DOCTYPE?

My site is currently using:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
However, things like Facebook plugins are only valid in HTML5. So, is it safe to change my DOCTYPE to <!DOCTYPE html>? Will this affect anything?
Yes you can change your DOCTYPE,it will not affect anything that you have already done.In HTML 5 you will get some new features which you can use for your future purpose.Just check this link and you will get some idea about the features present in HTML 5
You can change it. Almost all browsers just look for html in the doctype to ensure they are parsing HTML. It will also remain the same with new versions of HTML.
You might want to do the following quick changes to the head element:
Change the meta element to <meta charset="utf-8">.
Drop type="text/css" when linking stylesheets and drop type="text/javascript" in script elements as these are the default values.
Change your DOCTYPE as you said, it shouldn't affect what you've already done in HTML4, but it does give you options of some of the new HTML5 features in future.
The only thing that such a doctype change will affect is validation. Other than that, the doctype declaration only affects browser mode (quirks / almost standard / standard), and XHTML 1.0 and HTML5 doctype have the same effect in this respect.
If you don’t use a validator, there is no reason to change. If you do, you should select the doctype according to which HTML version your document is closer to. Besides, HTML5 validation is completely different from XHTML 1.0 validation (heuristic mixed-strategy checking vs. formal well-defined but limited checking).
It shouldn't affect anything, but it's considered good markup to leave it as it is. HTML5 should work anyway.

Do we use doctype only to render webpages in standard mode with IE6?

Do we use doctype only to render webpages in standard mode with IE6 ? or does doctype do something more than that?
The doctype actually tells ALL browsers the type of content in the page. In many browsers, you'll notice very little difference, but in IE it has two different rendering modes, so you'll see a larger difference.
You should be using a doctype on all of your HTML documents. The idea is that it will be a much simpler doctype in the future - HTML 5 looks like this:
<!DOCTYPE html>
Whereas HTML 4 is like this:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
And has Transitional or Strict options.
It's not just IE6, it tells all browsers how to attempt to render the page.
Good information here and here.
Doctype could also used to check that your page respects the W3C standard.