feat(html/codegen): Omit start and end tags if it is possible (#4780)

This commit is contained in:
Alexander Akait 2022-05-25 19:48:33 +03:00 committed by GitHub
parent c8f6f44a5d
commit c6ec9f9cf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
109 changed files with 1920 additions and 170 deletions

View File

@ -139,13 +139,123 @@ where
fn basic_emit_element(
&mut self,
n: &Element,
_parent: Option<&Element>,
parent: Option<&Element>,
prev: Option<&Child>,
next: Option<&Child>,
) -> Result {
let has_attributes = !n.attributes.is_empty();
let can_omit_start_tag = self.config.minify
&& !has_attributes
&& n.namespace == Namespace::HTML
&& match &*n.tag_name {
// Tag omission in text/html:
// An html element's start tag can be omitted if the first thing inside the html
// element is not a comment.
"html" if matches!(n.children.get(0), Some(Child::Comment(..))) => true,
// A head element's start tag can be omitted if the element is empty, or if the
// first thing inside the head element is an element.
"head"
if n.children.is_empty()
|| matches!(n.children.get(0), Some(Child::Element(..))) =>
{
true
}
// A body element's start tag can be omitted if the element is empty, or if the
// first thing inside the body element is not ASCII whitespace or a comment, except
// if the first thing inside the body element is a meta, link, script, style, or
// template element.
// TODO improve me
"body"
if n.children.is_empty()
|| (match n.children.get(0) {
Some(Child::Text(text))
if text.value.chars().next().unwrap().is_ascii_whitespace() =>
{
false
}
Some(Child::Comment(..)) => false,
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& matches!(
&**tag_name,
"meta" | "link" | "script" | "style" | "template"
) =>
{
false
}
_ => true,
}) =>
{
true
}
// A colgroup element's start tag can be omitted if the first thing inside the
// colgroup element is a col element, and if the element is not immediately preceded
// by another colgroup element whose end tag has been omitted. (It can't be omitted
// if the element is empty.)
"colgroup"
if match n.children.get(0) {
Some(Child::Element(element))
if element.namespace == Namespace::HTML
&& &*element.tag_name == "col" =>
{
match prev {
// We don't need to check on omitted end tag, because we always
// omit an end tag
Some(Child::Element(element))
if element.namespace == Namespace::HTML
&& &*element.tag_name == "colgroup" =>
{
false
}
_ => true,
}
}
_ => false,
} =>
{
true
}
// A tbody element's start tag can be omitted if the first thing inside the tbody
// element is a tr element, and if the element is not immediately preceded by a
// tbody, thead, or tfoot element whose end tag has been omitted. (It can't be
// omitted if the element is empty.)
"tbody"
if match n.children.get(0) {
Some(Child::Element(element))
if element.namespace == Namespace::HTML
&& &*element.tag_name == "tr" =>
{
match prev {
// We don't need to check on omitted end tag, because we always
// omit an end tag
Some(Child::Element(element))
if element.namespace == Namespace::HTML
&& matches!(
&*element.tag_name,
"tbody" | "thead" | "tfoot"
) =>
{
false
}
_ => true,
}
}
_ => false,
} =>
{
true
}
_ => false,
};
if !can_omit_start_tag {
write_raw!(self, "<");
write_raw!(self, &n.tag_name);
if !n.attributes.is_empty() {
if has_attributes {
space!(self);
self.emit_list(&n.attributes, ListFormat::SpaceDelimited)?;
@ -156,6 +266,7 @@ where
if !self.config.minify && n.namespace == Namespace::HTML && &*n.tag_name == "html" {
newline!(self);
}
}
let no_children = n.namespace == Namespace::HTML
&& matches!(
@ -219,6 +330,92 @@ where
&& match &*n.tag_name {
// Tag omission in text/html:
// An html element's end tag can be omitted if the html element is not
// immediately followed by a comment.
//
// A body element's end tag can be omitted if the body element is not
// immediately followed by a comment.
"html" | "body" => !matches!(next, Some(Child::Comment(..))),
// A head element's end tag can be omitted if the head element is not
// immediately followed by ASCII whitespace or a comment.
"head" => match next {
Some(Child::Text(text))
if text.value.chars().next().unwrap().is_ascii_whitespace() =>
{
false
}
Some(Child::Comment(..)) => false,
_ => true,
},
// A p element's end tag can be omitted if the p element is immediately followed
// by an address, article, aside, blockquote, details, div, dl, fieldset,
// figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr,
// main, menu, nav, ol, p, pre, section, table, or ul element, or if there is no
// more content in the parent element and the parent element is an HTML element
// that is not an a, audio, del, ins, map, noscript, or video element, or an
// autonomous custom element.
"p" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& matches!(
&**tag_name,
"address"
| "article"
| "aside"
| "blockquote"
| "details"
| "div"
| "dl"
| "fieldset"
| "figcaption"
| "figure"
| "footer"
| "form"
| "h1"
| "h2"
| "h3"
| "h4"
| "h5"
| "h6"
| "header"
| "hgroup"
| "hr"
| "main"
| "menu"
| "nav"
| "ol"
| "p"
| "pre"
| "section"
| "table"
| "ul"
) =>
{
true
}
None if match parent {
Some(Element {
namespace,
tag_name,
..
}) if is_html_tag_name(*namespace, &**tag_name)
&& !matches!(
&**tag_name,
"a" | "audio" | "del" | "ins" | "map" | "noscript" | "video"
) =>
{
true
}
_ => false,
} =>
{
true
}
_ => false,
},
// An li element's end tag can be omitted if the li element is immediately
// followed by another li element or if there is no more content in the parent
// element.
@ -245,7 +442,6 @@ where
}
_ => false,
},
// A dd element's end tag can be omitted if the dd element is immediately
// followed by another dd element or a dt element, or if there is no more
// content in the parent element.
@ -262,7 +458,164 @@ where
None => true,
_ => false,
},
// An rt element's end tag can be omitted if the rt element is immediately
// followed by an rt or rp element, or if there is no more content in the parent
// element.
//
// An rp element's end tag can be omitted if the rp element is immediately
// followed by an rt or rp element, or if there is no more content in the parent
// element.
"rt" | "rp" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "rt" || tag_name == "rp") =>
{
true
}
None => true,
_ => false,
},
// The end tag can be omitted if the element is immediately followed by an <rt>,
// <rtc>, or <rp> element or another <rb> element, or if there is no more
// content in the parent element.
"rb" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "rt"
|| tag_name == "rtc"
|| tag_name == "rp"
|| tag_name == "rb") =>
{
true
}
None => true,
_ => false,
},
// The closing tag can be omitted if it is immediately followed by a <rb>, <rtc>
// or <rt> element opening tag or by its parent closing tag.
"rtc" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "rb" || tag_name == "rtc" || tag_name == "rt") =>
{
true
}
None => true,
_ => false,
},
// An optgroup element's end tag can be omitted if the optgroup element is
// immediately followed by another optgroup element, or if there is no more
// content in the parent element.
"optgroup" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML && tag_name == "optgroup" => true,
None => true,
_ => false,
},
// An option element's end tag can be omitted if the option element is
// immediately followed by another option element, or if it is immediately
// followed by an optgroup element, or if there is no more content in the parent
// element.
"option" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "option" || tag_name == "optgroup") =>
{
true
}
None => true,
_ => false,
},
// A caption element's end tag can be omitted if the caption element is not
// immediately followed by ASCII whitespace or a comment.
//
// A colgroup element's end tag can be omitted if the colgroup element is not
// immediately followed by ASCII whitespace or a comment.
"caption" | "colgroup" => match next {
Some(Child::Text(text))
if text.value.chars().next().unwrap().is_ascii_whitespace() =>
{
false
}
Some(Child::Comment(..)) => false,
_ => true,
},
// A tbody element's end tag can be omitted if the tbody element is immediately
// followed by a tbody or tfoot element, or if there is no more content in the
// parent element.
"tbody" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "tbody" || tag_name == "tfoot") =>
{
true
}
None => true,
_ => false,
},
// A thead element's end tag can be omitted if the thead element is immediately
// followed by a tbody or tfoot element.
"thead" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "tbody" || tag_name == "tfoot") =>
{
true
}
_ => false,
},
// A tfoot element's end tag can be omitted if there is no more content in the
// parent element.
"tfoot" => matches!(next, None),
// A tr element's end tag can be omitted if the tr element is immediately
// followed by another tr element, or if there is no more content in the parent
// element.
"tr" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML && tag_name == "tr" => true,
None => true,
_ => false,
},
// A th element's end tag can be omitted if the th element is immediately
// followed by a td or th element, or if there is no more content in the parent
// element.
"td" | "th" => match next {
Some(Child::Element(Element {
namespace,
tag_name,
..
})) if *namespace == Namespace::HTML
&& (tag_name == "td" || tag_name == "th") =>
{
true
}
None => true,
_ => false,
},
_ => false,
});
@ -280,7 +633,7 @@ where
#[emitter]
fn emit_element(&mut self, n: &Element) -> Result {
self.basic_emit_element(n, None, None)?;
self.basic_emit_element(n, None, None, None)?;
}
#[emitter]
@ -638,9 +991,10 @@ where
for (idx, node) in nodes.iter().enumerate() {
match node {
Child::Element(element) => {
let prev = if idx > 0 { nodes.get(idx - 1) } else { None };
let next = nodes.get(idx + 1);
self.basic_emit_element(element, Some(parent), next)?;
self.basic_emit_element(element, Some(parent), prev, next)?;
}
_ => {
emit!(self, node)
@ -708,3 +1062,134 @@ fn minify_attribute_value(value: &str) -> String {
format!("\"{}\"", minified)
}
}
fn is_html_tag_name(namespace: Namespace, tag_name: &str) -> bool {
if namespace != Namespace::HTML {
return false;
}
matches!(
tag_name,
"a" | "abbr"
| "address"
| "applet"
| "area"
| "article"
| "aside"
| "audio"
| "b"
| "base"
| "bdi"
| "bdo"
| "blockquote"
| "body"
| "br"
| "button"
| "canvas"
| "caption"
| "center"
| "cite"
| "code"
| "col"
| "colgroup"
| "data"
| "datalist"
| "dd"
| "del"
| "details"
| "dfn"
| "dialog"
| "dir"
| "div"
| "dl"
| "dt"
| "em"
| "embed"
| "fieldset"
| "figcaption"
| "figure"
| "footer"
| "form"
| "h1"
| "h2"
| "h3"
| "h4"
| "h5"
| "h6"
| "head"
| "header"
| "hgroup"
| "hr"
| "html"
| "i"
| "iframe"
| "image"
| "img"
| "input"
| "ins"
| "label"
| "legend"
| "li"
| "link"
| "listing"
| "main"
| "map"
| "mark"
| "marquee"
| "menu"
| "menuitem"
| "meta"
| "meter"
| "nav"
| "nobr"
| "noembed"
| "noscript"
| "object"
| "ol"
| "optgroup"
| "option"
| "output"
| "p"
| "param"
| "picture"
| "pre"
| "progress"
| "q"
| "rb"
| "rp"
| "rt"
| "rtc"
| "ruby"
| "s"
| "samp"
| "script"
| "section"
| "select"
| "small"
| "source"
| "span"
| "strong"
| "style"
| "sub"
| "summary"
| "sup"
| "table"
| "tbody"
| "td"
| "template"
| "textarea"
| "tfoot"
| "th"
| "thead"
| "time"
| "title"
| "tr"
| "track"
| "u"
| "ul"
| "var"
| "video"
| "wbr"
| "xmp"
)
}

View File

@ -1 +1 @@
<div><h1>Test</h1><p>Test</p></div>
<div><h1>Test</h1><p>Test</div>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<label><input type=checkbox checked name=cheese disabled> Cheese</label>
<label><input type=checkbox checked=checked name=cheese disabled=disabled> Cheese</label>
@ -91,4 +91,3 @@ foo
</body></html>

View File

@ -0,0 +1,7 @@
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body><!-- test --></body>
</html>

View File

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body><!-- test -->
</body></html>

View File

@ -0,0 +1,4 @@
<!doctype html><html lang=en><head>
<title>Document</title>
</head>
<body><!-- test -->

View File

@ -0,0 +1,9 @@
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<meta content="text/css">
</body>
</html>

View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
<meta content="text/css">
</body></html>

View File

@ -0,0 +1,6 @@
<!doctype html><html lang=en><head>
<title>Document</title>
</head>
<body>
<meta content=text/css>

View File

@ -0,0 +1,7 @@
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body><script>console.log("test")</script></body>
</html>

View File

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body><script>console.log("test")</script>
</body></html>

View File

@ -0,0 +1,4 @@
<!doctype html><html lang=en><head>
<title>Document</title>
</head>
<body><script>console.log("test")</script>

View File

@ -0,0 +1,7 @@
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body> <div>test</div></body>
</html>

View File

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body> <div>test</div>
</body></html>

View File

@ -0,0 +1,4 @@
<!doctype html><html lang=en><head>
<title>Document</title>
</head>
<body> <div>test</div>

View File

@ -0,0 +1,7 @@
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body><template><div>test</div></template></body>
</html>

View File

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body><template><div>test</div></template>
</body></html>

View File

@ -0,0 +1,4 @@
<!doctype html><html lang=en><head>
<title>Document</title>
</head>
<body><template><div>test</div></template>

View File

@ -8,4 +8,3 @@
<rect width=20 height=3 y=15 fill=#fff></rect>
</svg>
</body></html>

View File

@ -54,4 +54,3 @@
<!-- <![endif]-->
</p>
</body></html>

View File

@ -10,4 +10,3 @@
<!--<![endif]-->
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<popup-info img=img/alt.png data-text="Your card validation code (CVC)
is an extra security feature — it is the last 3 or 4 numbers on the
@ -6,4 +6,3 @@
</body></html>

View File

@ -11,4 +11,3 @@
и что разум подобен бесконечности.</p>
</body></html>

View File

@ -7,4 +7,3 @@ The content of the document......
</body></html>

View File

@ -7,4 +7,3 @@ The content of the document......
</body></html>

View File

@ -1,3 +1,2 @@
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
</body></html>
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><title>Test</title></head>
<div>Test</div>

View File

@ -1,3 +1,2 @@
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
</body></html>
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><title>Test</title></head>
<div>Test</div>

View File

@ -1,4 +1,3 @@
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><title>Test</title></head>
<div>Test</div>
</body></html>

View File

@ -1,4 +1,3 @@
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><title>Test</title></head>
<div>Test</div>
</body></html>

View File

@ -1,3 +1,2 @@
<!doctype document system "subjects.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
</body></html>
<!doctype document system "subjects.dtd"><html><title>Test</title></head>
<div>Test</div>

View File

@ -1,3 +1,2 @@
<!doctype document system "subjects.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
</body></html>
<!doctype document system "subjects.dtd"><html><title>Test</title></head>
<div>Test</div>

View File

@ -1,3 +1,2 @@
<!doctype document system "subjects.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
</body></html>
<!doctype document system "subjects.dtd"><html><title>Test</title></head>
<div>Test</div>

View File

@ -1,3 +1,2 @@
<!doctype document system "subjects.dtd"><html><head><title>Test</title></head>
<body><div>Test</div>
</body></html>
<!doctype document system "subjects.dtd"><html><title>Test</title></head>
<div>Test</div>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<h1>My First Heading</h1>
@ -6,4 +6,3 @@
</body></html>

View File

@ -8,4 +8,3 @@ foo</textarea>
<textarea>foo</textarea>
<textarea>foo</textarea>
</body></html>

View File

@ -0,0 +1 @@
<!doctype html><html lang="en"><head></head><body></body></html>

View File

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html lang="en">
<head></head><body>
</body></html>

View File

@ -0,0 +1 @@
<!doctype html><html lang=en><body>

View File

@ -0,0 +1,9 @@
<!doctype html>
<html lang="en">
<head>
<title>Document</title>
</head><!-- test -->
<body>
</body>
</html>

View File

@ -0,0 +1,9 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head><!-- test -->
<body>
</body></html>

View File

@ -0,0 +1,6 @@
<!doctype html><html lang=en><head>
<title>Document</title>
</head><!-- test -->
<body>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<h1>This is heading 1</h1>
<h2>This is heading 2</h2>
@ -9,4 +9,3 @@
</body></html>

View File

@ -0,0 +1,6 @@
<!doctype html>
<html lang="en"><!-- test -->
<body>
</body>
</html>

View File

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<!-- test --><head></head><body>
</body></html>

View File

@ -0,0 +1,3 @@
<!doctype html><html lang=en><!-- test --><body>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<h1>HTML Entity Example</h1>
@ -36,4 +36,3 @@
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<h2>HTML Images</h2>
<p>HTML images are defined with the img tag:</p>
@ -7,4 +7,3 @@
</body></html>

View File

@ -1,4 +1,3 @@
<html><head></head><body><ng-include src=x></ng-include>
<html><ng-include src=x></ng-include>
<ng:include src=x></ng:include>
<ng-include src="'views/partial-notification.html'"></ng-include><div ng-view=""></div>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<p id=demo></p>
@ -12,4 +12,3 @@
</body></html>

View File

@ -9,4 +9,3 @@
<div>[fallback image]</div>
</object>
</body></html>

View File

@ -0,0 +1,6 @@
<!doctype html>
<html lang="en">
<body>
</body>
</html>

View File

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html lang="en">
<head></head><body>
</body></html>

View File

@ -0,0 +1,3 @@
<!doctype html><html lang=en><body>

View File

@ -13,6 +13,401 @@
<dl><dt>What do we want?</dt><dd>Our data.</dd><dt>When do we want it?</dt><dd>Now.</dd><dt>Where is it?</dt><dd>We are not sure.</dd></dl>
</article>
<form action="courseselector.dll" method="get">
<p>Which course would you like to watch today?
<p><label>Course:
<select name="c">
<optgroup label="8.01 Physics I: Classical Mechanics">
<option value="8.01.1">Lecture 01: Powers of Ten
<option value="8.01.2">Lecture 02: 1D Kinematics
<option value="8.01.3">Lecture 03: Vectors
</optgroup><optgroup label="8.02 Electricity and Magnetism">
<option value="8.02.1">Lecture 01: What holds our world together?
<option value="8.02.2">Lecture 02: Electric Field
<option value="8.02.3">Lecture 03: Electric Flux
</optgroup>
<optgroup label="8.03 Physics III: Vibrations and Waves">
<option value="8.03.1">Lecture 01: Periodic Phenomenon
<option value="8.03.2">Lecture 02: Beats
<option value="8.03.3">Lecture 03: Forced Oscillations with Damping
</optgroup>
</select>
</label>
<p><input type=submit value="▶ Play">
</form>
<table>
<tr>
<th>Month</th><th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</table>
<table>
<tr><th>Month</th><th>Savings</th></tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</table>
<table width="100%" cellspacing="0" border="1">
<tr>
<th>One</th>
<th>Two</th>
</tr>
<tr>
<th>Three</th><td>5.5</td>
<td>6.0</td>
</tr>
</table>
<table width="100%" cellspacing="0" border="1">
<tr>
<th>One</th>
<th>Two</th>
</tr>
<tr><th>Three</th><td>5.5</td><td>6.0</td></tr>
</table>
<table><tr><th>Month</th><th>Savings</th></tr><tr>
<td>January</td>
<td>$100</td>
</tr><tr>
<td>February</td>
<td>$80</td>
</tr></table>
<table><thead>
<tr>
<th>Items</th>
<th scope="col">Expenditure</th>
</tr>
</thead><tbody>
<tr>
<th scope="row">Donuts</th>
<td>3,000</td>
</tr>
<tr>
<th scope="row">Stationery</th>
<td>18,000</td>
</tr>
</tbody><tfoot>
<tr>
<th scope="row">Totals</th>
<td>21,000</td>
</tr>
</tfoot></table>
<table><thead>
<tr>
<th>Items</th>
<th scope="col">Expenditure</th>
</tr>
</thead><tfoot>
<tr>
<th scope="row">Totals</th>
<td>21,000</td>
</tr>
</tfoot></table>
<table><thead>
<tr>
<th>Items</th>
<th scope="col">Expenditure</th>
</tr>
</thead></table>
<table><tbody>
<tr>
<th scope="row">Donuts</th>
<td>3,000</td>
</tr>
<tr>
<th scope="row">Stationery</th>
<td>18,000</td>
</tr>
</tbody></table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup>
<tr>
<td> </td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
<tr>
<th scope="row">Skill</th>
<td>Smarts</td>
<td>Dex, acrobat</td>
<td>Super speed</td>
<td>Super speed</td>
</tr>
</table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup><tr>
<td> </td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
</table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup><!-- comment -->
<tr>
<td> </td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
</table>
<table><caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup></table>
<table><caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup> <tbody>
<tr>
<td> </td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
</tbody>
</table>
<table>
<caption>He-Man and Skeletor facts</caption>
<tr>
<td> </td>
<th scope="col" class="heman">He-Man</th>
<th scope="col" class="skeletor">Skeletor</th>
</tr>
<tr>
<th scope="row">Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</table>
<table>
<caption>He-Man and Skeletor facts</caption><tr>
<td> </td>
<th scope="col" class="heman">He-Man</th>
<th scope="col" class="skeletor">Skeletor</th>
</tr>
<tr>
<th scope="row">Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</table>
<table>
<caption>He-Man and Skeletor facts</caption><!-- comment --> <tr>
<td> </td>
<th scope="col" class="heman">He-Man</th>
<th scope="col" class="skeletor">Skeletor</th>
</tr>
<tr>
<th scope="row">Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</table>
<ruby>
<rp>(</rp><rt>kan</rt><rp>)</rp>
<rp>(</rp><rt>ji</rt><rp>)</rp>
</ruby>
<ruby><rp>(</rp><rt>kan</rt><rp>)</rp><rp>(</rp><rt>ji</rt><rp>)</rp></ruby>
<div>
<p>test</p>
<p>test
<p>test</p> <p>test</p>
<p>test</p><p>test</p>
<p>test</p><div>test</div>
<p>test</p><div>test</div>
<p>test</p><img>
</div>
<div><p>test</p></div>
<a><p>test</p></a>
<my-element><p>Test</p></my-element>
<unknown><p>test</p></unknown>
<spacer><p>test</p></spacer>
<div>
<p>test</p><svg></svg>
</div>
<acronym><p>test</p></acronym>
<applet code="game.class" align="left" archive="game.zip" height="250" width="350">
<param name="difficulty" value="easy">
<p>Sorry, you need Java to play this game.</p></applet>
<big><p>test</p></big>
<blink><p>test</p></blink>
<center><p>test</p></center>
<command><p>test</p></command>
<content><p>test</p></content>
<dir><p>test</p></dir>
<element><p>test</p></element>
<font><p>test</p></font>
<kbd><p>test</p></kbd>
<listing><p>test</p></listing>
<marquee behavior="test" direction="test"><p>test</p></marquee>
<multicol><p>test</p></multicol>
<noembed><p>test</p></noembed>
<shadow><p>test</p></shadow>
<strike><p>test</p></strike>
<tt><p>test</p></tt>
<xmp><p>test</p></xmp>
<div><p>test</p><svg>test</svg></div>
<ruby>
<rb><rb>
<rp>(</rp><rt>kan<rt>ji<rp>)</rp>
</ruby>
<ruby>
<rb><rb><rp>(</rp><rt>kan<rt>ji<rp>)</rp>
</ruby>
<div class="info"><ruby>
<rbc>
<rb></rb><rt>jiù</rt>
<rb></rb><rt>jīn</rt>
<rb></rb><rt>shān</rt>
</rbc>
<rtc>San Francisco</rtc></ruby>
</div>
<table><thead>
<tr><th>Customer</th><th>Order</th><th>Month</th></tr>
</thead><tbody>
<tr><td>Customer 1</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 1</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 1</td><td>#3</td><td>March</td></tr>
</tbody><tbody>
<tr><td>Customer 2</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 2</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 2</td><td>#3</td><td>March</td></tr>
</tbody><tbody>
<tr><td>Customer 3</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 3</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 3</td><td>#3</td><td>March</td></tr>
</tbody></table>
<table><colgroup>
<col class=""></col>
<col class=""></col>
<col class=""></col>
</colgroup><colgroup>
<col class=""></col>
<col class=""></col>
<col class=""></col>
</colgroup><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table>
<colgroup><col class=""></col><col class=""></col><col class=""></col></colgroup>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table>
<colgroup><col class=""></col><col class=""></col><col class=""></col></colgroup><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table>
<colgroup><col class=""></col><col class=""></col><col class=""></col></colgroup><colgroup><col class=""></col><col class=""></col><col class=""></col></colgroup>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody></table>
<table><thead><tr><td>test</td></tr></thead><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody></table>
<table><tfoot><tr><td>test</td></tr></tfoot><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody></table>
</body>
</html>

View File

@ -13,6 +13,401 @@
<dl><dt>What do we want?</dt><dd>Our data.</dd><dt>When do we want it?</dt><dd>Now.</dd><dt>Where is it?</dt><dd>We are not sure.</dd></dl>
</article>
<form action="courseselector.dll" method="get">
<p>Which course would you like to watch today?
</p><p><label>Course:
<select name="c">
<optgroup label="8.01 Physics I: Classical Mechanics">
<option value="8.01.1">Lecture 01: Powers of Ten
</option><option value="8.01.2">Lecture 02: 1D Kinematics
</option><option value="8.01.3">Lecture 03: Vectors
</option></optgroup><optgroup label="8.02 Electricity and Magnetism">
<option value="8.02.1">Lecture 01: What holds our world together?
</option><option value="8.02.2">Lecture 02: Electric Field
</option><option value="8.02.3">Lecture 03: Electric Flux
</option></optgroup>
<optgroup label="8.03 Physics III: Vibrations and Waves">
<option value="8.03.1">Lecture 01: Periodic Phenomenon
</option><option value="8.03.2">Lecture 02: Beats
</option><option value="8.03.3">Lecture 03: Forced Oscillations with Damping
</option></optgroup>
</select>
</label>
</p><p><input type="submit" value="▶ Play">
</p></form>
<table>
<tbody><tr>
<th>Month</th><th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</tbody></table>
<table>
<tbody><tr><th>Month</th><th>Savings</th></tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</tbody></table>
<table width="100%" cellspacing="0" border="1">
<tbody><tr>
<th>One</th>
<th>Two</th>
</tr>
<tr>
<th>Three</th><td>5.5</td>
<td>6.0</td>
</tr>
</tbody></table>
<table width="100%" cellspacing="0" border="1">
<tbody><tr>
<th>One</th>
<th>Two</th>
</tr>
<tr><th>Three</th><td>5.5</td><td>6.0</td></tr>
</tbody></table>
<table><tbody><tr><th>Month</th><th>Savings</th></tr><tr>
<td>January</td>
<td>$100</td>
</tr><tr>
<td>February</td>
<td>$80</td>
</tr></tbody></table>
<table><thead>
<tr>
<th>Items</th>
<th scope="col">Expenditure</th>
</tr>
</thead><tbody>
<tr>
<th scope="row">Donuts</th>
<td>3,000</td>
</tr>
<tr>
<th scope="row">Stationery</th>
<td>18,000</td>
</tr>
</tbody><tfoot>
<tr>
<th scope="row">Totals</th>
<td>21,000</td>
</tr>
</tfoot></table>
<table><thead>
<tr>
<th>Items</th>
<th scope="col">Expenditure</th>
</tr>
</thead><tfoot>
<tr>
<th scope="row">Totals</th>
<td>21,000</td>
</tr>
</tfoot></table>
<table><thead>
<tr>
<th>Items</th>
<th scope="col">Expenditure</th>
</tr>
</thead></table>
<table><tbody>
<tr>
<th scope="row">Donuts</th>
<td>3,000</td>
</tr>
<tr>
<th scope="row">Stationery</th>
<td>18,000</td>
</tr>
</tbody></table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup>
<tbody><tr>
<td>&nbsp;</td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
<tr>
<th scope="row">Skill</th>
<td>Smarts</td>
<td>Dex, acrobat</td>
<td>Super speed</td>
<td>Super speed</td>
</tr>
</tbody></table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup><tbody><tr>
<td>&nbsp;</td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
</tbody></table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup><!-- comment -->
<tbody><tr>
<td>&nbsp;</td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
</tbody></table>
<table><caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup></table>
<table><caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span="2" class="batman">
<col span="2" class="flash">
</colgroup> <tbody>
<tr>
<td>&nbsp;</td>
<th scope="col">Batman</th>
<th scope="col">Robin</th>
<th scope="col">The Flash</th>
<th scope="col">Kid Flash</th>
</tr>
</tbody>
</table>
<table>
<caption>He-Man and Skeletor facts</caption>
<tbody><tr>
<td>&nbsp;</td>
<th scope="col" class="heman">He-Man</th>
<th scope="col" class="skeletor">Skeletor</th>
</tr>
<tr>
<th scope="row">Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</tbody></table>
<table>
<caption>He-Man and Skeletor facts</caption><tbody><tr>
<td>&nbsp;</td>
<th scope="col" class="heman">He-Man</th>
<th scope="col" class="skeletor">Skeletor</th>
</tr>
<tr>
<th scope="row">Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</tbody></table>
<table>
<caption>He-Man and Skeletor facts</caption><!-- comment --> <tbody><tr>
<td>&nbsp;</td>
<th scope="col" class="heman">He-Man</th>
<th scope="col" class="skeletor">Skeletor</th>
</tr>
<tr>
<th scope="row">Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</tbody></table>
<ruby>
<rp>(</rp><rt>kan</rt><rp>)</rp>
<rp>(</rp><rt>ji</rt><rp>)</rp>
</ruby>
<ruby><rp>(</rp><rt>kan</rt><rp>)</rp><rp>(</rp><rt>ji</rt><rp>)</rp></ruby>
<div>
<p>test</p>
<p>test
</p><p>test</p> <p>test</p>
<p>test</p><p>test</p>
<p>test</p><div>test</div>
<p>test</p><div>test</div>
<p>test</p><img>
</div>
<div><p>test</p></div>
<a><p>test</p></a>
<my-element><p>Test</p></my-element>
<unknown><p>test</p></unknown>
<spacer><p>test</p></spacer>
<div>
<p>test</p><svg></svg>
</div>
<acronym><p>test</p></acronym>
<applet code="game.class" align="left" archive="game.zip" height="250" width="350">
<param name="difficulty" value="easy">
<p>Sorry, you need Java to play this game.</p></applet>
<big><p>test</p></big>
<blink><p>test</p></blink>
<center><p>test</p></center>
<command><p>test</p></command>
<content><p>test</p></content>
<dir><p>test</p></dir>
<element><p>test</p></element>
<font><p>test</p></font>
<kbd><p>test</p></kbd>
<listing><p>test</p></listing>
<marquee behavior="test" direction="test"><p>test</p></marquee>
<multicol><p>test</p></multicol>
<noembed><p>test</p></noembed>
<shadow><p>test</p></shadow>
<strike><p>test</p></strike>
<tt><p>test</p></tt>
<xmp><p>test</p></xmp>
<div><p>test</p><svg>test</svg></div>
<ruby>
<rb></rb><rb>
</rb><rp>(</rp><rt>kan</rt><rt>ji</rt><rp>)</rp>
</ruby>
<ruby>
<rb></rb><rb></rb><rp>(</rp><rt>kan</rt><rt>ji</rt><rp>)</rp>
</ruby>
<div class="info"><ruby>
<rbc>
<rb></rb><rt>jiù</rt>
<rb></rb><rt>jīn</rt>
<rb></rb><rt>shān</rt>
</rbc>
<rtc>San Francisco</rtc></ruby>
</div>
<table><thead>
<tr><th>Customer</th><th>Order</th><th>Month</th></tr>
</thead><tbody>
<tr><td>Customer 1</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 1</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 1</td><td>#3</td><td>March</td></tr>
</tbody><tbody>
<tr><td>Customer 2</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 2</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 2</td><td>#3</td><td>March</td></tr>
</tbody><tbody>
<tr><td>Customer 3</td><td>#1</td><td>January</td></tr>
<tr><td>Customer 3</td><td>#2</td><td>April</td></tr>
<tr><td>Customer 3</td><td>#3</td><td>March</td></tr>
</tbody></table>
<table><colgroup>
<col class="">
<col class="">
<col class="">
</colgroup><colgroup>
<col class="">
<col class="">
<col class="">
</colgroup><tbody><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody></table>
<table>
<colgroup><col class=""><col class=""><col class=""></colgroup>
<tbody><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody></table>
<table>
<colgroup><col class=""><col class=""><col class=""></colgroup><tbody><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody></table>
<table>
<colgroup><col class=""><col class=""><col class=""></colgroup><colgroup><col class=""><col class=""><col class=""></colgroup>
<tbody><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody></table>
<table><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody></table>
<table><thead><tr><td>test</td></tr></thead><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody></table>
<table><tfoot><tr><td>test</td></tr></tfoot><tbody><tr><td>test</td></tr></tbody><tbody><tr><td>test</td></tr></tbody></table>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head><body>
<!doctype html><html lang=en><title>Document</title><body>
<ul><li>test</ul>
<ul> <li>test</li> </ul>
<ul> <li>test</li> <li>test</li> </ul>
@ -11,6 +11,400 @@
<dl><dt>What do we want?<dd>Our data.<dt>When do we want it?<dd>Now.<dt>Where is it?<dd>We are not sure.</dl>
</article>
<form action=courseselector.dll method=get>
<p>Which course would you like to watch today?
<p><label>Course:
<select name=c>
<optgroup label="8.01 Physics I: Classical Mechanics">
<option value=8.01.1>Lecture 01: Powers of Ten
<option value=8.01.2>Lecture 02: 1D Kinematics
<option value=8.01.3>Lecture 03: Vectors
<optgroup label="8.02 Electricity and Magnetism">
<option value=8.02.1>Lecture 01: What holds our world together?
<option value=8.02.2>Lecture 02: Electric Field
<option value=8.02.3>Lecture 03: Electric Flux
</optgroup>
<optgroup label="8.03 Physics III: Vibrations and Waves">
<option value=8.03.1>Lecture 01: Periodic Phenomenon
<option value=8.03.2>Lecture 02: Beats
<option value=8.03.3>Lecture 03: Forced Oscillations with Damping
</optgroup>
</select>
</label>
<p><input type=submit value="▶ Play">
</form>
<table>
<tr>
<th>Month<th>Savings</th>
</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</table>
<table>
<tr><th>Month<th>Savings</tr>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</table>
<table width=100% cellspacing=0 border=1>
<tr>
<th>One</th>
<th>Two</th>
</tr>
<tr>
<th>Three<td>5.5</td>
<td>6.0</td>
</tr>
</table>
<table width=100% cellspacing=0 border=1>
<tr>
<th>One</th>
<th>Two</th>
</tr>
<tr><th>Three<td>5.5<td>6.0</tr>
</table>
<table><tr><th>Month<th>Savings<tr>
<td>January</td>
<td>$100</td>
<tr>
<td>February</td>
<td>$80</td>
</table>
<table><thead>
<tr>
<th>Items</th>
<th scope=col>Expenditure</th>
</tr>
<tbody>
<tr>
<th scope=row>Donuts</th>
<td>3,000</td>
</tr>
<tr>
<th scope=row>Stationery</th>
<td>18,000</td>
</tr>
<tfoot>
<tr>
<th scope=row>Totals</th>
<td>21,000</td>
</tr>
</table>
<table><thead>
<tr>
<th>Items</th>
<th scope=col>Expenditure</th>
</tr>
<tfoot>
<tr>
<th scope=row>Totals</th>
<td>21,000</td>
</tr>
</table>
<table><thead>
<tr>
<th>Items</th>
<th scope=col>Expenditure</th>
</tr>
</thead></table>
<table><tbody>
<tr>
<th scope=row>Donuts</th>
<td>3,000</td>
</tr>
<tr>
<th scope=row>Stationery</th>
<td>18,000</td>
</tr>
</table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span=2 class=batman>
<col span=2 class=flash>
</colgroup>
<tr>
<td>&nbsp;</td>
<th scope=col>Batman</th>
<th scope=col>Robin</th>
<th scope=col>The Flash</th>
<th scope=col>Kid Flash</th>
</tr>
<tr>
<th scope=row>Skill</th>
<td>Smarts</td>
<td>Dex, acrobat</td>
<td>Super speed</td>
<td>Super speed</td>
</tr>
</table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span=2 class=batman>
<col span=2 class=flash>
<tr>
<td>&nbsp;</td>
<th scope=col>Batman</th>
<th scope=col>Robin</th>
<th scope=col>The Flash</th>
<th scope=col>Kid Flash</th>
</tr>
</table>
<table>
<caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span=2 class=batman>
<col span=2 class=flash>
</colgroup><!-- comment -->
<tr>
<td>&nbsp;</td>
<th scope=col>Batman</th>
<th scope=col>Robin</th>
<th scope=col>The Flash</th>
<th scope=col>Kid Flash</th>
</tr>
</table>
<table><caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span=2 class=batman>
<col span=2 class=flash>
</table>
<table><caption>Superheros and sidekicks</caption>
<colgroup>
<col>
<col span=2 class=batman>
<col span=2 class=flash>
</colgroup> <tbody>
<tr>
<td>&nbsp;</td>
<th scope=col>Batman</th>
<th scope=col>Robin</th>
<th scope=col>The Flash</th>
<th scope=col>Kid Flash</th>
</tr>
</tbody>
</table>
<table>
<caption>He-Man and Skeletor facts</caption>
<tr>
<td>&nbsp;</td>
<th scope=col class=heman>He-Man</th>
<th scope=col class=skeletor>Skeletor</th>
</tr>
<tr>
<th scope=row>Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</table>
<table>
<caption>He-Man and Skeletor facts<tr>
<td>&nbsp;</td>
<th scope=col class=heman>He-Man</th>
<th scope=col class=skeletor>Skeletor</th>
</tr>
<tr>
<th scope=row>Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</table>
<table>
<caption>He-Man and Skeletor facts</caption><!-- comment --> <tr>
<td>&nbsp;</td>
<th scope=col class=heman>He-Man</th>
<th scope=col class=skeletor>Skeletor</th>
</tr>
<tr>
<th scope=row>Role</th>
<td>Hero</td>
<td>Villain</td>
</tr>
</table>
<ruby>
<rp>(<rt>kan<rp>)</rp>
<rp>(<rt>ji<rp>)</rp>
</ruby>
<ruby><rp>(<rt>kan<rp>)</rp><rp>(<rt>ji<rp>)</ruby>
<div>
<p>test</p>
<p>test
<p>test</p> <p>test</p>
<p>test<p>test</p>
<p>test<div>test</div>
<p>test<div>test</div>
<p>test</p><img>
</div>
<div><p>test</div>
<a><p>test</p></a>
<my-element><p>Test</p></my-element>
<unknown><p>test</p></unknown>
<spacer><p>test</p></spacer>
<div>
<p>test</p><svg></svg>
</div>
<acronym><p>test</p></acronym>
<applet code=game.class align=left archive=game.zip height=250 width=350>
<param name=difficulty value=easy>
<p>Sorry, you need Java to play this game.</applet>
<big><p>test</p></big>
<blink><p>test</p></blink>
<center><p>test</center>
<command><p>test</p></command>
<content><p>test</p></content>
<dir><p>test</dir>
<element><p>test</p></element>
<font><p>test</p></font>
<kbd><p>test</p></kbd>
<listing><p>test</listing>
<marquee behavior=test direction=test><p>test</marquee>
<multicol><p>test</p></multicol>
<noembed><p>test</p></noembed>
<shadow><p>test</p></shadow>
<strike><p>test</p></strike>
<tt><p>test</p></tt>
<xmp><p>test</p></xmp>
<div><p>test</p><svg>test</svg></div>
<ruby>
<rb><rb>
<rp>(<rt>kan<rt>ji<rp>)</rp>
</ruby>
<ruby>
<rb><rb><rp>(<rt>kan<rt>ji<rp>)</rp>
</ruby>
<div class=info><ruby>
<rbc>
<rb><rt>jiù</rt>
<rb><rt>jīn</rt>
<rb><rt>shān</rt>
</rbc>
<rtc>San Francisco</ruby>
</div>
<table><thead>
<tr><th>Customer<th>Order<th>Month</tr>
<tbody>
<tr><td>Customer 1<td>#1<td>January</tr>
<tr><td>Customer 1<td>#2<td>April</tr>
<tr><td>Customer 1<td>#3<td>March</tr>
<tbody>
<tr><td>Customer 2<td>#1<td>January</tr>
<tr><td>Customer 2<td>#2<td>April</tr>
<tr><td>Customer 2<td>#3<td>March</tr>
<tbody>
<tr><td>Customer 3<td>#1<td>January</tr>
<tr><td>Customer 3<td>#2<td>April</tr>
<tr><td>Customer 3<td>#3<td>March</tr>
</table>
<table><colgroup>
<col class="">
<col class="">
<col class="">
<colgroup>
<col class="">
<col class="">
<col class="">
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table>
<col class=""><col class=""><col class=""></colgroup>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table>
<col class=""><col class=""><col class=""><tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table>
<col class=""><col class=""><col class=""><colgroup><col class=""><col class=""><col class=""></colgroup>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</table>
<table><tr><td>test<tbody><tr><td>test<tbody><tr><td>test</table>
<table><thead><tr><td>test<tbody><tr><td>test<tbody><tr><td>test</table>
<table><tfoot><tr><td>test</tfoot><tbody><tr><td>test<tbody><tr><td>test</table>
</body></html>

View File

@ -7,4 +7,3 @@
<body>
<p>Test</p>
</body></html>

View File

@ -1,8 +1,7 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head></head><body>
<!doctype html><html><body>
<p>The pre tag preserves both spaces and line breaks:</p>
@ -15,4 +15,3 @@
</body></html>

View File

@ -5,4 +5,3 @@
document.write('<script type="text/javascript">alert(1);</script>');
</body></html>

View File

@ -5,4 +5,3 @@
document.write('<script type="text/javascript">alert(1);<\x2fscript>');
</script>
</body></html>

View File

@ -1,6 +1,5 @@
<!-- following are self closing tags --><!-- have no content or child --><html><head></head><body><br>
<!-- following are self closing tags --><!-- have no content or child --><html><br>
<hr>
<input type=text>
<img src=#URL alt=image>
<area shape=rect coords=0,0,100,100 href=#URL>
</body></html>

View File

@ -26,4 +26,3 @@
</textarea>
</svg>
</body></html>

View File

@ -1,8 +1,7 @@
<html><head></head><body><div>test</div>
<html><div>test</div>
<div>test</div>
<div>test</div>
<br>
<br>
<br>
<br>
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<a href=13.html id=rm13 aria-labelledby="rm13 attr">read more</a>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<p><button autofocus value=next>Button</button></p>
@ -13,4 +13,3 @@
<img data-readonly=test>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<p class="bar foo">foo bar baz</p>
<p class=foo>foo bar baz</p>
@ -122,4 +122,3 @@
</div>
</body></html>

View File

@ -1,7 +1,7 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<table width=200 border=1 align=center cellpadding=4 cellspacing=0>
<tbody><tr>
<tr>
<th scope=col>Cell 1</th>
</tr>
<tr>
@ -9,6 +9,5 @@
Cell 1
</td>
</tr>
</tbody></table>
</table>
</body></html>

View File

@ -1,7 +1,6 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<div contenteditable="">Stress reliever</div>
<div contenteditable="">Stress reliever</div>
<div contenteditable=false>Stress reliever</div>
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<input class=form-control id={{vm.formInputName}} name={{vm.formInputName}} placeholder=YYYY-MM-DD date-range-picker data-ng-model=vm.value data-ng-model-options="{ debounce: 1000 }" data-ng-pattern=vm.options.format data-options=vm.datepickerOptions>
</body></html>

View File

@ -1,6 +1,5 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<p title=\n lang="" dir="">x</p>
<p>x</p>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head><meta charset=utf-8><title>Test</title></head>
<!doctype html><html><meta charset=utf-8><title>Test</title></head>
<body>
<form action=handler.php method=post>
<input name=str>
@ -12,4 +12,3 @@
</form>
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<!doctype html><html lang=en><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<body>
<iframe id=test src=test.html></iframe>
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<img src=test.png alt=test>
</body></html>

View File

@ -1,8 +1,7 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<input name=a>
<input name=b>
<input name=c>
<input name=d>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<form action=/test>
<input onkeydown=myFunction()>
@ -10,4 +10,3 @@
<circle onmouseover="alert('test')" cx=50 cy=50 r=30 style=fill:url(#gradient)></circle>
</svg>
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title><link rel=stylesheet href=a.css><link rel=stylesheet href=b.css><link rel=stylesheet href=b.css><link rel=stylesheet href=c.css><link rel=stylesheet href=d.css type=""><link rel=stylesheet href=d.css type=unknown/unknown></head>
<!doctype html><html lang=en><title>Document</title><link rel=stylesheet href=a.css><link rel=stylesheet href=b.css><link rel=stylesheet href=b.css><link rel=stylesheet href=c.css><link rel=stylesheet href=d.css type=""><link rel=stylesheet href=d.css type=unknown/unknown></head>
<body>
<div>test</div>
</body></html>

View File

@ -1,7 +1,6 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<meter id=fuel max=100 low=33 high=66 optimum=80 value=50>
at 50/100
</meter>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<ol>
<li>Mix flour, baking powder, sugar, and salt.</li>
@ -8,4 +8,3 @@
<li>Bake for 20 minutes.</li>
</ol>
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<progress></progress>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<!doctype html><html lang=en><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<body>
<div data-test=test></div>
<div data-test=test></div>
@ -12,4 +12,3 @@ test"></div>
<div data="{ 'test': 'test' }"></div>
<div data='{"test":"\\"test\\""}'></div>'
</body></html>

View File

@ -1,7 +1,6 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<a href=# rel="value1 nofollow">Link</a>
<a href=# rel="value1 nofollow">Link</a>
<a href=# rel=nofollow>Link</a>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html><head><script defer>
<!doctype html><html><script defer>
console.log();
</script><script>
console.log();
@ -13,4 +13,4 @@
test
</div>
<!-- aa -->\n
</script><script type="">alert(1)</script><script type=modules>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script type=module src=app.mjs></script><script nomodule defer src=classic-app-bundle.js></script><script>alert(1)</script><script type=text/vbscript>MsgBox("foo bar")</script><script type="">MsgBox("foo bar")</script><script type=;;;;;>MsgBox("foo bar")</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script></head><body></body></html>
</script><script type="">alert(1)</script><script type=modules>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script type=module src=app.mjs></script><script nomodule defer src=classic-app-bundle.js></script><script>alert(1)</script><script type=text/vbscript>MsgBox("foo bar")</script><script type="">MsgBox("foo bar")</script><script type=;;;;;>MsgBox("foo bar")</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script><script>alert(1)</script>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<p title=bar>foo</p>
<p title=bar>foo</p>
@ -10,4 +10,3 @@
<p title=bar>foo</p>
<p title=bar>foo</p>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<img srcset="elva-fairy-480w.jpg 480w,elva-fairy-800w.jpg 800w" sizes="(max-width: 600px) 480px,800px" src=elva-fairy-800w.jpg alt="Elva dressed as a fairy">
@ -7,4 +7,3 @@
<img src=favicon72.png alt="MDN logo" srcset="favicon144.png 2x">
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title><style>
<!doctype html><html lang=en><title>Document</title><style>
h1 {color:red;}
p {color:blue;}
</style><style>
@ -21,4 +21,3 @@
<p style="color: red; background-color: rgb(100, 75, 200);"></p>
<p></p>
</body></html>

View File

@ -1 +1 @@
<!doctype html><html><head></head><body><a href=# tabindex=1>x</a><button tabindex=2>y</button></body></html>
<!doctype html><html><a href=# tabindex=1>x</a><button tabindex=2>y</button>

View File

@ -1,5 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<textarea name=test id=test></textarea>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<!doctype html><html lang=en><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<body>
<video controls src=/media/cc0-videos/friday.mp4>
@ -12,4 +12,3 @@
</video>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title><!--[if !IE]>--><link href=non-ie.css rel=stylesheet><!--<![endif]--><!--[if IE]>
<!doctype html><html lang=en><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title><!--[if !IE]>--><link href=non-ie.css rel=stylesheet><!--<![endif]--><!--[if IE]>
<link type="text/css" rel="stylesheet" href="/stylesheets/no-ie.css">
<![endif]--><!--[if IE 8]>
<link href="ie8only.css" rel="stylesheet">
@ -24,4 +24,3 @@
/* ]]> */
</script>
</body></html>

View File

@ -1,8 +1,7 @@
<!doctype html><html><head><title>Title of the document</title></head>
<!doctype html><html><title>Title of the document</title></head>
<body>
The content of the document......
</body></html>

View File

@ -1,8 +1,7 @@
<!doctype html><html><head><title>Title of the document</title></head>
<!doctype html><html><title>Title of the document</title></head>
<body>
The content of the document......
</body></html>

View File

@ -1,5 +1,4 @@
<!doctype html system "about:legacy-compat"><html lang=en><head><title>Document</title></head>
<!doctype html system "about:legacy-compat"><html lang=en><title>Document</title></head>
<body>
<div>test</div>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=EN><head><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<!doctype html><html lang=EN><meta charset=UTF-8><meta name=viewport content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title></head>
<body>
<div data-test=Test>TEST</div>
<p>blah<span>blah 2<span>blah 3</span></span></p>
@ -9,4 +9,3 @@
<div title=blah>boo</div>
<div title=blah>boo</div>
</body></html>

View File

@ -1,7 +1,6 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<a href=test.html><div>hey</div></a>
<a href>ok</a>
<a onclick></a>
</body></html>

View File

@ -1,6 +1,5 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
test<br>test
test<br>test
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<begriffs.pagination ng-init="perPage=20" collection=logs url="\'/api/logs?user=-1\'" per-page=perPage per-page-presets=[10,20,50,100] template-url=/assets/paginate-anything.html></begriffs.pagination>
<some-tag-1></some-tag-1><some-tag-2></some-tag-2>
@ -7,4 +7,3 @@
<tag v-ref:vm_pv :imgs=" objpicsurl_ "></tag>
<span><phrasing-element></phrasing-element></span>
</body></html>

View File

@ -1,4 +1,4 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<form action="" class=form-example>
<div class=form-example>
@ -26,4 +26,3 @@
</form>
</body></html>

View File

@ -1,8 +1,7 @@
<!doctype html><html lang=en><head><title>Document</title></head>
<!doctype html><html lang=en><title>Document</title></head>
<body>
<p>For more information, read <a href=https://stackoverflow.com/questions/17408815/fieldset-resizes-wrong-appears-to-have-unremovable-min-width-min-content/17863685#17863685>this Stack Overflow answer</a>.</p>
<p>a</p><div>b</div>
<p>a</p><ul><li>item</ul>
<p>a</p><ol><li>item</ol>
<p>a<div>b</div>
<p>a<ul><li>item</ul>
<p>a<ol><li>item</ol>
</body></html>

Some files were not shown because too many files have changed in this diff Show More