[whatwg] Citing multiple <blockquote> elements in HTML5
Ian Hickson
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 3.3.3.2 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
> not?
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:
>
> <body>
> <div><p id="foo">something</p><p>something else</p></div>
> <div><p>something else from <cite id="foo">Whatever Example</cite></p></div>
> </body>
>
> 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.
Cheers,
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list