- From: Lachlan Hunt <lachlan.hunt@lachy.id.au>
- Date: Sat, 05 Mar 2005 18:43:30 +1100
- To: Lori Eldridge - Vaszary <info@loriswebs.com>
- CC: www-validator@w3.org
It would help if you had provided a URI for the web page, or at least a
piece of sample code, though a URI is always preferred.
Lori Eldridge - Vaszary wrote:
> I keep using W3C to validate my pages and it passes them and later I
> find out some of the pages had broken code and I have to use another
> validator to find them,
If the validator doesn't report an error, then your code is technically
valid according to the formal rules specified in the DTD. However, that
does not mean that the document is strictly *conformant* with the HTML
recommendation in all cases, nor that modern user agents will parse them
correctly; particularly with the SHORTTAG features, as there is no
popular user agent that has implemented them correctly.
See appendix B of the HTML recommentation to see some of the widely
unsupported features.
http://www.w3.org/TR/html401/appendix/notes.html#h-B.3
> things such as missing carets in table tags,
Carets? There are no carets in a tag, but I'm going to take a while
guess an assume you mean something like missing the ">" character off
the end of the start tag. The tag close delimiter ">" may be omitted in
certain circumstances, such as when the next non-whitespace character is
tag open delimiter "<".
> table tags missing altogether,
Several tags in HTML are declared to be optional. Some elements require
both start and end tags, some allow the omission of the end tag and
others allow the omission of both.
For example, from the DTD:
<!ELEMENT TBODY O O (TR)+ -- table body -->
<!ELEMENT (TH|TD) - O (%flow;)* -- table header cell, table data
cell-->
<!ELEMENT UL - - (LI)+ -- unordered list -->
The "-" and "O" following the element name indicate the requirements for
the start and end tags, the first within each element declaration being
for the start-tag and the second being the end-tag. "-" means the tag
is required, "O" means optional, so that should be interpreted as:
TBODY: Start-tag: Optional, End-tag: Optional
TH or TD: Start-tag: Required, End-tag: Optional
UL: Start-tag: Required, End-tag: Required
eg.
The following example contains many omissions, such as omitting ">", tag
names (such as <> and </> where you would expect to find <td> and </td>
respectively), end tags (</td>) and even both start and end tags
(<tbody> and </tbody>). This includes examples of all the SHORTTAG
features discussed in sectino B.3.7 of HTML 4.01.
http://www.w3.org/TR/html401/appendix/notes.html#h-B.3.7
<table
<tr
<td>row 1 col 1
<>row 1 col 2
<tr
<td/row 2 col 1
<>row 2 col 2</>
</table>
Although it may appear to be invalid, it is infact perfectly valid
according to the rules of SGML and the structure defined within the DTD.
The above is equivalent to the following markup (ignoring whitespace
differences).
<table>
<tbody>
<tr>
<td>row 1 col 1</td>
<td>row 1 col 2</td>
</tr>
<tr>
<td>row 2 col 1</td>
<td>row 2 col 2</td>
</tr>
</tbody>
</table>
Both examples will produce identical document object models (DOM). Use
the "Show Parse Tree" option in the extended interface of the validator
to confirm how both are parsed.
However, few browsers actually have conforming SGML parsers and may
choke on such constructs. It is not the validators job to report errors
based on limitations in other user agents, only to report violations of
the formal specification. Although, other validators like the WDG's
validator will issue *warnings* (not errors) about the use of such
widely unsupported features.
> and the # sign missing in body tag for color and link colors.
It is impossible to express such requirements within the DTD. The value
for those attributes is declared as CDATA, which basically means any
ordinary character data. The DTD says nothing about the internal
structure of the value, though such requirements may be expressed by the
prose within the HTML recommendation.
Althoguh, the use of such presentational attributes is not recommended,
in favour of using CSS. Most presentational attributes in HTML
including those that control colour, sizes, padding, margins, etc. are
very easily expressed using CSS, please consult a CSS tutorial for more
information.
--
Lachlan Hunt
http://lachy.id.au/
http://GetFirefox.com/ Rediscover the Web
http://GetThunderbird.com/ Reclaim your Inbox
Received on Saturday, 5 March 2005 07:49:57 UTC