DocType HTML Attribute - asp.net

What is the purpose this and why this be added when we add new aspx page?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
What I have got behviour is, When I remove from page, the design look good and my modal popup is not working in IE only but working on Mozila, and when I add this design disturbed and modal popup working fine.
Thanks

the doctype tells the browser what sort of rendering mode to use when rendering the web page. this can have effects on CSS layouts and cross browser development. Eric Meyer has a good article explaining it indepth.
http://www.ericmeyeroncss.com/bonus/render-mode.html
The one you point out there makes the browser view the html as XHTML 1.0 the full list of doc types allowed is here;
http://www.w3.org/QA/2002/04/valid-dtd-list.html

Read
A valid HTML document declares what
version of HTML is used in the
document. The document type
declaration names the document type
definition (DTD) in use for the
document
HTML version information
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
The Transitional type is used when HTML presentational features are included in the document instead of in a style sheet. This is done to accomodate older browsers that don't support CSS.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
The Frameset type is used in documents that have frames.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
The same three document types are also used in XHTML 1.0:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Since the declaration is actually a comment tag, it won't confuse older browsers that don't understand the statement.

Related

SVG is not rendering in IE 10 with Doctype HTML 4

<%# Page Language="C#" .. %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<body>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
</svg>
</body>
</html>
/*The above Code is not working. Not getting any output.
if replace the second line the Doctype as below, it works.
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Can any one help me in understanding whats the Key difference?
*/
The key difference is that
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
causes the browser to use quirks mode. IE does not support SVG in quirks mode.
whereas
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
causes the browser to be in almost standards mode.
You can turn your doctype into one that will render the SVG in IE9 very easily, just by adding a system identifier, like this:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
I don't know whether this will work IE10, but if IE10 follows the HTML5 doctype parsing rules like it should, even the above doctype will cause quirks mode, and therefore may cause SVG not to render.
HTML 4.0 was replaced as a W3C recommendation by HTML 4.01 over thirteen years ago in 1999 so the absolute minimum doctype you should use is
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
which will cause almost standards mode in HTML5 compliant browsers just like the XHTML doctype you mention does. But that was intended for people switching their sites from HTML 3.2.
Much better would be to ensure that your site works in standards mode. You can do that by using an HTML 4.01 strict doctype like
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
That's the current W3C recommendation but it's still a bit long to remember. The shortest string that will do the same job of putting browsers into standards mode is
<!DOCTYPE HTML>
which is why it was chosen for use in HTML5 and later documents.
The standard html 5 doctype is
<!DOCTYPE html>
You should use that.
IE 9/10 will only display SVG for html 5 documents and xhtml documents. Your alternative doctype marks the contents as xhtml so that's why that works.
Two Things:
Make sure that your web server is serving your SVG files with the proper mime-type: "image/svg+xml". I had this issue with an old version of Lighttpd.
You can override IE's rendering mode by adding the X-UA-Compatible Meta tag:
< meta http-equiv="X-UA-Compatible" content="IE=edge" />
This will force IE into standards mode, while keeping an older doctype. This would NOT be best practice, but seems to work in IE10.

IE8 displaying page incorrectly

For one reason or the other IE8 is not displaying my webpage properly. It works on every other major browser but everything is helter-skelter when I try to open the page on IE8 and since majority of the users of this page primarily use IE8, I cannot ignore it. Here's the link to it: http://www.gradschool.purdue.edu/gradexpo/mailinglist/
You haven't set a doctype. Put this at the very top of your page:
<!DOCTYPE html>
IE put itself into 'quirks' or Compatibility mode when it doesn't see a doctype, which will mess up your layout. Specifying a doctype will kick it into Standards mode which will remedy most problems. IE is still pretty useless at rendering CSS properly, so you might still have some issues.
Note you could also use the HTML 4.01 Strict doctype, but this will give the same result:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
get a doctype at the top of your html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
then run it through http://validator.w3.org
and fix other errors
In addition to the critical error of a missing doctype as others have pointed out, you have a few serious HTML errors.
W3C Validation
You have repeated your closing tags for </body> and </html>. You also have a couple unused closing div tags, </div>. All of the meta tags in your <body> need to be moved to within the <head> section. Browsers will handle these kinds of errors with unpredictable rendering.

IE9 CSS Wont work Chrome and Firefox works

I am working on a site that is based on CSS and DIVs
Unfortunately I can not manipulate the HTML.
I have the site looking great on Chrome and Firefox
For some reason IE9 will not render it right.
Please help.
The URL is http://2012.v8apps.com
You will have to manipulate html and add a DOCTYPE as the first line of your code.
<!DOCTYPE html>
Seems IE9 is rendering in quirks mode. Try specifying a doctype at the top of the page.
The first line of your page should one of the following:
HTML 4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
HTML 5
<!DOCTYPE html>
IE9 is also reporting that "CSS was ignored due to mime type mismatch". Could you move your styles into a .css file rather than in an .aspx file?
I had to add Response.ContentType and force text/css for Firefox to render.
The final DOCTYPE that did the trick is
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="w3.org/1999/xhtml">

Doctype Declaration: XHTML 1.0 vs. XHTML 1.1

Looking for details on when to use / not-use XHTML 1.0 vs. XHTML 1.1 DTD.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Reference link: http://www.w3.org/QA/2002/04/valid-dtd-list.html
Here's a good reference, also from w3.org, but it doesn't come out and recommend using one over the other. Depending on what you're trying to do, though, perhaps using the side-by-side comparison will help.
http://www.w3.org/2007/09/dtd-comparison.html
Don't use either. Move to html5 which isn't xml at all. The HTML committees seem to be developing a rather regretful attitude toward XML.

Full Example XHTML document showing how to define additional attributes

I am trying to extend an xhtml document to allow extra attributes.
In the w3.org it gives an example like so:
<!ATTLIST a
myattr CDATA #IMPLIED
>
See: 6.1. Defining additional attributes -
http://www.w3.org/TR/1999/xhtml-modularization-19990406/developing.html#s_dev_attrs
However i am not sure where to put that statement.
I have tried adding it like so:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<!ATTLIST a
myattr CDATA #IMPLIED
>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
</head>
<body>
...
</body>
But when I pick up the doc using DOM that extra DTD statement is ignored.
I have also tried:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" [
<!ATTLIST a
myattr CDATA #IMPLIED
>
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
</head>
<body>
...
</body>
But that really caused DOM to throw a wobbly.
So I'd appreciate it if someone could show me a sample xhtml document that has an additional attribute defined. (i.e minimal full doc that could validate)
As you might have guessed....xhtml is not my strong point.
Your second example is correct, apart from the missing </html> end-tag. With that added it parses OK for me. What exactly “throws a wobbly”?
The ATTLIST declaration must indeed go in the DTD, the internal subset of which is within square brackets inside the DOCTYPE declaration.
(What are you hoping to achieve with this? Browsers don't care, even if they are running in native application/xhtml+xml mode. In normal text/html tag soup mode the DTD internal subset will just confuse them.)

Resources