nokogiri 1.11.0.rc3-java → 1.11.4-java

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 (187) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +1015 -947
  4. data/LICENSE.md +1 -1
  5. data/README.md +168 -91
  6. data/dependencies.yml +12 -12
  7. data/ext/java/nokogiri/EncodingHandler.java +76 -89
  8. data/ext/java/nokogiri/HtmlDocument.java +135 -144
  9. data/ext/java/nokogiri/HtmlElementDescription.java +102 -117
  10. data/ext/java/nokogiri/HtmlEntityLookup.java +33 -60
  11. data/ext/java/nokogiri/HtmlSaxParserContext.java +218 -222
  12. data/ext/java/nokogiri/HtmlSaxPushParser.java +162 -169
  13. data/ext/java/nokogiri/NokogiriService.java +595 -556
  14. data/ext/java/nokogiri/XmlAttr.java +118 -126
  15. data/ext/java/nokogiri/XmlAttributeDecl.java +95 -106
  16. data/ext/java/nokogiri/XmlCdata.java +35 -58
  17. data/ext/java/nokogiri/XmlComment.java +46 -67
  18. data/ext/java/nokogiri/XmlDocument.java +645 -572
  19. data/ext/java/nokogiri/XmlDocumentFragment.java +125 -137
  20. data/ext/java/nokogiri/XmlDtd.java +448 -414
  21. data/ext/java/nokogiri/XmlElement.java +23 -48
  22. data/ext/java/nokogiri/XmlElementContent.java +343 -316
  23. data/ext/java/nokogiri/XmlElementDecl.java +124 -125
  24. data/ext/java/nokogiri/XmlEntityDecl.java +119 -127
  25. data/ext/java/nokogiri/XmlEntityReference.java +49 -72
  26. data/ext/java/nokogiri/XmlNamespace.java +175 -175
  27. data/ext/java/nokogiri/XmlNode.java +1843 -1622
  28. data/ext/java/nokogiri/XmlNodeSet.java +361 -331
  29. data/ext/java/nokogiri/XmlProcessingInstruction.java +47 -69
  30. data/ext/java/nokogiri/XmlReader.java +513 -450
  31. data/ext/java/nokogiri/XmlRelaxng.java +89 -101
  32. data/ext/java/nokogiri/XmlSaxParserContext.java +328 -310
  33. data/ext/java/nokogiri/XmlSaxPushParser.java +227 -220
  34. data/ext/java/nokogiri/XmlSchema.java +335 -242
  35. data/ext/java/nokogiri/XmlSyntaxError.java +113 -119
  36. data/ext/java/nokogiri/XmlText.java +55 -76
  37. data/ext/java/nokogiri/XmlXpathContext.java +242 -210
  38. data/ext/java/nokogiri/XsltStylesheet.java +280 -269
  39. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  40. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +201 -190
  41. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +17 -10
  42. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +43 -16
  43. data/ext/java/nokogiri/internals/NokogiriDomParser.java +63 -80
  44. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  45. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +27 -52
  46. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -286
  47. data/ext/java/nokogiri/internals/NokogiriHelpers.java +736 -652
  48. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +184 -173
  49. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +79 -89
  50. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +64 -79
  51. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +84 -99
  52. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +48 -65
  53. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +119 -78
  54. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -54
  55. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +23 -46
  56. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +55 -72
  57. data/ext/java/nokogiri/internals/ParserContext.java +206 -211
  58. data/ext/java/nokogiri/internals/ReaderNode.java +478 -403
  59. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -739
  60. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +31 -54
  61. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  62. data/ext/java/nokogiri/internals/XmlDeclHandler.java +3 -34
  63. data/ext/java/nokogiri/internals/XmlDomParserContext.java +206 -207
  64. data/ext/java/nokogiri/internals/XmlSaxParser.java +22 -47
  65. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +71 -68
  66. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +137 -118
  67. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +27 -21
  68. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +74 -61
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +230 -205
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +572 -547
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +17 -10
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +17 -10
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +323 -302
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +232 -219
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +22 -15
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +23 -16
  77. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +23 -16
  78. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +22 -15
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +575 -545
  80. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +141 -120
  81. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +39 -38
  82. data/ext/java/nokogiri/internals/c14n/Constants.java +13 -10
  83. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +279 -247
  84. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +66 -53
  85. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +44 -37
  86. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +135 -120
  87. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +59 -48
  88. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +384 -334
  89. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +25 -24
  90. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +151 -140
  91. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +456 -423
  92. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1466 -1500
  93. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +626 -574
  94. data/ext/nokogiri/depend +37 -358
  95. data/ext/nokogiri/extconf.rb +581 -374
  96. data/ext/nokogiri/html_document.c +78 -82
  97. data/ext/nokogiri/html_element_description.c +84 -71
  98. data/ext/nokogiri/html_entity_lookup.c +21 -16
  99. data/ext/nokogiri/html_sax_parser_context.c +69 -66
  100. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  101. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  102. data/ext/nokogiri/nokogiri.c +192 -93
  103. data/ext/nokogiri/test_global_handlers.c +40 -0
  104. data/ext/nokogiri/xml_attr.c +15 -15
  105. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  106. data/ext/nokogiri/xml_cdata.c +13 -18
  107. data/ext/nokogiri/xml_comment.c +19 -26
  108. data/ext/nokogiri/xml_document.c +246 -188
  109. data/ext/nokogiri/xml_document_fragment.c +13 -15
  110. data/ext/nokogiri/xml_dtd.c +54 -48
  111. data/ext/nokogiri/xml_element_content.c +30 -27
  112. data/ext/nokogiri/xml_element_decl.c +22 -22
  113. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  114. data/ext/nokogiri/xml_entity_decl.c +32 -30
  115. data/ext/nokogiri/xml_entity_reference.c +16 -18
  116. data/ext/nokogiri/xml_namespace.c +56 -49
  117. data/ext/nokogiri/xml_node.c +371 -320
  118. data/ext/nokogiri/xml_node_set.c +168 -156
  119. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  120. data/ext/nokogiri/xml_reader.c +191 -157
  121. data/ext/nokogiri/xml_relax_ng.c +52 -28
  122. data/ext/nokogiri/xml_sax_parser.c +118 -118
  123. data/ext/nokogiri/xml_sax_parser_context.c +103 -86
  124. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  125. data/ext/nokogiri/xml_schema.c +95 -47
  126. data/ext/nokogiri/xml_syntax_error.c +42 -21
  127. data/ext/nokogiri/xml_text.c +13 -17
  128. data/ext/nokogiri/xml_xpath_context.c +206 -123
  129. data/ext/nokogiri/xslt_stylesheet.c +158 -161
  130. data/lib/nokogiri.rb +3 -7
  131. data/lib/nokogiri/css/parser.rb +3 -3
  132. data/lib/nokogiri/css/parser.y +2 -2
  133. data/lib/nokogiri/css/xpath_visitor.rb +70 -42
  134. data/lib/nokogiri/extension.rb +26 -0
  135. data/lib/nokogiri/html/document.rb +12 -26
  136. data/lib/nokogiri/html/document_fragment.rb +15 -15
  137. data/lib/nokogiri/nokogiri.jar +0 -0
  138. data/lib/nokogiri/version.rb +2 -149
  139. data/lib/nokogiri/version/constant.rb +5 -0
  140. data/lib/nokogiri/version/info.rb +205 -0
  141. data/lib/nokogiri/xml/document.rb +91 -35
  142. data/lib/nokogiri/xml/document_fragment.rb +4 -6
  143. data/lib/nokogiri/xml/node.rb +89 -69
  144. data/lib/nokogiri/xml/parse_options.rb +6 -0
  145. data/lib/nokogiri/xml/reader.rb +2 -9
  146. data/lib/nokogiri/xml/relax_ng.rb +6 -2
  147. data/lib/nokogiri/xml/schema.rb +12 -4
  148. data/lib/nokogiri/xml/searchable.rb +3 -1
  149. data/lib/nokogiri/xml/xpath.rb +1 -3
  150. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  151. metadata +86 -177
  152. data/ext/nokogiri/html_document.h +0 -10
  153. data/ext/nokogiri/html_element_description.h +0 -10
  154. data/ext/nokogiri/html_entity_lookup.h +0 -8
  155. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  156. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  157. data/ext/nokogiri/nokogiri.h +0 -134
  158. data/ext/nokogiri/xml_attr.h +0 -9
  159. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  160. data/ext/nokogiri/xml_cdata.h +0 -9
  161. data/ext/nokogiri/xml_comment.h +0 -9
  162. data/ext/nokogiri/xml_document.h +0 -23
  163. data/ext/nokogiri/xml_document_fragment.h +0 -10
  164. data/ext/nokogiri/xml_dtd.h +0 -10
  165. data/ext/nokogiri/xml_element_content.h +0 -10
  166. data/ext/nokogiri/xml_element_decl.h +0 -9
  167. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  168. data/ext/nokogiri/xml_entity_decl.h +0 -10
  169. data/ext/nokogiri/xml_entity_reference.h +0 -9
  170. data/ext/nokogiri/xml_io.c +0 -63
  171. data/ext/nokogiri/xml_io.h +0 -11
  172. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  173. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  174. data/ext/nokogiri/xml_namespace.h +0 -14
  175. data/ext/nokogiri/xml_node.h +0 -13
  176. data/ext/nokogiri/xml_node_set.h +0 -12
  177. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  178. data/ext/nokogiri/xml_reader.h +0 -10
  179. data/ext/nokogiri/xml_relax_ng.h +0 -9
  180. data/ext/nokogiri/xml_sax_parser.h +0 -39
  181. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  182. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  183. data/ext/nokogiri/xml_schema.h +0 -9
  184. data/ext/nokogiri/xml_syntax_error.h +0 -13
  185. data/ext/nokogiri/xml_text.h +0 -9
  186. data/ext/nokogiri/xml_xpath_context.h +0 -10
  187. data/ext/nokogiri/xslt_stylesheet.h +0 -14
