Do you have a question? Post it now! No Registration Necessary. Now with pictures!
- Posted on
You are referring to "4.2. Element and attribute names must be in lower
case", which looks pretty irrelevant to the question. You probably meant
to refer to "4.10 The elements with 'id' and 'name' attributes", which
"In order to ensure that XHTML 1.0 documents are well-structured XML
documents, XHTML 1.0 documents MUST use the id attribute when defining
fragment identifiers on the elements listed above." (= a, applet, form,
frame, iframe, img, and map)
But the entire section 4 is marked "informational", and there is no
normative statement that makes the id attribute required. The statement
quoted above is probably the result of some confusion, since its internal
logic is obscure; "well-structured" is not a normative concept, and the
statement follows one that says "In XML, fragment identifiers are of type
ID, and there can only be a single attribute of type ID per element",
presumably meant to work as an argument for the "requirement" that
follows. There is no "fragment identifier" concept in XML.
Undoubtedly the idea in XHTML 1.0 is that you SHOULD use the id attribute
when defining a potential target for a link and that you MAY additionally
use the name attribute (in elements where it is allowed), which however
is deprecated. This is illogical, since what's the point of allowing
something for compatibility with existing browsers and saying that it
should be avoided? Anyway, XHTML 1.0 does not forbid using the name
attribute, and it does not even forbid using it as the only method of
defining an anchor.
Yucca, http://www.cs.tut.fi/~jkorpela /
Pages about Web authoring: http://www.cs.tut.fi/~jkorpela/www.html
- "id" is never "required" in XHTML.
- Using id alone will not reliably emulate the <a name=foo >
behaviour of HTML for identifying document fragments within some user
agents (those unaware of id's behaviour). As you say, if you want this
behaviour, then use both attributes in conjunction.
I think a better reference would be: