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: Difference between revisions

From WHATWG Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 17: Line 17:


* text:
* text:
* start tag for: <mglyph>
*# imply <mtext>
*# imply <mtext>
*# reprocess
*# reprocess


* start tag for: <mspace>, <maligngroup>, <malignmark>
* start tag for: <mi>, <mo>, <mn>, <ms>, <mtext>
*# check for implied math tags
*# insert element for token
*# insert element for token, assume void element
*# switch to "in math content"
*# if the tag had a closing slash, imply a closing tag with the same tag name
 
* start tag for one of: maction maligngroup malignmark menclose merror mfenced mfrac mglyph mlabeledtr mmultiscripts mover mpadded mphantom mprescripts mroot mrow mspace msqrt mstyle msub msubsup msup mtable mtd mtr munder munderover none
*# insert element for token
*# if the tag had a closing slash, imply a closing tag with the same tag name


* other start tag:
* other start tag:
* end tag: </p> or </br>:
* end tag: </p> or </br>:
*# parse error
*# parse error
*# imply </math>
*# pop until <math> element is popped
*# switch to "in body"
*# reset insertion mode
*# reprocess
*# reprocess


* other end tag
* other end tag
*# if matching element is in scope:  
*# if current element has the tag name of the token: pop it
*# otherwise: if there is a matching element in scope and it has the mathml namespace: parse error, ignore token
*# otherwise:
*## parse error
*## parse error
*## imply </math>
*## pop until <math> element is popped
*## reset insertion mode
*## reprocess
*## reprocess
*# otherwise:
*## parse error
*## ignore


check for implied math tags means:
# if current node is <mmultiscripts>:
## if the token is a <mprescripts> and there's an even number or child elements in the current node, imply a <none> element.
## abort these steps.
# if current node is <mtable>:
## if the token is either <mtr> or <mabelledtr>, abort these steps
## otherwise, imply an </mtable>
## restart these steps.
# if current node is <mtr>:
## if the token is an <mtd>, abort these steps
## otherwise, imply an </mtr>
## restart these steps.
# otherwise, if current node is one of <mfrac>, <mroot>, <msub>, <msup>, <munder>, <mover>: let N equal 2
# otherwise, if current node is one of <msubsup>, <munderover>: let N equal 3
# otherwise, abort these steps.


"in math content":
* start tag for one of: mglyph malignmark
*# insert element for token
*# if the tag had a closing slash, imply a closing tag with the same tag name


"in math content":
* end tag:
# if the token is an end tag token and the current node is in the mathml namespace and matches the tag name of the token, pop the current node, and reset the insertion mode.
# otherwise, treat as "in body"


* start tag for: <malignmark>
* otherwise
*# insert element for token, assume void element
# treat as "in body"
* otherwise:
*# treat as "in body"

Revision as of 07:54, 3 April 2008

resetting appropriately:

  • if current node is in the mathml namespace and is one of <mi>, <mo>, <mn>, <ms>, <mtext>, "in math content"
  • if current node is in the mathml namespace, "in math"
  • if current node is in the svg namespace, "in svg"

"in body":

  • "math" element - switch to "in math"
  • "svg" element - switch to "in svg"

"in math":

  • comment
    1. insert comment
  • doctype
    1. parse error
  • text:
    1. imply <mtext>
    2. reprocess
  • start tag for: <mi>, <mo>, <mn>, <ms>, <mtext>
    1. insert element for token
    2. switch to "in math content"
    3. if the tag had a closing slash, imply a closing tag with the same tag name
  • start tag for one of: maction maligngroup malignmark menclose merror mfenced mfrac mglyph mlabeledtr mmultiscripts mover mpadded mphantom mprescripts mroot mrow mspace msqrt mstyle msub msubsup msup mtable mtd mtr munder munderover none
    1. insert element for token
    2. if the tag had a closing slash, imply a closing tag with the same tag name
  • other start tag:
  • end tag:

    or
    :
    1. parse error
    2. pop until <math> element is popped
    3. reset insertion mode
    4. reprocess
  • other end tag
    1. if current element has the tag name of the token: pop it
    2. otherwise: if there is a matching element in scope and it has the mathml namespace: parse error, ignore token
    3. otherwise:
      1. parse error
      2. pop until <math> element is popped
      3. reset insertion mode
      4. reprocess


"in math content":

  • start tag for one of: mglyph malignmark
    1. insert element for token
    2. if the tag had a closing slash, imply a closing tag with the same tag name
  • end tag:
  1. if the token is an end tag token and the current node is in the mathml namespace and matches the tag name of the token, pop the current node, and reset the insertion mode.
  2. otherwise, treat as "in body"
  • otherwise
  1. treat as "in body"