| Test
| Actual output
| Expected output
| Markup
|
| Empty document
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
|
| Basic <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="next" href="http://example.org/test.css" />
|
| Empty <link rel>
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="" href="http://example.org/test.css" />
|
| Valueless <link rel>
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel href="http://example.org/test.css" />
|
| Whitespace around <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel=" next " href="http://example.org/test.css" />
|
| Whitespace in <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="next prev	first
lastsection
subsection" href="http://example.org/test.css" />
|
| Not-whitespace in <link rel>
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="nextprev" href="http://example.org/test.css" />
|
| Uppercase in <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="NEXT" href="http://example.org/test.css" />
|
| Bogus reserved words in <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="next bogus prev" href="http://example.org/test.css" />
|
| URLs in <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link rel="next http://example.org/test prev" href="http://example.org/test.css" />
|
| CURIEs in <link rel>
|
| <> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .
<> <http://example.org/test> <http://example.org/test.css> .
<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<link xmlns:ex="http://example.org/" rel="next ex:test prev" href="http://example.org/test.css" />
|
| Basic xmlns
|
| <> <http://example.org/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:test">Test</p>
|
| Uppercase xmlns, lowercase CURIE
|
| <> <http://example.org/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p XMLNS:EX="http://example.org/" property="ex:test">Test</p>
|
| Uppercase xmlns, uppercase CURIE
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p XMLNS:EX="http://example.org/" property="EX:test">Test</p>
|
| Non-NCName xmlns prefix
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:0="http://example.org/" property="0:test">Test</p>
|
| Empty xmlns prefix
|
| <> <http://www.w3.org/1999/xhtml/vocab#test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:="http://example.org/" property=":test">Test</p>
|
| Underscore xmlns prefix
|
| <> <http://example.org/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:_="http://example.org/" property="_:test">Test</p>
|
| xmlns prefix 'xml' with correct URI
|
| <> <http://www.w3.org/XML/1998/namespacetest> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:xml="http://www.w3.org/XML/1998/namespace" property="xml:test">Test</p>
|
| xmlns prefix 'xml' with incorrect URI
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:xml="http://example.org/" property="xml:test">Test</p>
|
| xmlns prefix 'xmlns' with correct URI
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:xmlns="http://www.w3.org/2000/xmlns/" property="xmlns:test">Test</p>
|
| xmlns prefix 'xmlns' with incorrect URI
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:xmlns="http://example.org/" property="xmlns:test">Test</p>
|
| xmlns prefix 'xmlzzz'
|
| <> <http://example.org/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:xmlzzz="http://example.org/" property="xmlzzz:test">Test</p>
|
| Empty xmlns value
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="" property="ex:http://example.com/test">Test</p>
|
| Empty xmlns value overriding non-empty
|
| <> <http://example.org/http://example.com/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/"><span xmlns:ex="" property="ex:http://example.com/test">Test</span></p>
|
| Invalid (xml URI) xmlns value
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://www.w3.org/XML/1998/namespace" property="ex:test">Test</p>
|
| Invalid (xmlns URI) xmlns value
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://www.w3.org/2000/xmlns/" property="ex:test">Test</p>
|
| Colon in prefix
|
| <> <http://example.org/1/two:three:test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/1/" xmlns:ex:two="http://example.org/2/" property="ex:two:three:test">Test</p>
|
| Non-XML4e xmlns prefix
|
| <> <http://example.org/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:testŀ="http://example.org/">
<span xmlns:test="http://example.org/error/" property="testŀ:test">Test</span>
</p>
|
| Non-ASCII case insensitivity in xmlns prefix (1)
|
| <> <http://example.org/1/one> "Test".
<> <http://example.org/2/two> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:testÁ="http://example.org/1/">
<span xmlns:testá="http://example.org/2/">
<span property="testÁ:one">Test</span>
<span property="testá:two">Test</span>
</span>
</p>
|
| Non-ASCII case insensitivity in xmlns prefix (2)
|
| <> <http://example.org/1/one> "Test".
<> <http://example.org/2/two> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:testᾈ="http://example.org/1/">
<span xmlns:testᾀ="http://example.org/2/">
<span property="testᾈ:one">Test</span>
<span property="testᾀ:two">Test</span>
</span>
</p>
|
| Scripted: Conflicting xmlns values
|
| <> <test2:test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:t="test1:" id="d">
<span property="t:test">Test</span>
</p>
<script>
document.getElementById('d').setAttributeNS(
'http://www.w3.org/2000/xmlns/', 'xmlns:t', 'test2:');
/* (now the element has two distinct attributes,
each in different namespaces) */
</script>
|
| Undeclared prefix
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p property="foobar:test">Test</p>
|
| Undeclared prefix 'rdf'
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p property="rdf:test">Test</p>
|
| Undeclared prefix 'xml'
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p property="xml:test">Test</p>
|
| Undeclared prefix 'xmlns'
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p property="xmlns:test">Test</p>
|
| Undeclared common prefixes
|
|
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p property="dc:test">Test</p>
<p property="foaf:test">Test</p>
<p property="owl:test">Test</p>
<p property="rdfs:test">Test</p>
<p property="xv:test">Test</p>
<p property="xsd:test">Test</p>
|
| Digits in CURIE value
|
| <> <http://example.org/one2three4> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:one2three4">Test</p>
|
| Ignoring 'about' with undefined prefix
|
| <http://example.com/> <http://example.org/test1> "Test".
<http://example.com/> <http://example.org/test2> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/">
<span src="http://example.com/">
<span property="ex:test1">Test</span>
</span>
<span about="[bogus:bogus]" src="http://example.com/">
<span property="ex:test2">Test</span>
</span>
</p>
|
| Ignoring 'about' with invalid prefix
|
| <http://example.com/> <http://example.org/test1> "Test".
<http://example.com/> <http://example.org/test2> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" xmlns:0="http://example.org/error/">
<span src="http://example.com/">
<span property="ex:test1">Test</span>
</span>
<span about="[0:bogus]" src="http://example.com/">
<span property="ex:test2">Test</span>
</span>
</p>
|
| Ignoring 'rel' with undefined prefix
|
| <http://example.org/href> <http://example.org/test1> "Test".
<> <http://example.org/test2> <http://example.org/href>.
<> <http://example.org/test3> "Test".
<> <http://example.org/test5> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/">
<span property="ex:test1" href="http://example.org/href">Test</span>
<span rel="ex:test2" property="ex:test3" href="http://example.org/href">Test</span>
<span rel="bogus:test4" property="ex:test5" href="http://example.org/href">Test</span>
</p>
|
| Ignoring 'rel' with invalid prefix
|
| <http://example.org/href> <http://example.org/test1> "Test".
<> <http://example.org/test2> <http://example.org/href>.
<> <http://example.org/test3> "Test".
<> <http://example.org/test5> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" xmlns:0="http://example.org/error/">
<span property="ex:test1" href="http://example.org/href">Test</span>
<span rel="ex:test2" property="ex:test3" href="http://example.org/href">Test</span>
<span rel="0:test4" property="ex:test5" href="http://example.org/href">Test</span>
</p>
|
| Ignoring empty 'rel'
|
| <http://example.org/href> <http://example.org/test1> "Test".
<> <http://example.org/test2> <http://example.org/href>.
<> <http://example.org/test3> "Test".
<> <http://example.org/test5> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/">
<span property="ex:test1" href="http://example.org/href">Test</span>
<span rel="ex:test2" property="ex:test3" href="http://example.org/href">Test</span>
<span rel="" property="ex:test5" href="http://example.org/href">Test</span>
</p>
|
| Invalid property setting 'skip element'
|
| <http://example.com/> <http://example.org/rel1> <http://example.net/>.
<http://example.com/> <http://example.org/rel2> _:blanknode0.
_:blanknode0 <http://example.org/prop> "Content 2" .
<http://example.com/> <http://example.org/rel3> _:blanknode1.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" about="http://example.com/" rel="ex:rel1">
<span content="Content 1"><span about="http://example.net/">Test 1</span>
</p>
<p xmlns:ex="http://example.org/" about="http://example.com/" rel="ex:rel2">
<span property="ex:prop" content="Content 2"><span about="http://example.net/">Test 2</span></span>
</p>
<p xmlns:ex="http://example.org/" about="http://example.com/" rel="ex:rel3">
<span property="bogus:bogus" content="Content 3"><span about="http://example.net/">Test 3</span></span>
</p>
|
| Safe CURIE containing square brackets
|
| <> <http://example.org/1/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/1/" xmlns:[ex="http://example.org/2/" about="[[ex:test]]" property="ex:test">Test</p>
|
| Language in xml:lang
|
| <> <http://example.org/test> "Test".
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:test" xml:lang="aa">Test</p>
|
| Language in lang
|
| <> <http://example.org/test> "Test"@aa.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:test" lang="aa">Test</p>
|
| Language inheritance
|
| <> <http://example.org/test> "Test"@cc.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p lang="aa"><span lang="bb"><span xmlns:ex="http://example.org/" property="ex:test" lang="cc">Test</span></span></p>
|
| Conflicting languages
|
| <> <http://example.org/test> "Test"@aa.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:test" lang="aa" xml:lang="bb">Test</p>
|
| Duplicate language attributes
|
| <> <http://example.org/test> "Test"@bb.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:test" xml:lang="aa" lang="bb" lang="cc" xml:lang="dd">Test</p>
|
| Conflicting language inheritance (1)
|
| <> <http://example.org/test> "Test"@aa.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p lang="aa"><span xmlns:ex="http://example.org/" property="ex:test" xml:lang="bb">Test</span></p>
|
| Conflicting language inheritance (2)
|
| <> <http://example.org/test> "Test"@bb.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xml:lang="aa"><span xmlns:ex="http://example.org/" property="ex:test" lang="bb">Test</span></p>
|
| Scripted: Conflicting languages
|
| <> <http://example.org/test> "Test"@cc.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p xmlns:ex="http://example.org/" property="ex:test" lang="aa" xml:lang="bb" id="d">Test</p>
<script>
document.getElementById('d').setAttributeNS(
'http://www.w3.org/XML/1998/namespace', 'xml:lang', 'cc');
</script>
|
| Scripted: Conflicting language inheritance (1)
|
| <> <http://example.org/test> "Test"@aa.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p id="d"><span xmlns:ex="http://example.org/" property="ex:test" lang="aa" xml:lang="bb">Test</span></p>
<script>
document.getElementById('d').setAttributeNS(
'http://www.w3.org/XML/1998/namespace', 'xml:lang', 'cc');
</script>
|
| Scripted: Conflicting language inheritance (2)
|
| <> <http://example.org/test> "Test"@cc.
| <!DOCTYPE html>
<meta charset="utf-8">
<title>Test</title>
<p lang="aa" xml:lang="bb"><span xmlns:ex="http://example.org/" property="ex:test" id="d">Test</span></p>
<script>
document.getElementById('d').setAttributeNS(
'http://www.w3.org/XML/1998/namespace', 'xml:lang', 'cc');
</script>
|