feedtools 0.2.26 → 0.2.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. data/CHANGELOG +232 -216
  2. data/db/migration.rb +2 -0
  3. data/db/schema.mysql.sql +2 -0
  4. data/db/schema.postgresql.sql +3 -1
  5. data/db/schema.sqlite.sql +3 -1
  6. data/lib/feed_tools.rb +37 -14
  7. data/lib/feed_tools/database_feed_cache.rb +13 -2
  8. data/lib/feed_tools/feed.rb +430 -104
  9. data/lib/feed_tools/feed_item.rb +533 -268
  10. data/lib/feed_tools/helpers/generic_helper.rb +1 -1
  11. data/lib/feed_tools/helpers/html_helper.rb +78 -116
  12. data/lib/feed_tools/helpers/retrieval_helper.rb +33 -3
  13. data/lib/feed_tools/helpers/uri_helper.rb +46 -54
  14. data/lib/feed_tools/monkey_patch.rb +27 -1
  15. data/lib/feed_tools/vendor/html5/History.txt +10 -0
  16. data/lib/feed_tools/vendor/html5/Manifest.txt +117 -0
  17. data/lib/feed_tools/vendor/html5/README +45 -0
  18. data/lib/feed_tools/vendor/html5/Rakefile.rb +33 -0
  19. data/lib/feed_tools/vendor/html5/bin/html5 +217 -0
  20. data/lib/feed_tools/vendor/html5/lib/core_ext/string.rb +17 -0
  21. data/lib/feed_tools/vendor/html5/lib/html5.rb +13 -0
  22. data/lib/feed_tools/vendor/html5/lib/html5/constants.rb +1046 -0
  23. data/lib/feed_tools/vendor/html5/lib/html5/filters/base.rb +10 -0
  24. data/lib/feed_tools/vendor/html5/lib/html5/filters/inject_meta_charset.rb +82 -0
  25. data/lib/feed_tools/vendor/html5/lib/html5/filters/iso639codes.rb +752 -0
  26. data/lib/feed_tools/vendor/html5/lib/html5/filters/optionaltags.rb +198 -0
  27. data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc2046.rb +30 -0
  28. data/lib/feed_tools/vendor/html5/lib/html5/filters/rfc3987.rb +89 -0
  29. data/lib/feed_tools/vendor/html5/lib/html5/filters/sanitizer.rb +15 -0
  30. data/lib/feed_tools/vendor/html5/lib/html5/filters/validator.rb +830 -0
  31. data/lib/feed_tools/vendor/html5/lib/html5/filters/whitespace.rb +36 -0
  32. data/lib/feed_tools/vendor/html5/lib/html5/html5parser.rb +248 -0
  33. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_body_phase.rb +46 -0
  34. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_frameset_phase.rb +33 -0
  35. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/after_head_phase.rb +50 -0
  36. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/before_head_phase.rb +41 -0
  37. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_body_phase.rb +613 -0
  38. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_caption_phase.rb +69 -0
  39. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_cell_phase.rb +78 -0
  40. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_column_group_phase.rb +55 -0
  41. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_frameset_phase.rb +57 -0
  42. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_head_phase.rb +138 -0
  43. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_row_phase.rb +89 -0
  44. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_select_phase.rb +85 -0
  45. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_body_phase.rb +86 -0
  46. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/in_table_phase.rb +115 -0
  47. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/initial_phase.rb +133 -0
  48. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/phase.rb +154 -0
  49. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/root_element_phase.rb +41 -0
  50. data/lib/feed_tools/vendor/html5/lib/html5/html5parser/trailing_end_phase.rb +35 -0
  51. data/lib/feed_tools/vendor/html5/lib/html5/inputstream.rb +648 -0
  52. data/lib/feed_tools/vendor/html5/lib/html5/liberalxmlparser.rb +158 -0
  53. data/lib/feed_tools/vendor/html5/lib/html5/sanitizer.rb +188 -0
  54. data/lib/feed_tools/vendor/html5/lib/html5/serializer.rb +2 -0
  55. data/lib/feed_tools/vendor/html5/lib/html5/serializer/htmlserializer.rb +179 -0
  56. data/lib/feed_tools/vendor/html5/lib/html5/serializer/xhtmlserializer.rb +20 -0
  57. data/lib/feed_tools/vendor/html5/lib/html5/sniffer.rb +45 -0
  58. data/lib/feed_tools/vendor/html5/lib/html5/tokenizer.rb +966 -0
  59. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders.rb +24 -0
  60. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/base.rb +334 -0
  61. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/hpricot.rb +231 -0
  62. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/rexml.rb +209 -0
  63. data/lib/feed_tools/vendor/html5/lib/html5/treebuilders/simpletree.rb +185 -0
  64. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers.rb +26 -0
  65. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/base.rb +162 -0
  66. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/hpricot.rb +48 -0
  67. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/rexml.rb +48 -0
  68. data/lib/feed_tools/vendor/html5/lib/html5/treewalkers/simpletree.rb +48 -0
  69. data/lib/feed_tools/vendor/html5/lib/html5/version.rb +3 -0
  70. data/lib/feed_tools/vendor/html5/testdata/encoding/chardet/test_big5.txt +51 -0
  71. data/lib/feed_tools/vendor/html5/testdata/encoding/test-yahoo-jp.dat +10 -0
  72. data/lib/feed_tools/vendor/html5/testdata/encoding/tests1.dat +394 -0
  73. data/lib/feed_tools/vendor/html5/testdata/encoding/tests2.dat +81 -0
  74. data/lib/feed_tools/vendor/html5/testdata/sanitizer/tests1.dat +416 -0
  75. data/lib/feed_tools/vendor/html5/testdata/serializer/core.test +104 -0
  76. data/lib/feed_tools/vendor/html5/testdata/serializer/injectmeta.test +65 -0
  77. data/lib/feed_tools/vendor/html5/testdata/serializer/optionaltags.test +900 -0
  78. data/lib/feed_tools/vendor/html5/testdata/serializer/options.test +60 -0
  79. data/lib/feed_tools/vendor/html5/testdata/serializer/whitespace.test +51 -0
  80. data/lib/feed_tools/vendor/html5/testdata/sites/google-results.htm +1 -0
  81. data/lib/feed_tools/vendor/html5/testdata/sites/python-ref-import.htm +1 -0
  82. data/lib/feed_tools/vendor/html5/testdata/sites/web-apps-old.htm +1 -0
  83. data/lib/feed_tools/vendor/html5/testdata/sites/web-apps.htm +34275 -0
  84. data/lib/feed_tools/vendor/html5/testdata/sniffer/htmlOrFeed.json +43 -0
  85. data/lib/feed_tools/vendor/html5/testdata/tokenizer/contentModelFlags.test +48 -0
  86. data/lib/feed_tools/vendor/html5/testdata/tokenizer/entities.test +2339 -0
  87. data/lib/feed_tools/vendor/html5/testdata/tokenizer/escapeFlag.test +21 -0
  88. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test1.test +172 -0
  89. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test2.test +129 -0
  90. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test3.test +367 -0
  91. data/lib/feed_tools/vendor/html5/testdata/tokenizer/test4.test +198 -0
  92. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests1.dat +1950 -0
  93. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests2.dat +773 -0
  94. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests3.dat +270 -0
  95. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests4.dat +60 -0
  96. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests5.dat +175 -0
  97. data/lib/feed_tools/vendor/html5/testdata/tree-construction/tests6.dat +196 -0
  98. data/lib/feed_tools/vendor/html5/testdata/validator/attributes.test +1035 -0
  99. data/lib/feed_tools/vendor/html5/testdata/validator/base-href-attribute.test +787 -0
  100. data/lib/feed_tools/vendor/html5/testdata/validator/base-target-attribute.test +35 -0
  101. data/lib/feed_tools/vendor/html5/testdata/validator/blockquote-cite-attribute.test +7 -0
  102. data/lib/feed_tools/vendor/html5/testdata/validator/classattribute.test +152 -0
  103. data/lib/feed_tools/vendor/html5/testdata/validator/contenteditableattribute.test +59 -0
  104. data/lib/feed_tools/vendor/html5/testdata/validator/contextmenuattribute.test +115 -0
  105. data/lib/feed_tools/vendor/html5/testdata/validator/dirattribute.test +59 -0
  106. data/lib/feed_tools/vendor/html5/testdata/validator/draggableattribute.test +63 -0
  107. data/lib/feed_tools/vendor/html5/testdata/validator/html-xmlns-attribute.test +23 -0
  108. data/lib/feed_tools/vendor/html5/testdata/validator/idattribute.test +115 -0
  109. data/lib/feed_tools/vendor/html5/testdata/validator/inputattributes.test +2795 -0
  110. data/lib/feed_tools/vendor/html5/testdata/validator/irrelevantattribute.test +63 -0
  111. data/lib/feed_tools/vendor/html5/testdata/validator/langattribute.test +5579 -0
  112. data/lib/feed_tools/vendor/html5/testdata/validator/li-value-attribute.test +7 -0
  113. data/lib/feed_tools/vendor/html5/testdata/validator/link-href-attribute.test +7 -0
  114. data/lib/feed_tools/vendor/html5/testdata/validator/link-hreflang-attribute.test +7 -0
  115. data/lib/feed_tools/vendor/html5/testdata/validator/link-rel-attribute.test +271 -0
  116. data/lib/feed_tools/vendor/html5/testdata/validator/ol-start-attribute.test +7 -0
  117. data/lib/feed_tools/vendor/html5/testdata/validator/starttags.test +375 -0
  118. data/lib/feed_tools/vendor/html5/testdata/validator/style-scoped-attribute.test +7 -0
  119. data/lib/feed_tools/vendor/html5/testdata/validator/tabindexattribute.test +79 -0
  120. data/lib/feed_tools/vendor/html5/tests/preamble.rb +72 -0
  121. data/lib/feed_tools/vendor/html5/tests/test_encoding.rb +35 -0
  122. data/lib/feed_tools/vendor/html5/tests/test_lxp.rb +279 -0
  123. data/lib/feed_tools/vendor/html5/tests/test_parser.rb +68 -0
  124. data/lib/feed_tools/vendor/html5/tests/test_sanitizer.rb +142 -0
  125. data/lib/feed_tools/vendor/html5/tests/test_serializer.rb +68 -0
  126. data/lib/feed_tools/vendor/html5/tests/test_sniffer.rb +27 -0
  127. data/lib/feed_tools/vendor/html5/tests/test_stream.rb +62 -0
  128. data/lib/feed_tools/vendor/html5/tests/test_tokenizer.rb +94 -0
  129. data/lib/feed_tools/vendor/html5/tests/test_treewalkers.rb +135 -0
  130. data/lib/feed_tools/vendor/html5/tests/test_validator.rb +31 -0
  131. data/lib/feed_tools/vendor/html5/tests/tokenizer_test_parser.rb +63 -0
  132. data/lib/feed_tools/vendor/uri.rb +781 -0
  133. data/lib/feed_tools/version.rb +1 -1
  134. data/rakefile +27 -6
  135. data/test/unit/atom_test.rb +298 -210
  136. data/test/unit/helper_test.rb +7 -12
  137. data/test/unit/rdf_test.rb +51 -1
  138. data/test/unit/rss_test.rb +13 -3
  139. metadata +239 -116
  140. data/lib/feed_tools/vendor/htree.rb +0 -97
  141. data/lib/feed_tools/vendor/htree/container.rb +0 -10
  142. data/lib/feed_tools/vendor/htree/context.rb +0 -67
  143. data/lib/feed_tools/vendor/htree/display.rb +0 -27
  144. data/lib/feed_tools/vendor/htree/doc.rb +0 -149
  145. data/lib/feed_tools/vendor/htree/elem.rb +0 -262
  146. data/lib/feed_tools/vendor/htree/encoder.rb +0 -163
  147. data/lib/feed_tools/vendor/htree/equality.rb +0 -218
  148. data/lib/feed_tools/vendor/htree/extract_text.rb +0 -37
  149. data/lib/feed_tools/vendor/htree/fstr.rb +0 -33
  150. data/lib/feed_tools/vendor/htree/gencode.rb +0 -97
  151. data/lib/feed_tools/vendor/htree/htmlinfo.rb +0 -672
  152. data/lib/feed_tools/vendor/htree/inspect.rb +0 -108
  153. data/lib/feed_tools/vendor/htree/leaf.rb +0 -94
  154. data/lib/feed_tools/vendor/htree/loc.rb +0 -367
  155. data/lib/feed_tools/vendor/htree/modules.rb +0 -48
  156. data/lib/feed_tools/vendor/htree/name.rb +0 -124
  157. data/lib/feed_tools/vendor/htree/output.rb +0 -207
  158. data/lib/feed_tools/vendor/htree/parse.rb +0 -409
  159. data/lib/feed_tools/vendor/htree/raw_string.rb +0 -124
  160. data/lib/feed_tools/vendor/htree/regexp-util.rb +0 -15
  161. data/lib/feed_tools/vendor/htree/rexml.rb +0 -130
  162. data/lib/feed_tools/vendor/htree/scan.rb +0 -166
  163. data/lib/feed_tools/vendor/htree/tag.rb +0 -111
  164. data/lib/feed_tools/vendor/htree/template.rb +0 -909
  165. data/lib/feed_tools/vendor/htree/text.rb +0 -115
  166. data/lib/feed_tools/vendor/htree/traverse.rb +0 -465
