parser/htmlparser/tests/mochitest/html5lib_tree_construction/README.md

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 Tree Construction Tests
     2 =======================
     4 Each file containing tree construction tests consists of any number of
     5 tests separated by two newlines (LF) and a single newline before the end
     6 of the file. For instance:
     8     [TEST]LF
     9     LF
    10     [TEST]LF
    11     LF
    12     [TEST]LF
    14 Where [TEST] is the following format:
    16 Each test must begin with a string "\#data" followed by a newline (LF).
    17 All subsequent lines until a line that says "\#errors" are the test data
    18 and must be passed to the system being tested unchanged, except with the
    19 final newline (on the last line) removed.
    21 Then there must be a line that says "\#errors". It must be followed by
    22 one line per parse error that a conformant checker would return. It
    23 doesn't matter what those lines are, although they can't be
    24 "\#document-fragment", "\#document", or empty, the only thing that
    25 matters is that there be the right number of parse errors.
    27 Then there \*may\* be a line that says "\#document-fragment", which must
    28 be followed by a newline (LF), followed by a string of characters that
    29 indicates the context element, followed by a newline (LF). If this line
    30 is present the "\#data" must be parsed using the HTML fragment parsing
    31 algorithm with the context element as context.
    33 Then there must be a line that says "\#document", which must be followed
    34 by a dump of the tree of the parsed DOM. Each node must be represented
    35 by a single line. Each line must start with "| ", followed by two spaces
    36 per parent node that the node has before the root document node.
    38 -   Element nodes must be represented by a "`<`" then the *tag name
    39     string* "`>`", and all the attributes must be given, sorted
    40     lexicographically by UTF-16 code unit according to their *attribute
    41     name string*, on subsequent lines, as if they were children of the
    42     element node.
    43 -   Attribute nodes must have the *attribute name string*, then an "="
    44     sign, then the attribute value in double quotes (").
    45 -   Text nodes must be the string, in double quotes. Newlines aren't
    46     escaped.
    47 -   Comments must be "`<`" then "`!-- `" then the data then "` -->`".
    48 -   DOCTYPEs must be "`<!DOCTYPE `" then the name then if either of the
    49     system id or public id is non-empty a space, public id in
    50     double-quotes, another space an the system id in double-quotes, and
    51     then in any case "`>`".
    52 -   Processing instructions must be "`<?`", then the target, then a
    53     space, then the data and then "`>`". (The HTML parser cannot emit
    54     processing instructions, but scripts can, and the WebVTT to DOM
    55     rules can emit them.)
    57 The *tag name string* is the local name prefixed by a namespace
    58 designator. For the HTML namespace, the namespace designator is the
    59 empty string, i.e. there's no prefix. For the SVG namespace, the
    60 namespace designator is "svg ". For the MathML namespace, the namespace
    61 designator is "math ".
    63 The *attribute name string* is the local name prefixed by a namespace
    64 designator. For no namespace, the namespace designator is the empty
    65 string, i.e. there's no prefix. For the XLink namespace, the namespace
    66 designator is "xlink ". For the XML namespace, the namespace designator
    67 is "xml ". For the XMLNS namespace, the namespace designator is "xmlns
    68 ". Note the difference between "xlink:href" which is an attribute in no
    69 namespace with the local name "xlink:href" and "xlink href" which is an
    70 attribute in the xlink namespace with the local name "href".
    72 If there is also a "\#document-fragment" the bit following "\#document"
    73 must be a representation of the HTML fragment serialization for the
    74 context element given by "\#document-fragment".
    76 For example:
    78     #data
    79     <p>One<p>Two
    80     #errors
    81     3: Missing document type declaration
    82     #document
    83     | <html>
    84     |   <head>
    85     |   <body>
    86     |     <p>
    87     |       "One"
    88     |     <p>
    89     |       "Two"

mercurial