nokogiri 1.11.1-java → 1.11.6-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 (143) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE-DEPENDENCIES.md +12 -12
  3. data/LICENSE.md +1 -1
  4. data/README.md +21 -16
  5. data/dependencies.yml +12 -12
  6. data/ext/java/nokogiri/EncodingHandler.java +76 -89
  7. data/ext/java/nokogiri/HtmlDocument.java +135 -144
  8. data/ext/java/nokogiri/HtmlElementDescription.java +102 -117
  9. data/ext/java/nokogiri/HtmlEntityLookup.java +33 -60
  10. data/ext/java/nokogiri/HtmlSaxParserContext.java +218 -222
  11. data/ext/java/nokogiri/HtmlSaxPushParser.java +162 -169
  12. data/ext/java/nokogiri/NokogiriService.java +595 -556
  13. data/ext/java/nokogiri/XmlAttr.java +118 -126
  14. data/ext/java/nokogiri/XmlAttributeDecl.java +95 -106
  15. data/ext/java/nokogiri/XmlCdata.java +35 -58
  16. data/ext/java/nokogiri/XmlComment.java +46 -67
  17. data/ext/java/nokogiri/XmlDocument.java +645 -572
  18. data/ext/java/nokogiri/XmlDocumentFragment.java +125 -137
  19. data/ext/java/nokogiri/XmlDtd.java +448 -414
  20. data/ext/java/nokogiri/XmlElement.java +23 -48
  21. data/ext/java/nokogiri/XmlElementContent.java +343 -316
  22. data/ext/java/nokogiri/XmlElementDecl.java +124 -125
  23. data/ext/java/nokogiri/XmlEntityDecl.java +119 -127
  24. data/ext/java/nokogiri/XmlEntityReference.java +49 -72
  25. data/ext/java/nokogiri/XmlNamespace.java +175 -175
  26. data/ext/java/nokogiri/XmlNode.java +1843 -1620
  27. data/ext/java/nokogiri/XmlNodeSet.java +361 -331
  28. data/ext/java/nokogiri/XmlProcessingInstruction.java +47 -69
  29. data/ext/java/nokogiri/XmlReader.java +513 -450
  30. data/ext/java/nokogiri/XmlRelaxng.java +85 -104
  31. data/ext/java/nokogiri/XmlSaxParserContext.java +328 -315
  32. data/ext/java/nokogiri/XmlSaxPushParser.java +227 -220
  33. data/ext/java/nokogiri/XmlSchema.java +328 -295
  34. data/ext/java/nokogiri/XmlSyntaxError.java +113 -115
  35. data/ext/java/nokogiri/XmlText.java +55 -76
  36. data/ext/java/nokogiri/XmlXpathContext.java +240 -238
  37. data/ext/java/nokogiri/XsltStylesheet.java +280 -269
  38. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  39. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +201 -202
  40. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +17 -10
  41. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +43 -16
  42. data/ext/java/nokogiri/internals/NokogiriDomParser.java +63 -80
  43. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  44. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +27 -52
  45. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -286
  46. data/ext/java/nokogiri/internals/NokogiriHelpers.java +736 -652
  47. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +184 -173
  48. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +81 -98
  49. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +64 -79
  50. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +84 -99
  51. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +48 -65
  52. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +116 -131
  53. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -56
  54. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +23 -46
  55. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +55 -72
  56. data/ext/java/nokogiri/internals/ParserContext.java +206 -211
  57. data/ext/java/nokogiri/internals/ReaderNode.java +478 -403
  58. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -739
  59. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +31 -54
  60. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  61. data/ext/java/nokogiri/internals/XmlDeclHandler.java +3 -34
  62. data/ext/java/nokogiri/internals/XmlDomParserContext.java +206 -207
  63. data/ext/java/nokogiri/internals/XmlSaxParser.java +22 -47
  64. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +71 -68
  65. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +137 -118
  66. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +27 -21
  67. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +74 -61
  68. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +230 -205
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +572 -547
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +17 -10
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +17 -10
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +323 -302
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +232 -219
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +22 -15
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +23 -16
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +23 -16
  77. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +22 -15
  78. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +575 -545
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +141 -120
  80. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +39 -38
  81. data/ext/java/nokogiri/internals/c14n/Constants.java +13 -10
  82. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +279 -247
  83. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +66 -53
  84. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +44 -37
  85. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +135 -120
  86. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +59 -48
  87. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +384 -334
  88. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +25 -24
  89. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +151 -140
  90. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +456 -423
  91. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1466 -1500
  92. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +626 -574
  93. data/ext/nokogiri/depend +34 -474
  94. data/ext/nokogiri/extconf.rb +253 -183
  95. data/ext/nokogiri/html_document.c +10 -15
  96. data/ext/nokogiri/html_element_description.c +84 -71
  97. data/ext/nokogiri/html_entity_lookup.c +21 -16
  98. data/ext/nokogiri/html_sax_parser_context.c +66 -65
  99. data/ext/nokogiri/html_sax_push_parser.c +29 -27
  100. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  101. data/ext/nokogiri/nokogiri.c +190 -63
  102. data/ext/nokogiri/test_global_handlers.c +3 -4
  103. data/ext/nokogiri/xml_attr.c +15 -15
  104. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  105. data/ext/nokogiri/xml_cdata.c +13 -18
  106. data/ext/nokogiri/xml_comment.c +19 -26
  107. data/ext/nokogiri/xml_document.c +246 -188
  108. data/ext/nokogiri/xml_document_fragment.c +13 -15
  109. data/ext/nokogiri/xml_dtd.c +54 -48
  110. data/ext/nokogiri/xml_element_content.c +30 -27
  111. data/ext/nokogiri/xml_element_decl.c +22 -22
  112. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  113. data/ext/nokogiri/xml_entity_decl.c +32 -30
  114. data/ext/nokogiri/xml_entity_reference.c +16 -18
  115. data/ext/nokogiri/xml_namespace.c +56 -49
  116. data/ext/nokogiri/xml_node.c +385 -326
  117. data/ext/nokogiri/xml_node_set.c +168 -156
  118. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  119. data/ext/nokogiri/xml_reader.c +191 -157
  120. data/ext/nokogiri/xml_relax_ng.c +29 -23
  121. data/ext/nokogiri/xml_sax_parser.c +117 -112
  122. data/ext/nokogiri/xml_sax_parser_context.c +100 -85
  123. data/ext/nokogiri/xml_sax_push_parser.c +34 -27
  124. data/ext/nokogiri/xml_schema.c +48 -42
  125. data/ext/nokogiri/xml_syntax_error.c +21 -23
  126. data/ext/nokogiri/xml_text.c +13 -17
  127. data/ext/nokogiri/xml_xpath_context.c +134 -127
  128. data/ext/nokogiri/xslt_stylesheet.c +157 -157
  129. data/lib/nokogiri.rb +1 -22
  130. data/lib/nokogiri/css/parser.rb +1 -1
  131. data/lib/nokogiri/extension.rb +26 -0
  132. data/lib/nokogiri/html/document_fragment.rb +15 -15
  133. data/lib/nokogiri/nokogiri.jar +0 -0
  134. data/lib/nokogiri/version/constant.rb +1 -1
  135. data/lib/nokogiri/version/info.rb +32 -8
  136. data/lib/nokogiri/xml/document.rb +74 -28
  137. data/lib/nokogiri/xml/node.rb +39 -42
  138. data/lib/nokogiri/xml/reader.rb +2 -9
  139. data/lib/nokogiri/xml/xpath.rb +1 -3
  140. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  141. metadata +7 -8
  142. data/ext/nokogiri/xml_io.c +0 -63
  143. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
@@ -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
  }