- From: Philip Taylor <pjt47@cam.ac.uk>
- Date: Fri, 15 Feb 2008 16:11:33 +0000
- To: HTML WG <public-html@w3.org>
Consider a document like <table><tr><table>
After the first two tokens, we have:
Mode: in row
Current node: <tr>
then
Token: <table>
"in row" "Anything else" -> "Process the token as if the insertion mode
was "in table""
New mode, for the duration of the reprocessing step: in table
Token: <table>
"in table" "A start tag whose tag name is "table"" -> "Act as if an
end tag token with the tag name "table" had been seen"
Token: </table>
"in table" "An end tag whose tag name is "table"" -> "Generate
implied end tags"
-> current node is <tr>, so act as if </tr> and then generate
implied end tags again
Token: </tr>
"in table" "An end tag whose tag name is one of: ..."tr"" ->
"Ignore the token"
Infinite loop when generating implied end tags again.
which is clearly not good. It seems my problem is in interpreting
"Process the token as if the insertion mode was "in table"" as meaning
it should effectively set the insertion mode to "in table" and then
process the token (hence affecting any other generated/reprocessed
tokens within that reprocessing step), when actually it should only
affect the single next operation and not anything more deeply nested.
I'd suggest adding a paragraph like:
"When the steps below require the UA to process a token as if the
insertion mode was 'mode', this must apply only to the single next token
processing operation. If the processing of that token causes it to be
reprocessed, or causes a new token to be processed, then it will be
processed in the standard insertion mode and not necessarily in 'mode'."
and then linking to it in relevant places, like "process the token <a
href='#asif'>as if the insertion mode was</a> ..."
--
Philip Taylor
pjt47@cam.ac.uk
Received on Friday, 15 February 2008 16:11:46 UTC