XHTML Rules and Syntax
XHTML documents MUST have a DOCTYPE Declaration and it must validate against one of the
three Doctypes, Strict, Transitional or Frameset!
More of this in my XHTML DTD guide.
Rules and Syntax of XHTML
The following are main differences between HTML4.01 and XHTML1.0 and the syntax you
must follow to write conforming XHTML documents.
- Documents must be well-formed.
This basically means that all elements must have closing tags or be written in a special form
and that all elements must be correctly nested. For example overlapping tags may work in
most browsers but are NOT allowed in XHTML.
<b><i>This is incorrect</b></i> but
<b><i>This IS correct.</i></b>
- All element and attribute names must be lower case.
XML is case-sensitive so because XHTML is an application of XHTML it is important that all
elements and attributes are lower case! You can no longer have
<h2> or <p>, it must be
- Non-empty elements must have a closing tag.
In HTML some elements were not required to have closing tags. For example a paragraph
would be closed by the next paragraph to follow, but in XHTML you are required to close all
<p> would be closed by
- Attribute values must always be quoted
<table width="90%"> is correct but
<table width=90%> is incorrect.
- Attribute Minimization is not allowed.
<textarea readonly> is incorrect, it must be
- Empty Elements must also be closed.
Where previously we could use
<br> or <hr> or <input type="text"> we now need to close
these elements with
/>. So the examples shown become
<br/>, <hr/> and <input type="text"/> BUT
in order to be backward compatible we add an extra space, so currently you should use:
<br />, <hr /> and <input type="text" />
- Whitespace in attribute values
In attribute values, user agents/browsers will strip away one or more leading and trailing
whitespace characters from attribute values and leave only a single whitespace character!
- Script and Style elements.
Where previously you had:
you now would have the following:
- The id and name attributes.
In HTML4 the name attribute was defined for the following elements:
a, applet, form, frame, iframe, img, and map. HTML4 also introduced the ID attribute.
Both name and ID are whats called fragment identifiers. In XHTML1.0 id
must be used as the fragment identifier, name will be dropped in future versions
of XHTML. Note also: an element can have only 1 id attribute!
Don't forget to visit: