nokogiri 1.11.1-java → 1.11.2-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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE-DEPENDENCIES.md +12 -12
  3. data/LICENSE.md +1 -1
  4. data/README.md +20 -15
  5. data/ext/java/nokogiri/EncodingHandler.java +78 -59
  6. data/ext/java/nokogiri/HtmlDocument.java +137 -114
  7. data/ext/java/nokogiri/HtmlElementDescription.java +104 -87
  8. data/ext/java/nokogiri/HtmlEntityLookup.java +31 -26
  9. data/ext/java/nokogiri/HtmlSaxParserContext.java +220 -192
  10. data/ext/java/nokogiri/HtmlSaxPushParser.java +164 -139
  11. data/ext/java/nokogiri/NokogiriService.java +597 -526
  12. data/ext/java/nokogiri/XmlAttr.java +120 -96
  13. data/ext/java/nokogiri/XmlAttributeDecl.java +97 -76
  14. data/ext/java/nokogiri/XmlCdata.java +35 -26
  15. data/ext/java/nokogiri/XmlComment.java +48 -37
  16. data/ext/java/nokogiri/XmlDocument.java +642 -540
  17. data/ext/java/nokogiri/XmlDocumentFragment.java +127 -107
  18. data/ext/java/nokogiri/XmlDtd.java +450 -384
  19. data/ext/java/nokogiri/XmlElement.java +25 -18
  20. data/ext/java/nokogiri/XmlElementContent.java +345 -286
  21. data/ext/java/nokogiri/XmlElementDecl.java +126 -95
  22. data/ext/java/nokogiri/XmlEntityDecl.java +121 -97
  23. data/ext/java/nokogiri/XmlEntityReference.java +51 -42
  24. data/ext/java/nokogiri/XmlNamespace.java +177 -145
  25. data/ext/java/nokogiri/XmlNode.java +1843 -1588
  26. data/ext/java/nokogiri/XmlNodeSet.java +361 -299
  27. data/ext/java/nokogiri/XmlProcessingInstruction.java +49 -39
  28. data/ext/java/nokogiri/XmlReader.java +513 -418
  29. data/ext/java/nokogiri/XmlRelaxng.java +91 -78
  30. data/ext/java/nokogiri/XmlSaxParserContext.java +330 -285
  31. data/ext/java/nokogiri/XmlSaxPushParser.java +229 -190
  32. data/ext/java/nokogiri/XmlSchema.java +328 -263
  33. data/ext/java/nokogiri/XmlSyntaxError.java +113 -83
  34. data/ext/java/nokogiri/XmlText.java +57 -46
  35. data/ext/java/nokogiri/XmlXpathContext.java +240 -206
  36. data/ext/java/nokogiri/XsltStylesheet.java +282 -239
  37. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  38. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +199 -168
  39. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +17 -10
  40. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +43 -16
  41. data/ext/java/nokogiri/internals/NokogiriDomParser.java +65 -50
  42. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  43. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +25 -18
  44. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -254
  45. data/ext/java/nokogiri/internals/NokogiriHelpers.java +738 -622
  46. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +186 -143
  47. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +83 -68
  48. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +66 -49
  49. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +86 -69
  50. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +44 -29
  51. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +118 -101
  52. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -24
  53. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +25 -17
  54. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +57 -42
  55. data/ext/java/nokogiri/internals/ParserContext.java +206 -179
  56. data/ext/java/nokogiri/internals/ReaderNode.java +478 -371
  57. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -707
  58. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +28 -19
  59. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  60. data/ext/java/nokogiri/internals/XmlDeclHandler.java +5 -4
  61. data/ext/java/nokogiri/internals/XmlDomParserContext.java +208 -177
  62. data/ext/java/nokogiri/internals/XmlSaxParser.java +24 -17
  63. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +71 -68
  64. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +137 -118
  65. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +27 -21
  66. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +74 -61
  67. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +230 -205
  68. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +572 -547
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +17 -10
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +17 -10
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +323 -302
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +232 -219
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +22 -15
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +23 -16
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +23 -16
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +22 -15
  77. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +575 -545
  78. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +141 -120
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +39 -38
  80. data/ext/java/nokogiri/internals/c14n/Constants.java +13 -10
  81. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +279 -247
  82. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +66 -53
  83. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +44 -37
  84. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +135 -120
  85. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +59 -48
  86. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +384 -334
  87. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +25 -24
  88. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +151 -140
  89. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +456 -423
  90. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1466 -1500
  91. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +626 -570
  92. data/ext/nokogiri/depend +34 -474
  93. data/ext/nokogiri/extconf.rb +253 -183
  94. data/ext/nokogiri/html_document.c +10 -15
  95. data/ext/nokogiri/html_element_description.c +84 -71
  96. data/ext/nokogiri/html_entity_lookup.c +21 -16
  97. data/ext/nokogiri/html_sax_parser_context.c +66 -65
  98. data/ext/nokogiri/html_sax_push_parser.c +29 -27
  99. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  100. data/ext/nokogiri/nokogiri.c +171 -63
  101. data/ext/nokogiri/test_global_handlers.c +3 -4
  102. data/ext/nokogiri/xml_attr.c +15 -15
  103. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  104. data/ext/nokogiri/xml_cdata.c +13 -18
  105. data/ext/nokogiri/xml_comment.c +19 -26
  106. data/ext/nokogiri/xml_document.c +221 -164
  107. data/ext/nokogiri/xml_document_fragment.c +13 -15
  108. data/ext/nokogiri/xml_dtd.c +54 -48
  109. data/ext/nokogiri/xml_element_content.c +30 -27
  110. data/ext/nokogiri/xml_element_decl.c +22 -22
  111. data/ext/nokogiri/xml_encoding_handler.c +17 -11
  112. data/ext/nokogiri/xml_entity_decl.c +32 -30
  113. data/ext/nokogiri/xml_entity_reference.c +16 -18
  114. data/ext/nokogiri/xml_namespace.c +56 -49
  115. data/ext/nokogiri/xml_node.c +338 -286
  116. data/ext/nokogiri/xml_node_set.c +168 -156
  117. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  118. data/ext/nokogiri/xml_reader.c +191 -157
  119. data/ext/nokogiri/xml_relax_ng.c +29 -23
  120. data/ext/nokogiri/xml_sax_parser.c +117 -112
  121. data/ext/nokogiri/xml_sax_parser_context.c +100 -85
  122. data/ext/nokogiri/xml_sax_push_parser.c +34 -27
  123. data/ext/nokogiri/xml_schema.c +48 -42
  124. data/ext/nokogiri/xml_syntax_error.c +21 -23
  125. data/ext/nokogiri/xml_text.c +13 -17
  126. data/ext/nokogiri/xml_xpath_context.c +134 -127
  127. data/ext/nokogiri/xslt_stylesheet.c +157 -157
  128. data/lib/nokogiri.rb +1 -22
  129. data/lib/nokogiri/css/parser.rb +1 -1
  130. data/lib/nokogiri/extension.rb +26 -0
  131. data/lib/nokogiri/html/document_fragment.rb +15 -15
  132. data/lib/nokogiri/nokogiri.jar +0 -0
  133. data/lib/nokogiri/version/constant.rb +1 -1
  134. data/lib/nokogiri/version/info.rb +31 -8
  135. data/lib/nokogiri/xml/document.rb +31 -11
  136. data/lib/nokogiri/xml/node.rb +38 -42
  137. data/lib/nokogiri/xml/reader.rb +2 -9
  138. data/lib/nokogiri/xml/xpath.rb +1 -3
  139. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  140. metadata +7 -8
  141. data/ext/nokogiri/xml_io.c +0 -63
  142. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
@@ -17,10 +17,10 @@
17
17
  * distribute, sublicense, and/or sell copies of the Software, and to
18
18
  * permit persons to whom the Software is furnished to do so, subject to
19
19
  * the following conditions:
20
- *
20
+ *
21
21
  * The above copyright notice and this permission notice shall be
22
22
  * included in all copies or substantial portions of the Software.
23
- *
23
+ *
24
24
  * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
25
25
  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
26
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -42,24 +42,31 @@ import org.apache.xerces.xni.XNIException;
42
42
  *
43
43
  * @author Patrick Mahoney <pat@polycrystal.org>
44
44
  */
45
- public class XmlSaxParser extends SAXParser {
45
+ public class XmlSaxParser extends SAXParser
46
+ {
46
47
 
47
- protected XmlDeclHandler xmlDeclHandler = null;
48
+ protected XmlDeclHandler xmlDeclHandler = null;
48
49
 
49
- public XmlSaxParser() {
50
- super();
51
- }
50
+ public
51
+ XmlSaxParser()
52
+ {
53
+ super();
54
+ }
52
55
 
53
- public void setXmlDeclHandler(XmlDeclHandler xmlDeclHandler) {
54
- this.xmlDeclHandler = xmlDeclHandler;
55
- }
56
+ public void
57
+ setXmlDeclHandler(XmlDeclHandler xmlDeclHandler)
58
+ {
59
+ this.xmlDeclHandler = xmlDeclHandler;
60
+ }
56
61
 
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
- }
62
+ @Override
63
+ public void
64
+ xmlDecl(String version, String encoding, String standalone,
65
+ Augmentations augs) throws XNIException
66
+ {
67
+ super.xmlDecl(version, encoding, standalone, augs);
68
+ if (xmlDeclHandler != null) {
69
+ xmlDeclHandler.xmlDecl(version, encoding, standalone);
64
70
  }
71
+ }
65
72
  }
@@ -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
  }