A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.

To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).

New Vocabularies Solution

From WHATWG Wiki
Revision as of 20:24, 3 April 2008 by Hixie (talk | contribs)
Jump to navigation Jump to search

this doesn't handle these cases well:

<table><math></html><!-- x --> (</html> should be ignored)
<table><td><math></html><!-- x --> (ditto)
<table><caption><math></html><!-- x --> (ditto)
<table><caption><math><mtext><caption>x (<caption> should start new caption)
<em><button><math></em>x (</em> should be ignored)

to fix these we'll need a secondary insertion mode which is set whenever the insertion mode is set to "in math/svg", including in the reset algorithm (just jump down to the secondary steps and continue the walk up until you hit either the root, or a caption, td/th, or table)

what about:

<table><caption><math><mrow><mtext><svg><circle></mrow>
<table><caption><math><mtext><svg><circle><caption>

check that those are handled right. maybe we need a stack for the insertion mode which is "{svg|math}*, {cell|caption|table|body}"

resetting appropriately:

  • if current node is in the mathml namespace and is one of <mi>, <mo>, <mn>, <ms>, <mtext>, "in namespace content"
  • if current node is in a namespace other than html, "in namespace"

tokeniser:

  • tokeniser changes so that when insertion mode is "in namespace", support CDATA blocks.
  • tokeniser keeps track of /> endings.
  • we add all the MathML entities to the entity list.
  • φ works differently when in "in math" or "in math content".

"in body":

  • "math" element:
    1. insert math element in mathml namespace
    2. switch to "in namespace", with secondary mode set to whatever insertion mode used to be
    3. if the tag had a closing slash, imply a closing tag with the same tag name
  • "svg" element
    1. insert svg element in svg namespace
    2. switch to "in namespace", with secondary mode set to whatever insertion mode used to be
    3. if the tag had a closing slash, imply a closing tag with the same tag name

"in namespace":

  • comment
    1. insert comment
  • text:
    1. insert text
  • doctype
    1. parse error
  • if current node namespace is mathml and token is start tag for: <mi>, <mo>, <mn>, <ms>, <mtext>
  • if current node namespace is svg and token is start tag for: <foreignobject>, <desc>, <title>
    1. if namespace is svg, apply case fixups
    2. insert element for token
    3. switch to "in namespace content"
    4. if the tag had a closing slash, imply a closing tag with the same tag name
  • start tag for one of: (html elements)
  • end tag for one of:

    ,
    1. parse error
    2. pop nodes until the current node is in the html namespace
    3. switch to the secondary mode
    4. reprocess token
  • other start tag
    1. if namespace is svg, apply case fixups
    2. insert element for token, in same namespace as current node
    3. if the tag had a closing slash, imply a closing tag with the same tag name
  • end tag
    1. treat as in secondary mode
    2. if the insertion mode is still "in namespace", but the current node is no longer a namespaced element (then there is no namespaced element in scope), switch to the secondary mode

"in namespace content":

  • if currentnode is mathml and start tag for one of: mglyph malignmark
    1. insert element for token, treat as void
  • other start tag
    1. treat as in the secondary mode
  • end tag
    1. treat as in secondary mode
    2. if the insertion mode is still "in namespace content", but there is no namespaced element in scope, switch to the secondary mode
    3. if the insertion mode is still "in namespace content", but the current node is a non-html node that is not one of the following, switch to 'in namespace':
      • namespace is mathml and element is <mi>, <mo>, <mn>, <ms>, <mtext>
      • namespace is svg and element is <foreignObject>, <desc>, <title>


MathML error handling in text/html

Require the following behaviour, since MathML requires the host language to define error handling:

  • An element with the wrong number or type of children must render as an error indicator. (list cases)
  • a sequence of one or more text nodes containing non-inter-element-whitespace must be treated as <mtext>

Interaction of MathML and CSS ('display')

...