@@ -0,0 +1,787 @@
1
+ {"tests": [
2
+
3
+ {"description": "base href contains invalid URI due to leading space",
4
+ "input": "<base href=' http://www.example.com/'",
5
+ "fail-unless": "invalid-uri-char"},
6
+
7
+ {"description": "base href contains invalid URI due to trailing space",
8
+ "input": "<base href='http://www.example.com/ '",
9
+ "fail-unless": "invalid-uri-char"},
10
+
11
+ {"description": "base href contains invalid URI due to space in scheme",
12
+ "input": "<base href='ht tp://www.example.com/'",
13
+ "fail-unless": "invalid-uri-char"},
14
+
15
+ {"description": "base href contains invalid URI due to space in domain",
16
+ "input": "<base href='http://www.example. com/'",
17
+ "fail-unless": "invalid-uri-char"},
18
+
19
+ {"description": "base href contains invalid URI due to space in path",
20
+ "input": "<base href='http://www.example.com/a b'",
21
+ "fail-unless": "invalid-uri-char"},
22
+
23
+ {"description": "base href contains invalid URI due to space in fragment",
24
+ "input": "<base href='http://www.example.com/a#b c'",
25
+ "fail-unless": "invalid-uri-char"},
26
+
27
+ {"description": "base href contains invalid URI due to space in query",
28
+ "input": "<base href='http://www.example.com/a?b c'",
29
+ "fail-unless": "invalid-uri-char"},
30
+
31
+ {"description": "base href contains invalid URI due to leading tab",
32
+ "input": "<base href='\thttp://www.example.com/'",
33
+ "fail-unless": "invalid-uri-char"},
34
+
35
+ {"description": "base href contains invalid URI due to trailing tab",
36
+ "input": "<base href='http://www.example.com/\t'",
37
+ "fail-unless": "invalid-uri-char"},
38
+
39
+ {"description": "base href contains invalid URI due to tab in scheme",
40
+ "input": "<base href='ht\ttp://www.example.com/'",
41
+ "fail-unless": "invalid-uri-char"},
42
+
43
+ {"description": "base href contains invalid URI due to tab in domain",
44
+ "input": "<base href='http://www.example.\tcom/'",
45
+ "fail-unless": "invalid-uri-char"},
46
+
47
+ {"description": "base href contains invalid URI due to tab in path",
48
+ "input": "<base href='http://www.example.com/a\tb'",
49
+ "fail-unless": "invalid-uri-char"},
50
+
51
+ {"description": "base href contains invalid URI due to tab in fragment",
52
+ "input": "<base href='http://www.example.com/a#b\tc'",
53
+ "fail-unless": "invalid-uri-char"},
54
+
55
+ {"description": "base href contains invalid URI due to tab in query",
56
+ "input": "<base href='http://www.example.com/a?b\tc'",
57
+ "fail-unless": "invalid-uri-char"},
58
+
59
+ {"description": "base href contains invalid URI due to leading LF",
60
+ "input": "<base href='\nhttp://www.example.com/'",
61
+ "fail-unless": "invalid-uri-char"},
62
+
63
+ {"description": "base href contains invalid URI due to LF in scheme",
64
+ "input": "<base href='ht\ntp://www.example.com/'",
65
+ "fail-unless": "invalid-uri-char"},
66
+
67
+ {"description": "base href contains invalid URI due to LF in domain",
68
+ "input": "<base href='http://www.example.\ncom/'",
69
+ "fail-unless": "invalid-uri-char"},
70
+
71
+ {"description": "base href contains invalid URI due to LF in path",
72
+ "input": "<base href='http://www.example.com/a\nb'",
73
+ "fail-unless": "invalid-uri-char"},
74
+
75
+ {"description": "base href contains invalid URI due to LF in fragment",
76
+ "input": "<base href='http://www.example.com/a#b\nc'",
77
+ "fail-unless": "invalid-uri-char"},
78
+
79
+ {"description": "base href contains invalid URI due to LF in query",
80
+ "input": "<base href='http://www.example.com/a?b\nc'",
81
+ "fail-unless": "invalid-uri-char"},
82
+
83
+ {"description": "base href contains invalid URI due to leading LT",
84
+ "input": "<base href='\u000Bhttp://www.example.com/'",
85
+ "fail-unless": "invalid-uri-char"},
86
+
87
+ {"description": "base href contains invalid URI due to trailing LT",
88
+ "input": "<base href='http://www.example.com/\u000B'",
89
+ "fail-unless": "invalid-uri-char"},
90
+
91
+ {"description": "base href contains invalid URI due to LT in scheme",
92
+ "input": "<base href='ht\u000Btp://www.example.com/'",
93
+ "fail-unless": "invalid-uri-char"},
94
+
95
+ {"description": "base href contains invalid URI due to LT in domain",
96
+ "input": "<base href='http://www.example.\u000Bcom/'",
97
+ "fail-unless": "invalid-uri-char"},
98
+
99
+ {"description": "base href contains invalid URI due to LT in path",
100
+ "input": "<base href='http://www.example.com/a\u000Bb'",
101
+ "fail-unless": "invalid-uri-char"},
102
+
103
+ {"description": "base href contains invalid URI due to LT in fragment",
104
+ "input": "<base href='http://www.example.com/a#b\u000Bc'",
105
+ "fail-unless": "invalid-uri-char"},
106
+
107
+ {"description": "base href contains invalid URI due to LT in query",
108
+ "input": "<base href='http://www.example.com/a?b\u000Bc'",
109
+ "fail-unless": "invalid-uri-char"},
110
+
111
+ {"description": "base href contains invalid URI due to leading FF",
112
+ "input": "<base href='\u000Chttp://www.example.com/'",
113
+ "fail-unless": "invalid-uri-char"},
114
+
115
+ {"description": "base href contains invalid URI due to trailing FF",
116
+ "input": "<base href='http://www.example.com/\u000C'",
117
+ "fail-unless": "invalid-uri-char"},
118
+
119
+ {"description": "base href contains invalid URI due to FF in scheme",
120
+ "input": "<base href='ht\u000Ctp://www.example.com/'",
121
+ "fail-unless": "invalid-uri-char"},
122
+
123
+ {"description": "base href contains invalid URI due to FF in domain",
124
+ "input": "<base href='http://www.example.\u000Ccom/'",
125
+ "fail-unless": "invalid-uri-char"},
126
+
127
+ {"description": "base href contains invalid URI due to FF in path",
128
+ "input": "<base href='http://www.example.com/a\u000Cb'",
129
+ "fail-unless": "invalid-uri-char"},
130
+
131
+ {"description": "base href contains invalid URI due to FF in fragment",
132
+ "input": "<base href='http://www.example.com/a#b\u000Cc'",
133
+ "fail-unless": "invalid-uri-char"},
134
+
135
+ {"description": "base href contains invalid URI due to FF in query",
136
+ "input": "<base href='http://www.example.com/a?b\u000Cc'",
137
+ "fail-unless": "invalid-uri-char"},
138
+
139
+ {"description": "base href contains invalid URI due to leading CR",
140
+ "input": "<base href='\rhttp://www.example.com/'",
141
+ "fail-unless": "invalid-uri-char"},
142
+
143
+ {"description": "base href contains invalid URI due to CR in scheme",
144
+ "input": "<base href='ht\rtp://www.example.com/'",
145
+ "fail-unless": "invalid-uri-char"},
146
+
147
+ {"description": "base href contains invalid URI due to CR in domain",
148
+ "input": "<base href='http://www.example.\rcom/'",
149
+ "fail-unless": "invalid-uri-char"},
150
+
151
+ {"description": "base href contains invalid URI due to CR in path",
152
+ "input": "<base href='http://www.example.com/a\rb'",
153
+ "fail-unless": "invalid-uri-char"},
154
+
155
+ {"description": "base href contains invalid URI due to CR in fragment",
156
+ "input": "<base href='http://www.example.com/a#b\rc'",
157
+ "fail-unless": "invalid-uri-char"},
158
+
159
+ {"description": "base href contains invalid URI due to CR in query",
160
+ "input": "<base href='http://www.example.com/a?b\rc'",
161
+ "fail-unless": "invalid-uri-char"},
162
+
163
+ {"description": "base href contains valid URI scheme 'ftp'",
164
+ "input": "<base href='ftp://foo'",
165
+ "fail-if": "invalid-scheme"},
166
+
167
+ {"description": "base href contains valid URI scheme 'http'",
168
+ "input": "<base href='http://foo'",
169
+ "fail-if": "invalid-scheme"},
170
+
171
+ {"description": "base href contains valid URI scheme 'gopher'",
172
+ "input": "<base href='gopher://foo'",
173
+ "fail-if": "invalid-scheme"},
174
+
175
+ {"description": "base href contains valid URI scheme 'mailto'",
176
+ "input": "<base href='mailto://foo'",
177
+ "fail-if": "invalid-scheme"},
178
+
179
+ {"description": "base href contains valid URI scheme 'news'",
180
+ "input": "<base href='news://foo'",
181
+ "fail-if": "invalid-scheme"},
182
+
183
+ {"description": "base href contains valid URI scheme 'nntp'",
184
+ "input": "<base href='nntp://foo'",
185
+ "fail-if": "invalid-scheme"},
186
+
187
+ {"description": "base href contains valid URI scheme 'telnet'",
188
+ "input": "<base href='telnet://foo'",
189
+ "fail-if": "invalid-scheme"},
190
+
191
+ {"description": "base href contains valid URI scheme 'wais'",
192
+ "input": "<base href='wais://foo'",
193
+ "fail-if": "invalid-scheme"},
194
+
195
+ {"description": "base href contains valid URI scheme 'file'",
196
+ "input": "<base href='file://foo'",
197
+ "fail-if": "invalid-scheme"},
198
+
199
+ {"description": "base href contains valid URI scheme 'prospero'",
200
+ "input": "<base href='prospero://foo'",
201
+ "fail-if": "invalid-scheme"},
202
+
203
+ {"description": "base href contains valid URI scheme 'z39.50s'",
204
+ "input": "<base href='z39.50s://foo'",
205
+ "fail-if": "invalid-scheme"},
206
+
207
+ {"description": "base href contains valid URI scheme 'z39.50r'",
208
+ "input": "<base href='z39.50r://foo'",
209
+ "fail-if": "invalid-scheme"},
210
+
211
+ {"description": "base href contains valid URI scheme 'cid'",
212
+ "input": "<base href='cid://foo'",
213
+ "fail-if": "invalid-scheme"},
214
+
215
+ {"description": "base href contains valid URI scheme 'mid'",
216
+ "input": "<base href='mid://foo'",
217
+ "fail-if": "invalid-scheme"},
218
+
219
+ {"description": "base href contains valid URI scheme 'vemmi'",
220
+ "input": "<base href='vemmi://foo'",
221
+ "fail-if": "invalid-scheme"},
222
+
223
+ {"description": "base href contains valid URI scheme 'service'",
224
+ "input": "<base href='service://foo'",
225
+ "fail-if": "invalid-scheme"},
226
+
227
+ {"description": "base href contains valid URI scheme 'imap'",
228
+ "input": "<base href='imap://foo'",
229
+ "fail-if": "invalid-scheme"},
230
+
231
+ {"description": "base href contains valid URI scheme 'nfs'",
232
+ "input": "<base href='nfs://foo'",
233
+ "fail-if": "invalid-scheme"},
234
+
235
+ {"description": "base href contains valid URI scheme 'acap'",
236
+ "input": "<base href='acap://foo'",
237
+ "fail-if": "invalid-scheme"},
238
+
239
+ {"description": "base href contains valid URI scheme 'rtsp'",
240
+ "input": "<base href='rtsp://foo'",
241
+ "fail-if": "invalid-scheme"},
242
+
243
+ {"description": "base href contains valid URI scheme 'tip'",
244
+ "input": "<base href='tip://foo'",
245
+ "fail-if": "invalid-scheme"},
246
+
247
+ {"description": "base href contains valid URI scheme 'pop'",
248
+ "input": "<base href='pop://foo'",
249
+ "fail-if": "invalid-scheme"},
250
+
251
+ {"description": "base href contains valid URI scheme 'data'",
252
+ "input": "<base href='data://foo'",
253
+ "fail-if": "invalid-scheme"},
254
+
255
+ {"description": "base href contains valid URI scheme 'dav'",
256
+ "input": "<base href='dav://foo'",
257
+ "fail-if": "invalid-scheme"},
258
+
259
+ {"description": "base href contains valid URI scheme 'opaquelocktoken'",
260
+ "input": "<base href='opaquelocktoken://foo'",
261
+ "fail-if": "invalid-scheme"},
262
+
263
+ {"description": "base href contains valid URI scheme 'sip'",
264
+ "input": "<base href='sip://foo'",
265
+ "fail-if": "invalid-scheme"},
266
+
267
+ {"description": "base href contains valid URI scheme 'sips'",
268
+ "input": "<base href='sips://foo'",
269
+ "fail-if": "invalid-scheme"},
270
+
271
+ {"description": "base href contains valid URI scheme 'tel'",
272
+ "input": "<base href='tel://foo'",
273
+ "fail-if": "invalid-scheme"},
274
+
275
+ {"description": "base href contains valid URI scheme 'fax'",
276
+ "input": "<base href='fax://foo'",
277
+ "fail-if": "invalid-scheme"},
278
+
279
+ {"description": "base href contains valid URI scheme 'modem'",
280
+ "input": "<base href='modem://foo'",
281
+ "fail-if": "invalid-scheme"},
282
+
283
+ {"description": "base href contains valid URI scheme 'ldap'",
284
+ "input": "<base href='ldap://foo'",
285
+ "fail-if": "invalid-scheme"},
286
+
287
+ {"description": "base href contains valid URI scheme 'https'",
288
+ "input": "<base href='https://foo'",
289
+ "fail-if": "invalid-scheme"},
290
+
291
+ {"description": "base href contains valid URI scheme 'soap.beep'",
292
+ "input": "<base href='soap.beep://foo'",
293
+ "fail-if": "invalid-scheme"},
294
+
295
+ {"description": "base href contains valid URI scheme 'soap.beeps'",
296
+ "input": "<base href='soap.beeps://foo'",
297
+ "fail-if": "invalid-scheme"},
298
+
299
+ {"description": "base href contains valid URI scheme 'xmlrpc.beep'",
300
+ "input": "<base href='xmlrpc.beep://foo'",
301
+ "fail-if": "invalid-scheme"},
302
+
303
+ {"description": "base href contains valid URI scheme 'xmlrpc.beeps'",
304
+ "input": "<base href='xmlrpc.beeps://foo'",
305
+ "fail-if": "invalid-scheme"},
306
+
307
+ {"description": "base href contains valid URI scheme 'urn'",
308
+ "input": "<base href='urn://foo'",
309
+ "fail-if": "invalid-scheme"},
310
+
311
+ {"description": "base href contains valid URI scheme 'go'",
312
+ "input": "<base href='go://foo'",
313
+ "fail-if": "invalid-scheme"},
314
+
315
+ {"description": "base href contains valid URI scheme 'h323'",
316
+ "input": "<base href='h323://foo'",
317
+ "fail-if": "invalid-scheme"},
318
+
319
+ {"description": "base href contains valid URI scheme 'ipp'",
320
+ "input": "<base href='ipp://foo'",
321
+ "fail-if": "invalid-scheme"},
322
+
323
+ {"description": "base href contains valid URI scheme 'tftp'",
324
+ "input": "<base href='tftp://foo'",
325
+ "fail-if": "invalid-scheme"},
326
+
327
+ {"description": "base href contains valid URI scheme 'mupdate'",
328
+ "input": "<base href='mupdate://foo'",
329
+ "fail-if": "invalid-scheme"},
330
+
331
+ {"description": "base href contains valid URI scheme 'pres'",
332
+ "input": "<base href='pres://foo'",
333
+ "fail-if": "invalid-scheme"},
334
+
335
+ {"description": "base href contains valid URI scheme 'im'",
336
+ "input": "<base href='im://foo'",
337
+ "fail-if": "invalid-scheme"},
338
+
339
+ {"description": "base href contains valid URI scheme 'mtqp'",
340
+ "input": "<base href='mtqp://foo'",
341
+ "fail-if": "invalid-scheme"},
342
+
343
+ {"description": "base href contains valid URI scheme 'iris.beep'",
344
+ "input": "<base href='iris.beep://foo'",
345
+ "fail-if": "invalid-scheme"},
346
+
347
+ {"description": "base href contains valid URI scheme 'dict'",
348
+ "input": "<base href='dict://foo'",
349
+ "fail-if": "invalid-scheme"},
350
+
351
+ {"description": "base href contains valid URI scheme 'snmp'",
352
+ "input": "<base href='snmp://foo'",
353
+ "fail-if": "invalid-scheme"},
354
+
355
+ {"description": "base href contains valid URI scheme 'crid'",
356
+ "input": "<base href='crid://foo'",
357
+ "fail-if": "invalid-scheme"},
358
+
359
+ {"description": "base href contains valid URI scheme 'tag'",
360
+ "input": "<base href='tag://foo'",
361
+ "fail-if": "invalid-scheme"},
362
+
363
+ {"description": "base href contains valid URI scheme 'dns'",
364
+ "input": "<base href='dns://foo'",
365
+ "fail-if": "invalid-scheme"},
366
+
367
+ {"description": "base href contains valid URI scheme 'info'",
368
+ "input": "<base href='info://foo'",
369
+ "fail-if": "invalid-scheme"},
370
+
371
+ {"description": "base href contains valid URI scheme 'javascript'",
372
+ "input": "<base href='javascript:foo'",
373
+ "fail-if": "invalid-scheme"},
374
+
375
+ {"description": "base href contains valid URI scheme 'FTP'",
376
+ "input": "<base href='FTP://foo'",
377
+ "fail-if": "invalid-scheme"},
378
+
379
+ {"description": "base href contains valid URI scheme 'HTTP'",
380
+ "input": "<base href='HTTP://foo'",
381
+ "fail-if": "invalid-scheme"},
382
+
383
+ {"description": "base href contains valid URI scheme 'GOPHER'",
384
+ "input": "<base href='GOPHER://foo'",
385
+ "fail-if": "invalid-scheme"},
386
+
387
+ {"description": "base href contains valid URI scheme 'MAILTO'",
388
+ "input": "<base href='MAILTO://foo'",
389
+ "fail-if": "invalid-scheme"},
390
+
391
+ {"description": "base href contains valid URI scheme 'NEWS'",
392
+ "input": "<base href='NEWS://foo'",
393
+ "fail-if": "invalid-scheme"},
394
+
395
+ {"description": "base href contains valid URI scheme 'NNTP'",
396
+ "input": "<base href='NNTP://foo'",
397
+ "fail-if": "invalid-scheme"},
398
+
399
+ {"description": "base href contains valid URI scheme 'TELNET'",
400
+ "input": "<base href='TELNET://foo'",
401
+ "fail-if": "invalid-scheme"},
402
+
403
+ {"description": "base href contains valid URI scheme 'WAIS'",
404
+ "input": "<base href='WAIS://foo'",
405
+ "fail-if": "invalid-scheme"},
406
+
407
+ {"description": "base href contains valid URI scheme 'FILE'",
408
+ "input": "<base href='FILE://foo'",
409
+ "fail-if": "invalid-scheme"},
410
+
411
+ {"description": "base href contains valid URI scheme 'PROSPERO'",
412
+ "input": "<base href='PROSPERO://foo'",
413
+ "fail-if": "invalid-scheme"},
414
+
415
+ {"description": "base href contains valid URI scheme 'Z39.50S'",
416
+ "input": "<base href='Z39.50S://foo'",
417
+ "fail-if": "invalid-scheme"},
418
+
419
+ {"description": "base href contains valid URI scheme 'Z39.50R'",
420
+ "input": "<base href='Z39.50R://foo'",
421
+ "fail-if": "invalid-scheme"},
422
+
423
+ {"description": "base href contains valid URI scheme 'CID'",
424
+ "input": "<base href='CID://foo'",
425
+ "fail-if": "invalid-scheme"},
426
+
427
+ {"description": "base href contains valid URI scheme 'MID'",
428
+ "input": "<base href='MID://foo'",
429
+ "fail-if": "invalid-scheme"},
430
+
431
+ {"description": "base href contains valid URI scheme 'VEMMI'",
432
+ "input": "<base href='VEMMI://foo'",
433
+ "fail-if": "invalid-scheme"},
434
+
435
+ {"description": "base href contains valid URI scheme 'SERVICE'",
436
+ "input": "<base href='SERVICE://foo'",
437
+ "fail-if": "invalid-scheme"},
438
+
439
+ {"description": "base href contains valid URI scheme 'IMAP'",
440
+ "input": "<base href='IMAP://foo'",
441
+ "fail-if": "invalid-scheme"},
442
+
443
+ {"description": "base href contains valid URI scheme 'NFS'",
444
+ "input": "<base href='NFS://foo'",
445
+ "fail-if": "invalid-scheme"},
446
+
447
+ {"description": "base href contains valid URI scheme 'ACAP'",
448
+ "input": "<base href='ACAP://foo'",
449
+ "fail-if": "invalid-scheme"},
450
+
451
+ {"description": "base href contains valid URI scheme 'RTSP'",
452
+ "input": "<base href='RTSP://foo'",
453
+ "fail-if": "invalid-scheme"},
454
+
455
+ {"description": "base href contains valid URI scheme 'TIP'",
456
+ "input": "<base href='TIP://foo'",
457
+ "fail-if": "invalid-scheme"},
458
+
459
+ {"description": "base href contains valid URI scheme 'POP'",
460
+ "input": "<base href='POP://foo'",
461
+ "fail-if": "invalid-scheme"},
462
+
463
+ {"description": "base href contains valid URI scheme 'DATA'",
464
+ "input": "<base href='DATA://foo'",
465
+ "fail-if": "invalid-scheme"},
466
+
467
+ {"description": "base href contains valid URI scheme 'DAV'",
468
+ "input": "<base href='DAV://foo'",
469
+ "fail-if": "invalid-scheme"},
470
+
471
+ {"description": "base href contains valid URI scheme 'OPAQUELOCKTOKEN'",
472
+ "input": "<base href='OPAQUELOCKTOKEN://foo'",
473
+ "fail-if": "invalid-scheme"},
474
+
475
+ {"description": "base href contains valid URI scheme 'SIP'",
476
+ "input": "<base href='SIP://foo'",
477
+ "fail-if": "invalid-scheme"},
478
+
479
+ {"description": "base href contains valid URI scheme 'SIPS'",
480
+ "input": "<base href='SIPS://foo'",
481
+ "fail-if": "invalid-scheme"},
482
+
483
+ {"description": "base href contains valid URI scheme 'TEL'",
484
+ "input": "<base href='TEL://foo'",
485
+ "fail-if": "invalid-scheme"},
486
+
487
+ {"description": "base href contains valid URI scheme 'FAX'",
488
+ "input": "<base href='FAX://foo'",
489
+ "fail-if": "invalid-scheme"},
490
+
491
+ {"description": "base href contains valid URI scheme 'MODEM'",
492
+ "input": "<base href='MODEM://foo'",
493
+ "fail-if": "invalid-scheme"},
494
+
495
+ {"description": "base href contains valid URI scheme 'LDAP'",
496
+ "input": "<base href='LDAP://foo'",
497
+ "fail-if": "invalid-scheme"},
498
+
499
+ {"description": "base href contains valid URI scheme 'HTTPS'",
500
+ "input": "<base href='HTTPS://foo'",
501
+ "fail-if": "invalid-scheme"},
502
+
503
+ {"description": "base href contains valid URI scheme 'SOAP.BEEP'",
504
+ "input": "<base href='SOAP.BEEP://foo'",
505
+ "fail-if": "invalid-scheme"},
506
+
507
+ {"description": "base href contains valid URI scheme 'SOAP.BEEPS'",
508
+ "input": "<base href='SOAP.BEEPS://foo'",
509
+ "fail-if": "invalid-scheme"},
510
+
511
+ {"description": "base href contains valid URI scheme 'XMLRPC.BEEP'",
512
+ "input": "<base href='XMLRPC.BEEP://foo'",
513
+ "fail-if": "invalid-scheme"},
514
+
515
+ {"description": "base href contains valid URI scheme 'XMLRPC.BEEPS'",
516
+ "input": "<base href='XMLRPC.BEEPS://foo'",
517
+ "fail-if": "invalid-scheme"},
518
+
519
+ {"description": "base href contains valid URI scheme 'URN'",
520
+ "input": "<base href='URN://foo'",
521
+ "fail-if": "invalid-scheme"},
522
+
523
+ {"description": "base href contains valid URI scheme 'GO'",
524
+ "input": "<base href='GO://foo'",
525
+ "fail-if": "invalid-scheme"},
526
+
527
+ {"description": "base href contains valid URI scheme 'H323'",
528
+ "input": "<base href='H323://foo'",
529
+ "fail-if": "invalid-scheme"},
530
+
531
+ {"description": "base href contains valid URI scheme 'IPP'",
532
+ "input": "<base href='IPP://foo'",
533
+ "fail-if": "invalid-scheme"},
534
+
535
+ {"description": "base href contains valid URI scheme 'TFTP'",
536
+ "input": "<base href='TFTP://foo'",
537
+ "fail-if": "invalid-scheme"},
538
+
539
+ {"description": "base href contains valid URI scheme 'MUPDATE'",
540
+ "input": "<base href='MUPDATE://foo'",
541
+ "fail-if": "invalid-scheme"},
542
+
543
+ {"description": "base href contains valid URI scheme 'PRES'",
544
+ "input": "<base href='PRES://foo'",
545
+ "fail-if": "invalid-scheme"},
546
+
547
+ {"description": "base href contains valid URI scheme 'IM'",
548
+ "input": "<base href='IM://foo'",
549
+ "fail-if": "invalid-scheme"},
550
+
551
+ {"description": "base href contains valid URI scheme 'MTQP'",
552
+ "input": "<base href='MTQP://foo'",
553
+ "fail-if": "invalid-scheme"},
554
+
555
+ {"description": "base href contains valid URI scheme 'IRIS.BEEP'",
556
+ "input": "<base href='IRIS.BEEP://foo'",
557
+ "fail-if": "invalid-scheme"},
558
+
559
+ {"description": "base href contains valid URI scheme 'DICT'",
560
+ "input": "<base href='DICT://foo'",
561
+ "fail-if": "invalid-scheme"},
562
+
563
+ {"description": "base href contains valid URI scheme 'SNMP'",
564
+ "input": "<base href='SNMP://foo'",
565
+ "fail-if": "invalid-scheme"},
566
+
567
+ {"description": "base href contains valid URI scheme 'CRID'",
568
+ "input": "<base href='CRID://foo'",
569
+ "fail-if": "invalid-scheme"},
570
+
571
+ {"description": "base href contains valid URI scheme 'TAG'",
572
+ "input": "<base href='TAG://foo'",
573
+ "fail-if": "invalid-scheme"},
574
+
575
+ {"description": "base href contains valid URI scheme 'DNS'",
576
+ "input": "<base href='DNS://foo'",
577
+ "fail-if": "invalid-scheme"},
578
+
579
+ {"description": "base href contains valid URI scheme 'INFO'",
580
+ "input": "<base href='INFO://foo'",
581
+ "fail-if": "invalid-scheme"},
582
+
583
+ {"description": "base href contains valid URI scheme 'JAVASCRIPT'",
584
+ "input": "<base href='JAVASCRIPT:foo'",
585
+ "fail-if": "invalid-scheme"},
586
+
587
+ {"description": "base href contains valid URI scheme 'foo'",
588
+ "input": "<base href='foo:bar'",
589
+ "fail-unless": "invalid-scheme"},
590
+
591
+ {"description": "base href contains valid URI 'g'",
592
+ "input": "<base href='g'",
593
+ "fail-if": "invalid-attribute-value"},
594
+
595
+ {"description": "base href contains valid URI './g'",
596
+ "input": "<base href='./g'",
597
+ "fail-if": "invalid-attribute-value"},
598
+
599
+ {"description": "base href contains valid URI 'g/'",
600
+ "input": "<base href='g/'",
601
+ "fail-if": "invalid-attribute-value"},
602
+
603
+ {"description": "base href contains valid URI '/g'",
604
+ "input": "<base href='/g'",
605
+ "fail-if": "invalid-attribute-value"},
606
+
607
+ {"description": "base href contains valid URI '//g'",
608
+ "input": "<base href='//g'",
609
+ "fail-if": "invalid-attribute-value"},
610
+
611
+ {"description": "base href contains valid URI '?y'",
612
+ "input": "<base href='?y'",
613
+ "fail-if": "invalid-attribute-value"},
614
+
615
+ {"description": "base href contains valid URI 'g?y'",
616
+ "input": "<base href='g?y'",
617
+ "fail-if": "invalid-attribute-value"},
618
+
619
+ {"description": "base href contains valid URI '#s'",
620
+ "input": "<base href='#s'",
621
+ "fail-if": "invalid-attribute-value"},
622
+
623
+ {"description": "base href contains valid URI 'g#s'",
624
+ "input": "<base href='g#s'",
625
+ "fail-if": "invalid-attribute-value"},
626
+
627
+ {"description": "base href contains valid URI 'g?y#s'",
628
+ "input": "<base href='g?y#s'",
629
+ "fail-if": "invalid-attribute-value"},
630
+
631
+ {"description": "base href contains valid URI ';x'",
632
+ "input": "<base href=';x'",
633
+ "fail-if": "invalid-attribute-value"},
634
+
635
+ {"description": "base href contains valid URI 'g;x'",
636
+ "input": "<base href='g;x'",
637
+ "fail-if": "invalid-attribute-value"},
638
+
639
+ {"description": "base href contains valid URI 'g;x?y#s'",
640
+ "input": "<base href='g;x?y#s'",
641
+ "fail-if": "invalid-attribute-value"},
642
+
643
+ {"description": "base href contains valid URI '.'",
644
+ "input": "<base href='.'",
645
+ "fail-if": "invalid-attribute-value"},
646
+
647
+ {"description": "base href contains valid URI './'",
648
+ "input": "<base href='./'",
649
+ "fail-if": "invalid-attribute-value"},
650
+
651
+ {"description": "base href contains valid URI '..'",
652
+ "input": "<base href='..'",
653
+ "fail-if": "invalid-attribute-value"},
654
+
655
+ {"description": "base href contains valid URI '../'",
656
+ "input": "<base href='../'",
657
+ "fail-if": "invalid-attribute-value"},
658
+
659
+ {"description": "base href contains valid URI '../g'",
660
+ "input": "<base href='../g'",
661
+ "fail-if": "invalid-attribute-value"},
662
+
663
+ {"description": "base href contains valid URI '../..'",
664
+ "input": "<base href='../..'",
665
+ "fail-if": "invalid-attribute-value"},
666
+
667
+ {"description": "base href contains valid URI '../../'",
668
+ "input": "<base href='../../'",
669
+ "fail-if": "invalid-attribute-value"},
670
+
671
+ {"description": "base href contains valid URI '../../g'",
672
+ "input": "<base href='../../g'",
673
+ "fail-if": "invalid-attribute-value"},
674
+
675
+ {"description": "base href contains valid URI '../../../g'",
676
+ "input": "<base href='../../../g'",
677
+ "fail-if": "invalid-attribute-value"},
678
+
679
+ {"description": "base href contains valid URI '../../../../g'",
680
+ "input": "<base href='../../../../g'",
681
+ "fail-if": "invalid-attribute-value"},
682
+
683
+ {"description": "base href contains valid URI '/./g'",
684
+ "input": "<base href='/./g'",
685
+ "fail-if": "invalid-attribute-value"},
686
+
687
+ {"description": "base href contains valid URI '/../g'",
688
+ "input": "<base href='/../g'",
689
+ "fail-if": "invalid-attribute-value"},
690
+
691
+ {"description": "base href contains valid URI 'g.'",
692
+ "input": "<base href='g.'",
693
+ "fail-if": "invalid-attribute-value"},
694
+
695
+ {"description": "base href contains valid URI '.g'",
696
+ "input": "<base href='.g'",
697
+ "fail-if": "invalid-attribute-value"},
698
+
699
+ {"description": "base href contains valid URI 'g..'",
700
+ "input": "<base href='g..'",
701
+ "fail-if": "invalid-attribute-value"},
702
+
703
+ {"description": "base href contains valid URI '..g'",
704
+ "input": "<base href='..g'",
705
+ "fail-if": "invalid-attribute-value"},
706
+
707
+ {"description": "base href contains valid URI './../g'",
708
+ "input": "<base href='./../g'",
709
+ "fail-if": "invalid-attribute-value"},
710
+
711
+ {"description": "base href contains valid URI './g/.'",
712
+ "input": "<base href='./g/.'",
713
+ "fail-if": "invalid-attribute-value"},
714
+
715
+ {"description": "base href contains valid URI 'g/./h'",
716
+ "input": "<base href='g/./h'",
717
+ "fail-if": "invalid-attribute-value"},
718
+
719
+ {"description": "base href contains valid URI 'g/../h'",
720
+ "input": "<base href='g/../h'",
721
+ "fail-if": "invalid-attribute-value"},
722
+
723
+ {"description": "base href contains valid URI 'g;x=1/./y'",
724
+ "input": "<base href='g;x=1/./y'",
725
+ "fail-if": "invalid-attribute-value"},
726
+
727
+ {"description": "base href contains valid URI 'g;x=1/../y'",
728
+ "input": "<base href='g;x=1/../y'",
729
+ "fail-if": "invalid-attribute-value"},
730
+
731
+ {"description": "base href contains valid URI 'g?y/./x'",
732
+ "input": "<base href='g?y/./x'",
733
+ "fail-if": "invalid-attribute-value"},
734
+
735
+ {"description": "base href contains valid URI 'g?y/../x'",
736
+ "input": "<base href='g?y/../x'",
737
+ "fail-if": "invalid-attribute-value"},
738
+
739
+ {"description": "base href contains valid URI 'g#s/./x'",
740
+ "input": "<base href='g#s/./x'",
741
+ "fail-if": "invalid-attribute-value"},
742
+
743
+ {"description": "base href contains valid URI 'g#s/../x'",
744
+ "input": "<base href='g#s/../x'",
745
+ "fail-if": "invalid-attribute-value"},
746
+
747
+ {"description": "base href contains valid URI './g:h'",
748
+ "input": "<base href='./g:h'",
749
+ "fail-if": "invalid-attribute-value"},
750
+
751
+ {"description": "base href contains valid URI 'http://www.w%33.org'",
752
+ "input": "<base href='http://www.w%33.org'",
753
+ "fail-if": "invalid-attribute-value"},
754
+
755
+ {"description": "base href contains valid URI 'http://r%C3%A4ksm%C3%B6rg%C3%A5s.josefsson.org'",
756
+ "input": "<base href='http://r%C3%A4ksm%C3%B6rg%C3%A5s.josefsson.org'",
757
+ "fail-if": "invalid-attribute-value"},
758
+
759
+ {"description": "base href contains valid URI 'http://xn--rksmrgs-5wao1o.josefsson.org'",
760
+ "input": "<base href='http://xn--rksmrgs-5wao1o.josefsson.org'",
761
+ "fail-if": "invalid-attribute-value"},
762
+
763
+ {"description": "base href contains valid URI 'http://%E7%B4%8D%E8%B1%86.w3.mag.keio.ac.jp'",
764
+ "input": "<base href='http://%E7%B4%8D%E8%B1%86.w3.mag.keio.ac.jp'",
765
+ "fail-if": "invalid-attribute-value"},
766
+
767
+ {"description": "base href contains valid URI 'http://xn--99zt52a.w3.mag.keio.ac.jp'",
768
+ "input": "<base href='http://xn--99zt52a.w3.mag.keio.ac.jp'",
769
+ "fail-if": "invalid-attribute-value"},
770
+
771
+ {"description": "base href contains valid URI 'http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'",
772
+ "input": "<base href='http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'",
773
+ "fail-if": "invalid-attribute-value"},
774
+
775
+ {"description": "base href contains valid URI 'http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'",
776
+ "input": "<base href='http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'",
777
+ "fail-if": "invalid-attribute-value"},
778
+
779
+ {"description": "base href contains valid URI 'http://%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'",
780
+ "input": "<base href='http://%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/'",
781
+ "fail-if": "invalid-attribute-value"},
782
+
783
+ {"description": "base href contains valid URI 'http://xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'",
784
+ "input": "<base href='http://xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lra.w3.mag.keio.ac.jp/'",
785
+ "fail-if": "invalid-attribute-value"}
786
+
787
+ ]}