[
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n",
      "expected" : "",
      "purpose" : "Empty document",
      "id" : "000",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"next\" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n",
      "purpose" : "Basic <link rel>",
      "id" : "001",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"\" href=\"http://example.org/test.css\" />\n",
      "expected" : "",
      "purpose" : "Empty <link rel>",
      "id" : "002",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel href=\"http://example.org/test.css\" />\n",
      "expected" : "",
      "purpose" : "Valueless <link rel>",
      "id" : "003",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"  next  \" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n",
      "purpose" : "Whitespace around <link rel>",
      "id" : "004",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"next&#x20;prev&#x09;first&#x0a;last&#x0c;section&#x0d;subsection\" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#first> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#last> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#section> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#subsection> <http://example.org/test.css> .\n",
      "notes" : "These are space characters as defined by HTML 5 (http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#space-character)",
      "purpose" : "Whitespace in <link rel>",
      "id" : "005",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"next&#x0b;prev\" href=\"http://example.org/test.css\" />\n",
      "expected" : "",
      "notes" : "This is no longer a space character as defined by HTML 5 (http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#space-character)",
      "purpose" : "Not-whitespace in <link rel>",
      "id" : "006",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"NEXT\" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n",
      "purpose" : "Uppercase in <link rel>",
      "id" : "007",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"next bogus prev\" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .\n",
      "purpose" : "Bogus reserved words in <link rel>",
      "id" : "008",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link rel=\"next http://example.org/test prev\" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .\n",
      "notes" : "These are interpreted as CURIEs with the undeclared prefix 'http'",
      "purpose" : "URLs in <link rel>",
      "id" : "009",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<link xmlns:ex=\"http://example.org/\" rel=\"next ex:test prev\" href=\"http://example.org/test.css\" />\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#next> <http://example.org/test.css> .\n<> <http://example.org/test> <http://example.org/test.css> .\n<> <http://www.w3.org/1999/xhtml/vocab#prev> <http://example.org/test.css> .\n",
      "purpose" : "CURIEs in <link rel>",
      "id" : "010",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:test\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\".\n",
      "purpose" : "Basic xmlns",
      "id" : "011",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p XMLNS:EX=\"http://example.org/\" property=\"ex:test\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\".\n",
      "purpose" : "Uppercase xmlns, lowercase CURIE",
      "id" : "012",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p XMLNS:EX=\"http://example.org/\" property=\"EX:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Uppercase xmlns, uppercase CURIE",
      "id" : "013",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:0=\"http://example.org/\" property=\"0:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Non-NCName xmlns prefix",
      "id" : "014",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:=\"http://example.org/\" property=\":test\">Test</p>\n",
      "expected" : "<> <http://www.w3.org/1999/xhtml/vocab#test> \"Test\".\n",
      "purpose" : "Empty xmlns prefix",
      "id" : "015",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:_=\"http://example.org/\" property=\"_:test\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\".\n",
      "purpose" : "Underscore xmlns prefix",
      "id" : "016",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:xml=\"http://www.w3.org/XML/1998/namespace\" property=\"xml:test\">Test</p>\n",
      "expected" : "<> <http://www.w3.org/XML/1998/namespacetest> \"Test\".\n",
      "notes" : "Namespaces in XML says the xml prefix \"MAY, but need not, be declared, ...\"",
      "purpose" : "xmlns prefix 'xml' with correct URI",
      "id" : "017",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:xml=\"http://example.org/\" property=\"xml:test\">Test</p>\n",
      "expected" : "",
      "notes" : "Namespaces in XML says the xml prefix \"MUST NOT be bound to any other namespace name\"",
      "purpose" : "xmlns prefix 'xml' with incorrect URI",
      "id" : "018",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:xmlns=\"http://www.w3.org/2000/xmlns/\" property=\"xmlns:test\">Test</p>\n",
      "expected" : "",
      "notes" : "Namespaces in XML says the xmlns prefix \"MUST NOT be declared\"",
      "purpose" : "xmlns prefix 'xmlns' with correct URI",
      "id" : "019",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:xmlns=\"http://example.org/\" property=\"xmlns:test\">Test</p>\n",
      "expected" : "",
      "notes" : "Namespaces in XML says the xmlns prefix \"MUST NOT be declared\"",
      "purpose" : "xmlns prefix 'xmlns' with incorrect URI",
      "id" : "020",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:xmlzzz=\"http://example.org/\" property=\"xmlzzz:test\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\".\n",
      "purpose" : "xmlns prefix 'xmlzzz'",
      "id" : "021",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"\" property=\"ex:http://example.com/test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Empty xmlns value",
      "id" : "022",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\"><span xmlns:ex=\"\" property=\"ex:http://example.com/test\">Test</span></p>\n",
      "expected" : "<> <http://example.org/http://example.com/test> \"Test\".\n",
      "purpose" : "Empty xmlns value overriding non-empty",
      "id" : "023",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://www.w3.org/XML/1998/namespace\" property=\"ex:test\">Test</p>\n",
      "expected" : "",
      "notes" : "Namespaces in XML says \"Other prefixes MUST NOT be bound to this namespace name\"",
      "purpose" : "Invalid (xml URI) xmlns value",
      "id" : "024",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://www.w3.org/2000/xmlns/\" property=\"ex:test\">Test</p>\n",
      "expected" : "",
      "notes" : "Namespaces in XML says \"Other prefixes MUST NOT be bound to this namespace name\"",
      "purpose" : "Invalid (xmlns URI) xmlns value",
      "id" : "025",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/1/\" xmlns:ex:two=\"http://example.org/2/\" property=\"ex:two:three:test\">Test</p>\n",
      "expected" : "<> <http://example.org/1/two:three:test> \"Test\".\n",
      "purpose" : "Colon in prefix",
      "id" : "026",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:testŀ=\"http://example.org/\">\n  <span xmlns:test=\"http://example.org/error/\" property=\"testŀ:test\">Test</span>\n</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\".\n",
      "notes" : "U+0140 is allowed in Name in XML 1.0 5th Edition, but not 4th Edition. Assume that it should work like any other letter.",
      "purpose" : "Non-XML4e xmlns prefix",
      "id" : "027",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:testÁ=\"http://example.org/1/\">\n  <span xmlns:testá=\"http://example.org/2/\">\n    <span property=\"testÁ:one\">Test</span>\n    <span property=\"testá:two\">Test</span>\n  </span>\n</p>\n",
      "expected" : "<> <http://example.org/1/one> \"Test\".\n<> <http://example.org/2/two> \"Test\".\n",
      "notes" : "This tests that non-ASCII prefixes don't get lowercased in declarations or in CURIEs",
      "purpose" : "Non-ASCII case insensitivity in xmlns prefix (1)",
      "id" : "028",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:testᾈ=\"http://example.org/1/\">\n  <span xmlns:testᾀ=\"http://example.org/2/\">\n    <span property=\"testᾈ:one\">Test</span>\n    <span property=\"testᾀ:two\">Test</span>\n  </span>\n</p>\n",
      "expected" : "<> <http://example.org/1/one> \"Test\".\n<> <http://example.org/2/two> \"Test\".\n",
      "notes" : "This tests that non-ASCII prefixes don't get lowercased in declarations or in CURIEs",
      "purpose" : "Non-ASCII case insensitivity in xmlns prefix (2)",
      "id" : "029",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:t=\"test1:\" id=\"d\">\n<span property=\"t:test\">Test</span>\n</p>\n<script>\ndocument.getElementById('d').setAttributeNS(\n    'http://www.w3.org/2000/xmlns/', 'xmlns:t', 'test2:');\n    /* (now the element has two distinct attributes,\n        each in different namespaces) */\n</script>\n",
      "expected" : "<> <test2:test> \"Test\".\n",
      "purpose" : "Scripted: Conflicting xmlns values",
      "id" : "030",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p property=\"foobar:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Undeclared prefix",
      "id" : "031",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p property=\"rdf:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Undeclared prefix 'rdf'",
      "id" : "032",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p property=\"xml:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Undeclared prefix 'xml'",
      "id" : "033",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p property=\"xmlns:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Undeclared prefix 'xmlns'",
      "id" : "034",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p property=\"dc:test\">Test</p>\n<p property=\"foaf:test\">Test</p>\n<p property=\"owl:test\">Test</p>\n<p property=\"rdfs:test\">Test</p>\n<p property=\"xv:test\">Test</p>\n<p property=\"xsd:test\">Test</p>\n",
      "expected" : "",
      "purpose" : "Undeclared common prefixes",
      "id" : "035",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:one2three4\">Test</p>\n",
      "expected" : "<> <http://example.org/one2three4> \"Test\".\n",
      "notes" : "rdfQuery seemed to strip everything after the digit",
      "purpose" : "Digits in CURIE value",
      "id" : "036",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\">\n  <span src=\"http://example.com/\">\n    <span property=\"ex:test1\">Test</span>\n  </span>\n  <span about=\"[bogus:bogus]\" src=\"http://example.com/\">\n    <span property=\"ex:test2\">Test</span>\n  </span>\n</p>\n",
      "expected" : "<http://example.com/> <http://example.org/test1> \"Test\".\n<http://example.com/> <http://example.org/test2> \"Test\".\n",
      "purpose" : "Ignoring 'about' with undefined prefix",
      "id" : "037",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" xmlns:0=\"http://example.org/error/\">\n  <span src=\"http://example.com/\">\n    <span property=\"ex:test1\">Test</span>\n  </span>\n  <span about=\"[0:bogus]\" src=\"http://example.com/\">\n    <span property=\"ex:test2\">Test</span>\n  </span>\n</p>\n",
      "expected" : "<http://example.com/> <http://example.org/test1> \"Test\".\n<http://example.com/> <http://example.org/test2> \"Test\".\n",
      "purpose" : "Ignoring 'about' with invalid prefix",
      "id" : "038",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\">\n  <span property=\"ex:test1\" href=\"http://example.org/href\">Test</span>\n  <span rel=\"ex:test2\" property=\"ex:test3\" href=\"http://example.org/href\">Test</span>\n  <span rel=\"bogus:test4\" property=\"ex:test5\" href=\"http://example.org/href\">Test</span>\n</p>\n",
      "expected" : "<http://example.org/href> <http://example.org/test1> \"Test\".\n<> <http://example.org/test2> <http://example.org/href>.\n<> <http://example.org/test3> \"Test\".\n<> <http://example.org/test5> \"Test\".\n",
      "purpose" : "Ignoring 'rel' with undefined prefix",
      "id" : "039",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" xmlns:0=\"http://example.org/error/\">\n  <span property=\"ex:test1\" href=\"http://example.org/href\">Test</span>\n  <span rel=\"ex:test2\" property=\"ex:test3\" href=\"http://example.org/href\">Test</span>\n  <span rel=\"0:test4\" property=\"ex:test5\" href=\"http://example.org/href\">Test</span>\n</p>\n",
      "expected" : "<http://example.org/href> <http://example.org/test1> \"Test\".\n<> <http://example.org/test2> <http://example.org/href>.\n<> <http://example.org/test3> \"Test\".\n<> <http://example.org/test5> \"Test\".\n",
      "purpose" : "Ignoring 'rel' with invalid prefix",
      "id" : "040",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\">\n  <span property=\"ex:test1\" href=\"http://example.org/href\">Test</span>\n  <span rel=\"ex:test2\" property=\"ex:test3\" href=\"http://example.org/href\">Test</span>\n  <span rel=\"\" property=\"ex:test5\" href=\"http://example.org/href\">Test</span>\n</p>\n",
      "expected" : "<http://example.org/href> <http://example.org/test1> \"Test\".\n<> <http://example.org/test2> <http://example.org/href>.\n<> <http://example.org/test3> \"Test\".\n<> <http://example.org/test5> \"Test\".\n",
      "purpose" : "Ignoring empty 'rel'",
      "id" : "041",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" about=\"http://example.com/\" rel=\"ex:rel1\">\n  <span content=\"Content 1\"><span about=\"http://example.net/\">Test 1</span>\n</p>\n<p xmlns:ex=\"http://example.org/\" about=\"http://example.com/\" rel=\"ex:rel2\">\n  <span property=\"ex:prop\" content=\"Content 2\"><span about=\"http://example.net/\">Test 2</span></span>\n</p>\n<p xmlns:ex=\"http://example.org/\" about=\"http://example.com/\" rel=\"ex:rel3\">\n  <span property=\"bogus:bogus\" content=\"Content 3\"><span about=\"http://example.net/\">Test 3</span></span>\n</p>\n",
      "expected" : "<http://example.com/> <http://example.org/rel1> <http://example.net/>.\n<http://example.com/> <http://example.org/rel2> _:blanknode0.\n_:blanknode0 <http://example.org/prop> \"Content 2\" .\n<http://example.com/> <http://example.org/rel3> _:blanknode1.\n",
      "purpose" : "Invalid property setting 'skip element'",
      "id" : "042",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/1/\" xmlns:[ex=\"http://example.org/2/\" about=\"[[ex:test]]\" property=\"ex:test\">Test</p>\n",
      "expected" : "<> <http://example.org/1/test> \"Test\".\n",
      "purpose" : "Safe CURIE containing square brackets",
      "id" : "043",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:test\" xml:lang=\"aa\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\".\n",
      "purpose" : "Language in xml:lang",
      "id" : "044",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:test\" lang=\"aa\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@aa.\n",
      "purpose" : "Language in lang",
      "id" : "045",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p lang=\"aa\"><span lang=\"bb\"><span xmlns:ex=\"http://example.org/\" property=\"ex:test\" lang=\"cc\">Test</span></span></p>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@cc.\n",
      "purpose" : "Language inheritance",
      "id" : "046",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:test\" lang=\"aa\" xml:lang=\"bb\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@aa.\n",
      "purpose" : "Conflicting languages",
      "id" : "047",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:test\" xml:lang=\"aa\" lang=\"bb\" lang=\"cc\" xml:lang=\"dd\">Test</p>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@bb.\n",
      "purpose" : "Duplicate language attributes",
      "id" : "048",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p lang=\"aa\"><span xmlns:ex=\"http://example.org/\" property=\"ex:test\" xml:lang=\"bb\">Test</span></p>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@aa.\n",
      "purpose" : "Conflicting language inheritance (1)",
      "id" : "049",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xml:lang=\"aa\"><span xmlns:ex=\"http://example.org/\" property=\"ex:test\" lang=\"bb\">Test</span></p>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@bb.\n",
      "purpose" : "Conflicting language inheritance (2)",
      "id" : "050",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p xmlns:ex=\"http://example.org/\" property=\"ex:test\" lang=\"aa\" xml:lang=\"bb\" id=\"d\">Test</p>\n<script>\ndocument.getElementById('d').setAttributeNS(\n  'http://www.w3.org/XML/1998/namespace', 'xml:lang', 'cc');\n</script>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@cc.\n",
      "purpose" : "Scripted: Conflicting languages",
      "id" : "051",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p id=\"d\"><span xmlns:ex=\"http://example.org/\" property=\"ex:test\" lang=\"aa\" xml:lang=\"bb\">Test</span></p>\n<script>\ndocument.getElementById('d').setAttributeNS(\n  'http://www.w3.org/XML/1998/namespace', 'xml:lang', 'cc');\n</script>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@aa.\n",
      "purpose" : "Scripted: Conflicting language inheritance (1)",
      "id" : "052",
      "type" : "html"
   },
   {
      "input" : "<!DOCTYPE html>\n<meta charset=\"utf-8\">\n<title>Test</title>\n<p lang=\"aa\" xml:lang=\"bb\"><span xmlns:ex=\"http://example.org/\" property=\"ex:test\" id=\"d\">Test</span></p>\n<script>\ndocument.getElementById('d').setAttributeNS(\n  'http://www.w3.org/XML/1998/namespace', 'xml:lang', 'cc');\n</script>\n",
      "expected" : "<> <http://example.org/test> \"Test\"@cc.\n",
      "purpose" : "Scripted: Conflicting language inheritance (2)",
      "id" : "053",
      "type" : "html"
   }
]
