nokogiri 1.5.0.beta.4 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (107) hide show
  1. data/.gemtest +0 -0
  2. data/CHANGELOG.ja.rdoc +34 -0
  3. data/CHANGELOG.rdoc +40 -1
  4. data/Manifest.txt +11 -2
  5. data/README.rdoc +1 -1
  6. data/Rakefile +100 -104
  7. data/bin/nokogiri +1 -2
  8. data/ext/nokogiri/nokogiri.c +24 -1
  9. data/ext/nokogiri/xml_io.c +32 -7
  10. data/ext/nokogiri/xml_node.c +14 -13
  11. data/ext/nokogiri/xml_sax_parser.c +9 -4
  12. data/ext/nokogiri/xslt_stylesheet.c +7 -1
  13. data/lib/nokogiri.rb +3 -22
  14. data/lib/nokogiri/css.rb +4 -0
  15. data/lib/nokogiri/html/document.rb +10 -14
  16. data/lib/nokogiri/version.rb +76 -23
  17. data/lib/nokogiri/xml/builder.rb +7 -0
  18. data/lib/nokogiri/xml/document.rb +17 -1
  19. data/lib/nokogiri/xml/document_fragment.rb +14 -0
  20. data/lib/nokogiri/xml/node.rb +36 -28
  21. data/lib/nokogiri/xml/node/save_options.rb +17 -1
  22. data/lib/nokogiri/xml/node_set.rb +7 -0
  23. data/lib/nokogiri/xml/parse_options.rb +8 -0
  24. data/lib/nokogiri/xml/reader.rb +6 -6
  25. data/lib/nokogiri/xml/schema.rb +7 -1
  26. data/nokogiri_help_responses.md +40 -0
  27. data/tasks/cross_compile.rb +134 -159
  28. data/tasks/nokogiri.org.rb +18 -0
  29. data/tasks/test.rb +1 -1
  30. data/test/files/encoding.html +82 -0
  31. data/test/files/encoding.xhtml +84 -0
  32. data/test/files/metacharset.html +10 -0
  33. data/test/files/noencoding.html +47 -0
  34. data/test/helper.rb +2 -0
  35. data/test/html/test_document.rb +15 -0
  36. data/test/html/test_document_encoding.rb +13 -0
  37. data/test/test_memory_leak.rb +20 -0
  38. data/test/test_reader.rb +22 -0
  39. data/test/test_xslt_transforms.rb +6 -2
  40. data/test/xml/node/test_save_options.rb +10 -2
  41. data/test/xml/test_builder.rb +17 -0
  42. data/test/xml/test_document.rb +22 -0
  43. data/test/xml/test_node.rb +19 -1
  44. data/test/xml/test_node_reparenting.rb +16 -3
  45. data/test/xml/test_node_set.rb +34 -0
  46. data/test/xml/test_schema.rb +5 -0
  47. data/test/xslt/test_exception_handling.rb +37 -0
  48. metadata +185 -157
  49. data/deps.rip +0 -5
  50. data/ext/java/nokogiri/EncodingHandler.java +0 -124
  51. data/ext/java/nokogiri/HtmlDocument.java +0 -149
  52. data/ext/java/nokogiri/HtmlElementDescription.java +0 -145
  53. data/ext/java/nokogiri/HtmlEntityLookup.java +0 -79
  54. data/ext/java/nokogiri/HtmlSaxParserContext.java +0 -259
  55. data/ext/java/nokogiri/NokogiriService.java +0 -535
  56. data/ext/java/nokogiri/XmlAttr.java +0 -191
  57. data/ext/java/nokogiri/XmlAttributeDecl.java +0 -130
  58. data/ext/java/nokogiri/XmlCdata.java +0 -91
  59. data/ext/java/nokogiri/XmlComment.java +0 -86
  60. data/ext/java/nokogiri/XmlDocument.java +0 -529
  61. data/ext/java/nokogiri/XmlDocumentFragment.java +0 -217
  62. data/ext/java/nokogiri/XmlDtd.java +0 -467
  63. data/ext/java/nokogiri/XmlElement.java +0 -222
  64. data/ext/java/nokogiri/XmlElementContent.java +0 -382
  65. data/ext/java/nokogiri/XmlElementDecl.java +0 -148
  66. data/ext/java/nokogiri/XmlEntityDecl.java +0 -162
  67. data/ext/java/nokogiri/XmlEntityReference.java +0 -75
  68. data/ext/java/nokogiri/XmlNamespace.java +0 -128
  69. data/ext/java/nokogiri/XmlNode.java +0 -1399
  70. data/ext/java/nokogiri/XmlNodeSet.java +0 -311
  71. data/ext/java/nokogiri/XmlProcessingInstruction.java +0 -103
  72. data/ext/java/nokogiri/XmlReader.java +0 -411
  73. data/ext/java/nokogiri/XmlRelaxng.java +0 -144
  74. data/ext/java/nokogiri/XmlSaxParserContext.java +0 -367
  75. data/ext/java/nokogiri/XmlSaxPushParser.java +0 -184
  76. data/ext/java/nokogiri/XmlSchema.java +0 -319
  77. data/ext/java/nokogiri/XmlSyntaxError.java +0 -119
  78. data/ext/java/nokogiri/XmlText.java +0 -136
  79. data/ext/java/nokogiri/XmlXpathContext.java +0 -179
  80. data/ext/java/nokogiri/XsltStylesheet.java +0 -183
  81. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +0 -206
  82. data/ext/java/nokogiri/internals/NokogiriDocumentCache.java +0 -73
  83. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +0 -86
  84. data/ext/java/nokogiri/internals/NokogiriHandler.java +0 -327
  85. data/ext/java/nokogiri/internals/NokogiriHelpers.java +0 -582
  86. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +0 -171
  87. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +0 -118
  88. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +0 -74
  89. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +0 -121
  90. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +0 -79
  91. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +0 -126
  92. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +0 -56
  93. data/ext/java/nokogiri/internals/ParserContext.java +0 -278
  94. data/ext/java/nokogiri/internals/PushInputStream.java +0 -411
  95. data/ext/java/nokogiri/internals/ReaderNode.java +0 -474
  96. data/ext/java/nokogiri/internals/SaveContext.java +0 -288
  97. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +0 -76
  98. data/ext/java/nokogiri/internals/XmlDeclHandler.java +0 -42
  99. data/ext/java/nokogiri/internals/XmlDomParser.java +0 -77
  100. data/ext/java/nokogiri/internals/XmlDomParserContext.java +0 -238
  101. data/ext/java/nokogiri/internals/XmlSaxParser.java +0 -65
  102. data/ext/java/nokogiri/internals/XsltExtensionFunction.java +0 -72
  103. data/lib/isorelax.jar +0 -0
  104. data/lib/jing.jar +0 -0
  105. data/lib/nekodtd.jar +0 -0
  106. data/lib/nekohtml.jar +0 -0
  107. data/lib/xercesImpl.jar +0 -0
@@ -1,171 +0,0 @@
1
- /**
2
- * (The MIT License)
3
- *
4
- * Copyright (c) 2008 - 2011:
5
- *
6
- * * {Aaron Patterson}[http://tenderlovemaking.com]
7
- * * {Mike Dalessio}[http://mike.daless.io]
8
- * * {Charles Nutter}[http://blog.headius.com]
9
- * * {Sergio Arbeo}[http://www.serabe.com]
10
- * * {Patrick Mahoney}[http://polycrystal.org]
11
- * * {Yoko Harada}[http://yokolet.blogspot.com]
12
- *
13
- * Permission is hereby granted, free of charge, to any person obtaining
14
- * a copy of this software and associated documentation files (the
15
- * 'Software'), to deal in the Software without restriction, including
16
- * without limitation the rights to use, copy, modify, merge, publish,
17
- * distribute, sublicense, and/or sell copies of the Software, and to
18
- * permit persons to whom the Software is furnished to do so, subject to
19
- * the following conditions:
20
- *
21
- * The above copyright notice and this permission notice shall be
22
- * included in all copies or substantial portions of the Software.
23
- *
24
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
33
- package nokogiri.internals;
34
-
35
- import static nokogiri.internals.NokogiriHelpers.getNokogiriClass;
36
- import static nokogiri.internals.NokogiriHelpers.isNamespace;
37
-
38
- import java.util.ArrayList;
39
- import java.util.LinkedHashMap;
40
- import java.util.List;
41
- import java.util.Map;
42
-
43
- import nokogiri.NokogiriService;
44
- import nokogiri.XmlDocument;
45
- import nokogiri.XmlNamespace;
46
-
47
- import org.jruby.Ruby;
48
- import org.w3c.dom.Attr;
49
- import org.w3c.dom.NamedNodeMap;
50
- import org.w3c.dom.Node;
51
-
52
- /**
53
- * Cache of namespages of each node. XmlDocument has one cache of this class.
54
- *
55
- * @author sergio
56
- * @author Yoko Harada <yokolet@gmail.com>
57
- */
58
- public class NokogiriNamespaceCache {
59
-
60
- private List<Long> keys; // order matters.
61
- private Map<Integer, CacheEntry> cache; // pair of the index of a given key and entry
62
- private XmlNamespace defaultNamespace = null;
63
-
64
- public NokogiriNamespaceCache() {
65
- keys = new ArrayList<Long>();
66
- cache = new LinkedHashMap<Integer, CacheEntry>();
67
- }
68
-
69
- private Long hashCode(String prefix, String href) {
70
- long prefix_hash = prefix.hashCode();
71
- long href_hash = href.hashCode();
72
- return prefix_hash << 31 | href_hash;
73
- }
74
-
75
- public XmlNamespace get(String prefix, String href) {
76
- // prefix should not be null.
77
- // In case of a default namespace, an empty string should be given to prefix argument.
78
- if (prefix == null || href == null) return null;
79
- Long hash = hashCode(prefix, href);
80
- Integer index = keys.indexOf(hash);
81
- if (index != -1) return cache.get(index).namespace;
82
- return null;
83
- }
84
-
85
- public XmlNamespace getDefault() {
86
- return defaultNamespace;
87
- }
88
-
89
- public XmlNamespace get(String prefix) {
90
- if (prefix == null) return defaultNamespace;
91
- long h = prefix.hashCode();
92
- Long hash = h << 31;
93
- Long mask = 0xFF00L;
94
- for (int i=0; i < keys.size(); i++) {
95
- if ((keys.get(i) & mask) == hash) {
96
- return cache.get(i).namespace;
97
- }
98
- }
99
- return null;
100
- }
101
-
102
- public List<XmlNamespace> get(Node node) {
103
- List<XmlNamespace> namespaces = new ArrayList<XmlNamespace>();
104
- for (int i=0; i < keys.size(); i++) {
105
- CacheEntry entry = cache.get(i);
106
- if (entry.node == node) {
107
- namespaces.add(entry.namespace);
108
- }
109
- }
110
- return namespaces;
111
- }
112
-
113
- public XmlNamespace put(Ruby ruby, String prefix, String href, Node node, XmlDocument document) {
114
- // prefix should not be null.
115
- // In case of a default namespace, an empty string should be given to prefix argument.
116
- if (prefix == null || href == null) return null;
117
- Long hash = hashCode(prefix, href);
118
- Integer index;
119
- if ((index = keys.indexOf(hash)) != -1) {
120
- return cache.get(index).namespace;
121
- } else {
122
- keys.add(hash);
123
- index = keys.size() - 1;
124
- String actualPrefix = (prefix.equals("")) ? null : prefix;
125
- XmlNamespace namespace = (XmlNamespace) NokogiriService.XML_NAMESPACE_ALLOCATOR.allocate(ruby, getNokogiriClass(ruby, "Nokogiri::XML::Namespace"));
126
- namespace.setDefinition(ruby, actualPrefix, href);
127
- namespace.setDocument(document);
128
- CacheEntry entry = new CacheEntry(namespace, node);
129
- cache.put(index, entry);
130
- if ("".equals(prefix)) defaultNamespace = namespace;
131
- return namespace;
132
- }
133
- }
134
-
135
- public void remove(String prefix, String href) {
136
- if (prefix == null || href == null) return;
137
- Long hash = hashCode(prefix, href);
138
- Integer index = keys.indexOf(hash);
139
- if (index != -1) {
140
- cache.remove(index);
141
- }
142
- keys.remove(index);
143
- }
144
-
145
- public void clear() {
146
- // removes namespace declarations from node
147
- for (int i=0; i < keys.size(); i++) {
148
- CacheEntry entry = cache.get(i);
149
- NamedNodeMap attributes = entry.node.getAttributes();
150
- for (int j=0; j<attributes.getLength(); j++) {
151
- String name = ((Attr)attributes.item(j)).getName();
152
- if (isNamespace(name)) {
153
- attributes.removeNamedItem(name);
154
- }
155
- }
156
- }
157
- keys.clear();
158
- cache.clear();
159
- defaultNamespace = null;
160
- }
161
-
162
- private class CacheEntry {
163
- private XmlNamespace namespace;
164
- private Node node;
165
-
166
- CacheEntry(XmlNamespace namespace, Node node) {
167
- this.namespace = namespace;
168
- this.node = node;
169
- }
170
- }
171
- }
@@ -1,118 +0,0 @@
1
- /**
2
- * (The MIT License)
3
- *
4
- * Copyright (c) 2008 - 2011:
5
- *
6
- * * {Aaron Patterson}[http://tenderlovemaking.com]
7
- * * {Mike Dalessio}[http://mike.daless.io]
8
- * * {Charles Nutter}[http://blog.headius.com]
9
- * * {Sergio Arbeo}[http://www.serabe.com]
10
- * * {Patrick Mahoney}[http://polycrystal.org]
11
- * * {Yoko Harada}[http://yokolet.blogspot.com]
12
- *
13
- * Permission is hereby granted, free of charge, to any person obtaining
14
- * a copy of this software and associated documentation files (the
15
- * 'Software'), to deal in the Software without restriction, including
16
- * without limitation the rights to use, copy, modify, merge, publish,
17
- * distribute, sublicense, and/or sell copies of the Software, and to
18
- * permit persons to whom the Software is furnished to do so, subject to
19
- * the following conditions:
20
- *
21
- * The above copyright notice and this permission notice shall be
22
- * included in all copies or substantial portions of the Software.
23
- *
24
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
33
- package nokogiri.internals;
34
-
35
- import java.util.ArrayList;
36
- import java.util.Hashtable;
37
- import java.util.Iterator;
38
- import java.util.List;
39
- import java.util.Set;
40
- import java.util.Map.Entry;
41
-
42
- import javax.xml.XMLConstants;
43
- import javax.xml.namespace.NamespaceContext;
44
-
45
- /**
46
- * Holder of each node's namespace.
47
- *
48
- * @author Yoko Harada <yokolet@gmail.com>
49
- *
50
- */
51
-
52
- public class NokogiriNamespaceContext implements NamespaceContext {
53
- public static final String NOKOGIRI_PREFIX = "nokogiri";
54
- public static final String NOKOGIRI_URI = "http://www.nokogiri.org/default_ns/ruby/extensions_functions";
55
- public static final String NOKOGIRI_TEMPORARY_ROOT_TAG = "nokogiri-temporary-root-tag";
56
-
57
- private Hashtable<String,String> register;
58
-
59
- public NokogiriNamespaceContext() {
60
- this.register = new Hashtable<String,String>();
61
- register.put(NOKOGIRI_PREFIX, NOKOGIRI_URI);
62
- register.put("xml", "http://www.w3.org/XML/1998/namespace");
63
- register.put("xhtml", "http://www.w3.org/1999/xhtml");
64
- }
65
-
66
- public String getNamespaceURI(String prefix) {
67
- if (prefix == null) {
68
- throw new IllegalArgumentException();
69
- }
70
- String uri = this.register.get(prefix);
71
- if (uri != null) {
72
- return uri;
73
- }
74
-
75
- if (prefix.equals(XMLConstants.XMLNS_ATTRIBUTE)) {
76
- uri = this.register.get(XMLConstants.XMLNS_ATTRIBUTE);
77
- return (uri == null) ? XMLConstants.XMLNS_ATTRIBUTE_NS_URI : uri;
78
- }
79
-
80
- return XMLConstants.NULL_NS_URI;
81
- }
82
-
83
- public String getPrefix(String uri) {
84
- if (uri == null) {
85
- throw new IllegalArgumentException("uri is null");
86
- } else {
87
- Set<Entry<String, String>> entries = register.entrySet();
88
- for (Entry<String, String> entry : entries) {
89
- if (uri.equals(entry.getValue())) {
90
- return entry.getKey();
91
- }
92
- }
93
- }
94
- return null;
95
- }
96
-
97
- public Iterator<String> getPrefixes(String uri) {
98
- if (register == null) return null;
99
- Set<Entry<String, String>> entries = register.entrySet();
100
- List<String> list = new ArrayList<String>();
101
- for (Entry<String, String> entry : entries) {
102
- if (uri.equals(entry.getValue())) {
103
- list.add(entry.getKey());
104
- }
105
- }
106
- return list.iterator();
107
- }
108
-
109
- public Set<String> getAllPrefixes() {
110
- if (register == null) return null;
111
- return register.keySet();
112
- }
113
-
114
- public void registerNamespace(String prefix, String uri) {
115
- if("xmlns".equals(prefix)) prefix = "";
116
- this.register.put(prefix, uri);
117
- }
118
- }
@@ -1,74 +0,0 @@
1
- /**
2
- * (The MIT License)
3
- *
4
- * Copyright (c) 2008 - 2011:
5
- *
6
- * * {Aaron Patterson}[http://tenderlovemaking.com]
7
- * * {Mike Dalessio}[http://mike.daless.io]
8
- * * {Charles Nutter}[http://blog.headius.com]
9
- * * {Sergio Arbeo}[http://www.serabe.com]
10
- * * {Patrick Mahoney}[http://polycrystal.org]
11
- * * {Yoko Harada}[http://yokolet.blogspot.com]
12
- *
13
- * Permission is hereby granted, free of charge, to any person obtaining
14
- * a copy of this software and associated documentation files (the
15
- * 'Software'), to deal in the Software without restriction, including
16
- * without limitation the rights to use, copy, modify, merge, publish,
17
- * distribute, sublicense, and/or sell copies of the Software, and to
18
- * permit persons to whom the Software is furnished to do so, subject to
19
- * the following conditions:
20
- *
21
- * The above copyright notice and this permission notice shall be
22
- * included in all copies or substantial portions of the Software.
23
- *
24
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
33
- package nokogiri.internals;
34
-
35
- import org.apache.xerces.xni.parser.XMLParseException;
36
- import org.xml.sax.SAXException;
37
- import org.xml.sax.SAXParseException;
38
-
39
- /**
40
- * Error Handler for XML document when recover is true (default).
41
- *
42
- * @author sergio
43
- * @author Yoko Harada <yokolet@gmail.com>
44
- */
45
- public class NokogiriNonStrictErrorHandler extends NokogiriErrorHandler{
46
- public NokogiriNonStrictErrorHandler(boolean noerror, boolean nowarning) {
47
- super(noerror, nowarning);
48
- }
49
-
50
- public void warning(SAXParseException ex) throws SAXException {
51
- errors.add(ex);
52
- }
53
-
54
- public void error(SAXParseException ex) throws SAXException {
55
- errors.add(ex);
56
- }
57
-
58
- public void fatalError(SAXParseException ex) throws SAXException {
59
- errors.add(ex);
60
- }
61
-
62
- public void error(String domain, String key, XMLParseException e) {
63
- errors.add(e);
64
- }
65
-
66
- public void fatalError(String domain, String key, XMLParseException e) {
67
- errors.add(e);
68
- }
69
-
70
- public void warning(String domain, String key, XMLParseException e) {
71
- errors.add(e);
72
- }
73
-
74
- }
@@ -1,121 +0,0 @@
1
- /**
2
- * (The MIT License)
3
- *
4
- * Copyright (c) 2008 - 2011:
5
- *
6
- * * {Aaron Patterson}[http://tenderlovemaking.com]
7
- * * {Mike Dalessio}[http://mike.daless.io]
8
- * * {Charles Nutter}[http://blog.headius.com]
9
- * * {Sergio Arbeo}[http://www.serabe.com]
10
- * * {Patrick Mahoney}[http://polycrystal.org]
11
- * * {Yoko Harada}[http://yokolet.blogspot.com]
12
- *
13
- * Permission is hereby granted, free of charge, to any person obtaining
14
- * a copy of this software and associated documentation files (the
15
- * 'Software'), to deal in the Software without restriction, including
16
- * without limitation the rights to use, copy, modify, merge, publish,
17
- * distribute, sublicense, and/or sell copies of the Software, and to
18
- * permit persons to whom the Software is furnished to do so, subject to
19
- * the following conditions:
20
- *
21
- * The above copyright notice and this permission notice shall be
22
- * included in all copies or substantial portions of the Software.
23
- *
24
- * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
- */
32
-
33
- package nokogiri.internals;
34
-
35
- import org.apache.xerces.xni.parser.XMLParseException;
36
- import org.xml.sax.SAXException;
37
- import org.xml.sax.SAXParseException;
38
-
39
- /**
40
- * Non-strict error handler for NekoHtml.
41
- *
42
- * NekoHtml adds too many warnings, which makes later processing hard. For example,
43
- * Nokogiri wants to know whether number of errors have been increased or not to judge
44
- * availability of creating NodeSet from a given fragment. When the fragment nodes
45
- * are to be created from HTML document, which means NekoHtml is used, always errors
46
- * increases. As a result, even though the given fragment is correct HTML, NodeSet
47
- * base on the given fragment won't be created. This is why all warnings are eliminated.
48
- *
49
- * @author Yoko Harada <yokolet@gmail.com>
50
- */
51
- public class NokogiriNonStrictErrorHandler4NekoHtml extends NokogiriErrorHandler {
52
-
53
- public NokogiriNonStrictErrorHandler4NekoHtml(boolean nowarning) {
54
- super(false, nowarning);
55
- }
56
-
57
- public NokogiriNonStrictErrorHandler4NekoHtml(boolean noerror, boolean nowarning) {
58
- super(noerror, nowarning);
59
- }
60
-
61
- public void warning(SAXParseException ex) throws SAXException {
62
- //noop. NekoHtml adds too many warnings.
63
- }
64
-
65
- public void error(SAXParseException ex) throws SAXException {
66
- errors.add(ex);
67
- }
68
-
69
- public void fatalError(SAXParseException ex) throws SAXException {
70
- errors.add(ex);
71
- }
72
-
73
- /**
74
- * Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
75
- * is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
76
- *
77
- * @param domain The domain of the error. The domain can be any string but is
78
- * suggested to be a valid URI. The domain can be used to conveniently
79
- * specify a web site location of the relevant specification or
80
- * document pertaining to this warning.
81
- * @param key The error key. This key can be any string and is implementation
82
- * dependent.
83
- * @param e Exception.
84
- */
85
- public void error(String domain, String key, XMLParseException e) {
86
- errors.add(e);
87
- }
88
-
89
- /**
90
- * Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
91
- * is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
92
- *
93
- * @param domain The domain of the fatal error. The domain can be any string but is
94
- * suggested to be a valid URI. The domain can be used to conveniently
95
- * specify a web site location of the relevant specification or
96
- * document pertaining to this warning.
97
- * @param key The fatal error key. This key can be any string and is implementation
98
- * dependent.
99
- * @param e Exception.
100
- */
101
- public void fatalError(String domain, String key, XMLParseException e) {
102
- errors.add(e);
103
- }
104
-
105
- /**
106
- * Implementation of org.apache.xerces.xni.parser.XMLErrorHandler. This method
107
- * is invoked during parsing fired by HtmlDomParserContext and is a NekoHtml requirement.
108
- *
109
- * @param domain The domain of the warning. The domain can be any string but is
110
- * suggested to be a valid URI. The domain can be used to conveniently
111
- * specify a web site location of the relevant specification or
112
- * document pertaining to this warning.
113
- * @param key The warning key. This key can be any string and is implementation
114
- * dependent.
115
- * @param e Exception.
116
- */
117
- public void warning(String domain, String key, XMLParseException e) {
118
- //noop. NekoHtml adds too many warnings.
119
- }
120
-
121
- }