@@ -1,35 +1,3 @@
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
1
  package nokogiri.internals;
34
2
 
35
3
  import org.apache.xerces.parsers.SAXParser;
@@ -42,24 +10,31 @@ import org.apache.xerces.xni.XNIException;
42
10
  *
43
11
  * @author Patrick Mahoney <pat@polycrystal.org>
44
12
  */
45
- public class XmlSaxParser extends SAXParser {
13
+ public class XmlSaxParser extends SAXParser
14
+ {
46
15
 
47
- protected XmlDeclHandler xmlDeclHandler = null;
16
+ protected XmlDeclHandler xmlDeclHandler = null;
48
17
 
49
- public XmlSaxParser() {
50
- super();
51
- }
18
+ public
19
+ XmlSaxParser()
20
+ {
21
+ super();
22
+ }
52
23
 
53
- public void setXmlDeclHandler(XmlDeclHandler xmlDeclHandler) {
54
- this.xmlDeclHandler = xmlDeclHandler;
55
- }
24
+ public void
25
+ setXmlDeclHandler(XmlDeclHandler xmlDeclHandler)
26
+ {
27
+ this.xmlDeclHandler = xmlDeclHandler;
28
+ }
56
29
 
57
- @Override
58
- public void xmlDecl(String version, String encoding, String standalone,
59
- Augmentations augs) throws XNIException {
60
- super.xmlDecl(version, encoding, standalone, augs);
61
- if (xmlDeclHandler != null) {
62
- xmlDeclHandler.xmlDecl(version, encoding, standalone);
63
- }
30
+ @Override
31
+ public void
32
+ xmlDecl(String version, String encoding, String standalone,
33
+ Augmentations augs) throws XNIException
34
+ {
35
+ super.xmlDecl(version, encoding, standalone, augs);
36
+ if (xmlDeclHandler != null) {
37
+ xmlDeclHandler.xmlDecl(version, encoding, standalone);
64
38
  }
39
+ }
65
40
  }
@@ -28,7 +28,7 @@ import org.w3c.dom.Attr;
28
28
  * Compares two attributes based on the C14n specification.
29
29
  *
30
30
  * <UL>
31
- * <LI>Namespace nodes have a lesser document order position than attribute
31
+ * <LI>Namespace nodes have a lesser document order position than attribute
32
32
  * nodes.
33
33
  * <LI> An element's namespace nodes are sorted lexicographically by
34
34
  * local name (the default namespace node, if one exists, has no
@@ -40,80 +40,83 @@ import org.w3c.dom.Attr;
40
40
  *
41
41
  * @author Christian Geuer-Pollmann
42
42
  */
43
- public class AttrCompare implements Comparator<Attr>, Serializable {
43
+ public class AttrCompare implements Comparator<Attr>, Serializable
44
+ {
44
45
 
45
- private static final long serialVersionUID = -7113259629930576230L;
46
- private static final int ATTR0_BEFORE_ATTR1 = -1;
47
- private static final int ATTR1_BEFORE_ATTR0 = 1;
48
- private static final String XMLNS = Constants.NamespaceSpecNS;
46
+ private static final long serialVersionUID = -7113259629930576230L;
47
+ private static final int ATTR0_BEFORE_ATTR1 = -1;
48
+ private static final int ATTR1_BEFORE_ATTR0 = 1;
49
+ private static final String XMLNS = Constants.NamespaceSpecNS;
49
50
 
50
- /**
51
- * Compares two attributes based on the C14n specification.
52
- *
53
- * <UL>
54
- * <LI>Namespace nodes have a lesser document order position than
55
- * attribute nodes.
56
- * <LI> An element's namespace nodes are sorted lexicographically by
57
- * local name (the default namespace node, if one exists, has no
58
- * local name and is therefore lexicographically least).
59
- * <LI> An element's attribute nodes are sorted lexicographically with
60
- * namespace URI as the primary key and local name as the secondary
61
- * key (an empty namespace URI is lexicographically least).
62
- * </UL>
63
- *
64
- * @param attr0
65
- * @param attr1
66
- * @return returns a negative integer, zero, or a positive integer as
67
- * obj0 is less than, equal to, or greater than obj1
68
- *
69
- */
70
- public int compare(Attr attr0, Attr attr1) {
71
- String namespaceURI0 = attr0.getNamespaceURI();
72
- String namespaceURI1 = attr1.getNamespaceURI();
73
-
74
- boolean isNamespaceAttr0 = XMLNS.equals(namespaceURI0);
75
- boolean isNamespaceAttr1 = XMLNS.equals(namespaceURI1);
51
+ /**
52
+ * Compares two attributes based on the C14n specification.
53
+ *
54
+ * <UL>
55
+ * <LI>Namespace nodes have a lesser document order position than
56
+ * attribute nodes.
57
+ * <LI> An element's namespace nodes are sorted lexicographically by
58
+ * local name (the default namespace node, if one exists, has no
59
+ * local name and is therefore lexicographically least).
60
+ * <LI> An element's attribute nodes are sorted lexicographically with
61
+ * namespace URI as the primary key and local name as the secondary
62
+ * key (an empty namespace URI is lexicographically least).
63
+ * </UL>
64
+ *
65
+ * @param attr0
66
+ * @param attr1
67
+ * @return returns a negative integer, zero, or a positive integer as
68
+ * obj0 is less than, equal to, or greater than obj1
69
+ *
70
+ */
71
+ public int
72
+ compare(Attr attr0, Attr attr1)
73
+ {
74
+ String namespaceURI0 = attr0.getNamespaceURI();
75
+ String namespaceURI1 = attr1.getNamespaceURI();
76
76
 
77
- if (isNamespaceAttr0) {
78
- if (isNamespaceAttr1) {
79
- // both are namespaces
80
- String localname0 = attr0.getLocalName();
81
- String localname1 = attr1.getLocalName();
77
+ boolean isNamespaceAttr0 = XMLNS.equals(namespaceURI0);
78
+ boolean isNamespaceAttr1 = XMLNS.equals(namespaceURI1);
82
79
 
83
- if ("xmlns".equals(localname0)) {
84
- localname0 = "";
85
- }
80
+ if (isNamespaceAttr0) {
81
+ if (isNamespaceAttr1) {
82
+ // both are namespaces
83
+ String localname0 = attr0.getLocalName();
84
+ String localname1 = attr1.getLocalName();
86
85
 
87
- if ("xmlns".equals(localname1)) {
88
- localname1 = "";
89
- }
86
+ if ("xmlns".equals(localname0)) {
87
+ localname0 = "";
88
+ }
90
89
 
91
- return localname0.compareTo(localname1);
92
- }
93
- // attr0 is a namespace, attr1 is not
94
- return ATTR0_BEFORE_ATTR1;
95
- } else if (isNamespaceAttr1) {
96
- // attr1 is a namespace, attr0 is not
97
- return ATTR1_BEFORE_ATTR0;
98
- }
90
+ if ("xmlns".equals(localname1)) {
91
+ localname1 = "";
92
+ }
99
93
 
100
- // none is a namespace
101
- if (namespaceURI0 == null) {
102
- if (namespaceURI1 == null) {
103
- String name0 = attr0.getName();
104
- String name1 = attr1.getName();
105
- return name0.compareTo(name1);
106
- }
107
- return ATTR0_BEFORE_ATTR1;
108
- } else if (namespaceURI1 == null) {
109
- return ATTR1_BEFORE_ATTR0;
110
- }
94
+ return localname0.compareTo(localname1);
95
+ }
96
+ // attr0 is a namespace, attr1 is not
97
+ return ATTR0_BEFORE_ATTR1;
98
+ } else if (isNamespaceAttr1) {
99
+ // attr1 is a namespace, attr0 is not
100
+ return ATTR1_BEFORE_ATTR0;
101
+ }
111
102
 
112
- int a = namespaceURI0.compareTo(namespaceURI1);
113
- if (a != 0) {
114
- return a;
115
- }
116
-
117
- return (attr0.getLocalName()).compareTo(attr1.getLocalName());
103
+ // none is a namespace
104
+ if (namespaceURI0 == null) {
105
+ if (namespaceURI1 == null) {
106
+ String name0 = attr0.getName();
107
+ String name1 = attr1.getName();
108
+ return name0.compareTo(name1);
109
+ }
110
+ return ATTR0_BEFORE_ATTR1;
111
+ } else if (namespaceURI1 == null) {
112
+ return ATTR1_BEFORE_ATTR0;
118
113
  }
114
+
115
+ int a = namespaceURI0.compareTo(namespaceURI1);
116
+ if (a != 0) {
117
+ return a;
118
+ }
119
+
120
+ return (attr0.getLocalName()).compareTo(attr1.getLocalName());
121
+ }
119
122
  }
@@ -29,131 +29,150 @@ import org.w3c.dom.NamedNodeMap;
29
29
  *
30
30
  * @author Christian Geuer-Pollmann
31
31
  */
32
- public class C14nHelper {
33
-
34
- /**
35
- * Constructor C14nHelper
36
- *
37
- */
38
- private C14nHelper() {
39
- // don't allow instantiation
32
+ public class C14nHelper
33
+ {
34
+
35
+ /**
36
+ * Constructor C14nHelper
37
+ *
38
+ */
39
+ private
40
+ C14nHelper()
41
+ {
42
+ // don't allow instantiation
43
+ }
44
+
45
+ /**
46
+ * Method namespaceIsRelative
47
+ *
48
+ * @param namespace
49
+ * @return true if the given namespace is relative.
50
+ */
51
+ public static boolean
52
+ namespaceIsRelative(Attr namespace)
53
+ {
54
+ return !namespaceIsAbsolute(namespace);
55
+ }
56
+
57
+ /**
58
+ * Method namespaceIsRelative
59
+ *
60
+ * @param namespaceValue
61
+ * @return true if the given namespace is relative.
62
+ */
63
+ public static boolean
64
+ namespaceIsRelative(String namespaceValue)
65
+ {
66
+ return !namespaceIsAbsolute(namespaceValue);
67
+ }
68
+
69
+ /**
70
+ * Method namespaceIsAbsolute
71
+ *
72
+ * @param namespace
73
+ * @return true if the given namespace is absolute.
74
+ */
75
+ public static boolean
76
+ namespaceIsAbsolute(Attr namespace)
77
+ {
78
+ return namespaceIsAbsolute(namespace.getValue());
79
+ }
80
+
81
+ /**
82
+ * Method namespaceIsAbsolute
83
+ *
84
+ * @param namespaceValue
85
+ * @return true if the given namespace is absolute.
86
+ */
87
+ public static boolean
88
+ namespaceIsAbsolute(String namespaceValue)
89
+ {
90
+ // assume empty namespaces are absolute
91
+ if (namespaceValue.length() == 0) {
92
+ return true;
40
93
  }
41
-
42
- /**
43
- * Method namespaceIsRelative
44
- *
45
- * @param namespace
46
- * @return true if the given namespace is relative.
47
- */
48
- public static boolean namespaceIsRelative(Attr namespace) {
49
- return !namespaceIsAbsolute(namespace);
94
+ return namespaceValue.indexOf(':') > 0;
95
+ }
96
+
97
+ /**
98
+ * This method throws an exception if the Attribute value contains
99
+ * a relative URI.
100
+ *
101
+ * @param attr
102
+ * @throws CanonicalizationException
103
+ */
104
+ public static void
105
+ assertNotRelativeNS(Attr attr) throws CanonicalizationException
106
+ {
107
+ if (attr == null) {
108
+ return;
50
109
  }
51
110
 
52
- /**
53
- * Method namespaceIsRelative
54
- *
55
- * @param namespaceValue
56
- * @return true if the given namespace is relative.
57
- */
58
- public static boolean namespaceIsRelative(String namespaceValue) {
59
- return !namespaceIsAbsolute(namespaceValue);
60
- }
111
+ String nodeAttrName = attr.getNodeName();
112
+ boolean definesDefaultNS = nodeAttrName.equals("xmlns");
113
+ boolean definesNonDefaultNS = nodeAttrName.startsWith("xmlns:");
61
114
 
62
- /**
63
- * Method namespaceIsAbsolute
64
- *
65
- * @param namespace
66
- * @return true if the given namespace is absolute.
67
- */
68
- public static boolean namespaceIsAbsolute(Attr namespace) {
69
- return namespaceIsAbsolute(namespace.getValue());
70
- }
115
+ if ((definesDefaultNS || definesNonDefaultNS) && namespaceIsRelative(attr)) {
116
+ String parentName = attr.getOwnerElement().getTagName();
117
+ String attrValue = attr.getValue();
118
+ Object exArgs[] = { parentName, nodeAttrName, attrValue };
71
119
 
72
- /**
73
- * Method namespaceIsAbsolute
74
- *
75
- * @param namespaceValue
76
- * @return true if the given namespace is absolute.
77
- */
78
- public static boolean namespaceIsAbsolute(String namespaceValue) {
79
- // assume empty namespaces are absolute
80
- if (namespaceValue.length() == 0) {
81
- return true;
82
- }
83
- return namespaceValue.indexOf(':') > 0;
120
+ throw new CanonicalizationException(
121
+ "c14n.Canonicalizer.RelativeNamespace", exArgs
122
+ );
84
123
  }
85
-
86
- /**
87
- * This method throws an exception if the Attribute value contains
88
- * a relative URI.
89
- *
90
- * @param attr
91
- * @throws CanonicalizationException
92
- */
93
- public static void assertNotRelativeNS(Attr attr) throws CanonicalizationException {
94
- if (attr == null) {
95
- return;
96
- }
97
-
98
- String nodeAttrName = attr.getNodeName();
99
- boolean definesDefaultNS = nodeAttrName.equals("xmlns");
100
- boolean definesNonDefaultNS = nodeAttrName.startsWith("xmlns:");
101
-
102
- if ((definesDefaultNS || definesNonDefaultNS) && namespaceIsRelative(attr)) {
103
- String parentName = attr.getOwnerElement().getTagName();
104
- String attrValue = attr.getValue();
105
- Object exArgs[] = { parentName, nodeAttrName, attrValue };
106
-
107
- throw new CanonicalizationException(
108
- "c14n.Canonicalizer.RelativeNamespace", exArgs
109
- );
110
- }
124
+ }
125
+
126
+ /**
127
+ * This method throws a CanonicalizationException if the supplied Document
128
+ * is not able to be traversed using a TreeWalker.
129
+ *
130
+ * @param document
131
+ * @throws CanonicalizationException
132
+ */
133
+ public static void
134
+ checkTraversability(Document document)
135
+ throws CanonicalizationException
136
+ {
137
+ if (!document.isSupported("Traversal", "2.0")) {
138
+ Object exArgs[] = {document.getImplementation().getClass().getName() };
139
+
140
+ throw new CanonicalizationException(
141
+ "c14n.Canonicalizer.TraversalNotSupported", exArgs
142
+ );
111
143
  }
112
-
113
- /**
114
- * This method throws a CanonicalizationException if the supplied Document
115
- * is not able to be traversed using a TreeWalker.
116
- *
117
- * @param document
118
- * @throws CanonicalizationException
119
- */
120
- public static void checkTraversability(Document document)
121
- throws CanonicalizationException {
122
- if (!document.isSupported("Traversal", "2.0")) {
123
- Object exArgs[] = {document.getImplementation().getClass().getName() };
124
-
125
- throw new CanonicalizationException(
126
- "c14n.Canonicalizer.TraversalNotSupported", exArgs
127
- );
128
- }
129
- }
130
-
131
- /**
132
- * This method throws a CanonicalizationException if the supplied Element
133
- * contains any relative namespaces.
134
- *
135
- * @param ctxNode
136
- * @throws CanonicalizationException
137
- * @see C14nHelper#assertNotRelativeNS(Attr)
138
- */
139
- public static void checkForRelativeNamespace(Element ctxNode)
140
- throws CanonicalizationException {
141
- if (ctxNode != null) {
142
- NamedNodeMap attributes = ctxNode.getAttributes();
143
-
144
- for (int i = 0; i < attributes.getLength(); i++) {
145
- C14nHelper.assertNotRelativeNS((Attr) attributes.item(i));
146
- }
147
- } else {
148
- throw new CanonicalizationException("Called checkForRelativeNamespace() on null");
149
- }
144
+ }
145
+
146
+ /**
147
+ * This method throws a CanonicalizationException if the supplied Element
148
+ * contains any relative namespaces.
149
+ *
150
+ * @param ctxNode
151
+ * @throws CanonicalizationException
152
+ * @see C14nHelper#assertNotRelativeNS(Attr)
153
+ */
154
+ public static void
155
+ checkForRelativeNamespace(Element ctxNode)
156
+ throws CanonicalizationException
157
+ {
158
+ if (ctxNode != null) {
159
+ NamedNodeMap attributes = ctxNode.getAttributes();
160
+
161
+ for (int i = 0; i < attributes.getLength(); i++) {
162
+ C14nHelper.assertNotRelativeNS((Attr) attributes.item(i));
163
+ }
164
+ } else {
165
+ throw new CanonicalizationException("Called checkForRelativeNamespace() on null");
150
166
  }
151
-
152
- public static String getErrorMessage(String message, Object... exArgs) {
153
- StringBuffer sb = new StringBuffer(message);
154
- for (Object arg : exArgs) {
155
- sb.append(", ").append(arg.toString());
156
- }
157
- return new String(sb);
167
+ }
168
+
169
+ public static String
170
+ getErrorMessage(String message, Object... exArgs)
171
+ {
172
+ StringBuffer sb = new StringBuffer(message);
173
+ for (Object arg : exArgs) {
174
+ sb.append(", ").append(arg.toString());
158
175
  }
176
+ return new String(sb);
177
+ }
159
178
  }