[whatwg] Citing multiple <blockquote> elements in HTML5
ian at hixie.ch
Tue Dec 2 17:32:21 PST 2008
On Tue, 2 Dec 2008, Calogero Alex Baldacchino wrote:
> Indeed it does, and I found such behaviour more consistent than letting
> just the a element with a 'name' or an 'id' being an anchor for
> navigating to a fragment :-)
> However, now I have a question. The 3rd step of the algorithm to
> determine "the indicated part of the document" says,
> "If there is an element in the DOM that has an ID exactly equal to
> /fragid/, then the first such element in tree order is the indicated
> part of the document; stop the algorithm here."
> Shouldn't the id be unique in the whole document? Section 188.8.131.52 says,
> "The||| id |attribute represents its element's unique identifier. The
> value must be unique in the subtree within which the element finds
> itself and must contain at least one character. The value must not
> contain any space characters."
> then follows,
> "If the value is not the empty string, user agents must associate the
> element with the given value (exactly, including any space characters)
> First of all, isn't it a bit conflicting? Space characters are legal or
They are not legal. Duplicate IDs are similarly not legal.
We still have to define what happens when people break the rules, though,
it happens all the time.
> "for the purposes of ID matching within the subtree the element finds
> itself (e.g. for selectors in CSS or for the |getElementById()| method
> in the DOM)."
> I guess the above covers, for instance, the case of a document holding
> an element with id="foo" and an iframe whose content document holds
> another element with the very same id; but speaking about subtrees might
> suggest the following is legal:
> <div><p id="foo">something</p><p>something else</p></div>
> <div><p>something else from <cite id="foo">Whatever Example</cite></p></div>
> since we can separate two different subtrees where the id 'foo' is unique.
Both of those IDs are in the same subtree, so it's not legal.
> Otherwise, just let the id attribute be unique in the whole document,
> label any duplicate one as illegal and treat it as the empty string, so
> that one only method is enough and the DOM 3 undefined behaviour for
> 'getElementById' is no more problematic, being fired by non-allowed DOM
> structures (as don't care conditions). Such would be the easiest choice,
> although there might be any good reason to prefer allowing replicated
> ids inside the same document.
Exactly how getElementById() works is out of scope for HTML5, but in the
Web DOM Core spec that Simon is working on I imagine he has specced that
it will pick the first element with a matching ID or some such behavior.
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg