nokogiri 1.11.0.rc1-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 (188) 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 +171 -94
  6. data/ext/java/nokogiri/EncodingHandler.java +78 -59
  7. data/ext/java/nokogiri/HtmlDocument.java +137 -114
  8. data/ext/java/nokogiri/HtmlElementDescription.java +104 -87
  9. data/ext/java/nokogiri/HtmlEntityLookup.java +31 -26
  10. data/ext/java/nokogiri/HtmlSaxParserContext.java +220 -192
  11. data/ext/java/nokogiri/HtmlSaxPushParser.java +164 -139
  12. data/ext/java/nokogiri/NokogiriService.java +597 -526
  13. data/ext/java/nokogiri/XmlAttr.java +120 -96
  14. data/ext/java/nokogiri/XmlAttributeDecl.java +97 -76
  15. data/ext/java/nokogiri/XmlCdata.java +35 -26
  16. data/ext/java/nokogiri/XmlComment.java +48 -37
  17. data/ext/java/nokogiri/XmlDocument.java +642 -540
  18. data/ext/java/nokogiri/XmlDocumentFragment.java +127 -107
  19. data/ext/java/nokogiri/XmlDtd.java +450 -384
  20. data/ext/java/nokogiri/XmlElement.java +25 -18
  21. data/ext/java/nokogiri/XmlElementContent.java +345 -286
  22. data/ext/java/nokogiri/XmlElementDecl.java +126 -95
  23. data/ext/java/nokogiri/XmlEntityDecl.java +121 -97
  24. data/ext/java/nokogiri/XmlEntityReference.java +51 -42
  25. data/ext/java/nokogiri/XmlNamespace.java +177 -145
  26. data/ext/java/nokogiri/XmlNode.java +1843 -1590
  27. data/ext/java/nokogiri/XmlNodeSet.java +361 -299
  28. data/ext/java/nokogiri/XmlProcessingInstruction.java +49 -39
  29. data/ext/java/nokogiri/XmlReader.java +513 -418
  30. data/ext/java/nokogiri/XmlRelaxng.java +92 -72
  31. data/ext/java/nokogiri/XmlSaxParserContext.java +330 -280
  32. data/ext/java/nokogiri/XmlSaxPushParser.java +229 -190
  33. data/ext/java/nokogiri/XmlSchema.java +335 -210
  34. data/ext/java/nokogiri/XmlSyntaxError.java +113 -87
  35. data/ext/java/nokogiri/XmlText.java +57 -46
  36. data/ext/java/nokogiri/XmlXpathContext.java +242 -178
  37. data/ext/java/nokogiri/XsltStylesheet.java +282 -239
  38. data/ext/java/nokogiri/internals/ClosedStreamException.java +5 -2
  39. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +203 -160
  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 +65 -50
  43. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +107 -88
  44. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +25 -18
  45. data/ext/java/nokogiri/internals/NokogiriHandler.java +316 -254
  46. data/ext/java/nokogiri/internals/NokogiriHelpers.java +738 -622
  47. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +186 -143
  48. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +81 -59
  49. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +66 -49
  50. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +86 -69
  51. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +44 -29
  52. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +121 -48
  53. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +34 -22
  54. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +25 -17
  55. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +57 -42
  56. data/ext/java/nokogiri/internals/ParserContext.java +206 -179
  57. data/ext/java/nokogiri/internals/ReaderNode.java +478 -371
  58. data/ext/java/nokogiri/internals/SaveContextVisitor.java +822 -707
  59. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +28 -19
  60. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +129 -123
  61. data/ext/java/nokogiri/internals/XmlDeclHandler.java +5 -4
  62. data/ext/java/nokogiri/internals/XmlDomParserContext.java +208 -177
  63. data/ext/java/nokogiri/internals/XmlSaxParser.java +24 -17
  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 -570
  93. data/ext/nokogiri/depend +37 -358
  94. data/ext/nokogiri/extconf.rb +585 -374
  95. data/ext/nokogiri/html_document.c +78 -82
  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 +69 -66
  99. data/ext/nokogiri/html_sax_push_parser.c +42 -34
  100. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  101. data/ext/nokogiri/nokogiri.c +192 -93
  102. data/ext/nokogiri/test_global_handlers.c +40 -0
  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 +225 -163
  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 +338 -286
  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 +195 -172
  120. data/ext/nokogiri/xml_relax_ng.c +52 -28
  121. data/ext/nokogiri/xml_sax_parser.c +118 -118
  122. data/ext/nokogiri/xml_sax_parser_context.c +103 -86
  123. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  124. data/ext/nokogiri/xml_schema.c +111 -34
  125. data/ext/nokogiri/xml_syntax_error.c +42 -21
  126. data/ext/nokogiri/xml_text.c +13 -17
  127. data/ext/nokogiri/xml_xpath_context.c +206 -123
  128. data/ext/nokogiri/xslt_stylesheet.c +158 -161
  129. data/lib/nokogiri.rb +4 -8
  130. data/lib/nokogiri/css/parser.rb +62 -62
  131. data/lib/nokogiri/css/parser.y +2 -2
  132. data/lib/nokogiri/css/parser_extras.rb +38 -36
  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 -148
  139. data/lib/nokogiri/version/constant.rb +5 -0
  140. data/lib/nokogiri/version/info.rb +205 -0
  141. data/lib/nokogiri/xml/builder.rb +2 -2
  142. data/lib/nokogiri/xml/document.rb +48 -18
  143. data/lib/nokogiri/xml/document_fragment.rb +4 -6
  144. data/lib/nokogiri/xml/node.rb +599 -279
  145. data/lib/nokogiri/xml/parse_options.rb +6 -0
  146. data/lib/nokogiri/xml/reader.rb +2 -9
  147. data/lib/nokogiri/xml/relax_ng.rb +6 -2
  148. data/lib/nokogiri/xml/schema.rb +12 -4
  149. data/lib/nokogiri/xml/searchable.rb +24 -16
  150. data/lib/nokogiri/xml/xpath.rb +1 -3
  151. data/lib/nokogiri/xml/xpath/syntax_error.rb +1 -1
  152. metadata +87 -158
  153. data/ext/nokogiri/html_document.h +0 -10
  154. data/ext/nokogiri/html_element_description.h +0 -10
  155. data/ext/nokogiri/html_entity_lookup.h +0 -8
  156. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  157. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  158. data/ext/nokogiri/nokogiri.h +0 -122
  159. data/ext/nokogiri/xml_attr.h +0 -9
  160. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  161. data/ext/nokogiri/xml_cdata.h +0 -9
  162. data/ext/nokogiri/xml_comment.h +0 -9
  163. data/ext/nokogiri/xml_document.h +0 -23
  164. data/ext/nokogiri/xml_document_fragment.h +0 -10
  165. data/ext/nokogiri/xml_dtd.h +0 -10
  166. data/ext/nokogiri/xml_element_content.h +0 -10
  167. data/ext/nokogiri/xml_element_decl.h +0 -9
  168. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  169. data/ext/nokogiri/xml_entity_decl.h +0 -10
  170. data/ext/nokogiri/xml_entity_reference.h +0 -9
  171. data/ext/nokogiri/xml_io.c +0 -61
  172. data/ext/nokogiri/xml_io.h +0 -11
  173. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  174. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  175. data/ext/nokogiri/xml_namespace.h +0 -14
  176. data/ext/nokogiri/xml_node.h +0 -13
  177. data/ext/nokogiri/xml_node_set.h +0 -12
  178. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  179. data/ext/nokogiri/xml_reader.h +0 -10
  180. data/ext/nokogiri/xml_relax_ng.h +0 -9
  181. data/ext/nokogiri/xml_sax_parser.h +0 -39
  182. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  183. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  184. data/ext/nokogiri/xml_schema.h +0 -9
  185. data/ext/nokogiri/xml_syntax_error.h +0 -13
  186. data/ext/nokogiri/xml_text.h +0 -9
  187. data/ext/nokogiri/xml_xpath_context.h +0 -10
  188. data/ext/nokogiri/xslt_stylesheet.h +0 -14
@@ -45,251 +45,264 @@ import org.w3c.dom.Node;
45
45
  * @see <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/ Exclusive#">
46
46
  * XML Canonicalization, Version 1.0</a>
47
47
  */
48
- public abstract class Canonicalizer20010315Excl extends CanonicalizerBase {
48
+ public abstract class Canonicalizer20010315Excl extends CanonicalizerBase
49
+ {
49
50
 
50
- private static final String XML_LANG_URI = Constants.XML_LANG_SPACE_SpecNS;
51
- private static final String XMLNS_URI = Constants.NamespaceSpecNS;
51
+ private static final String XML_LANG_URI = Constants.XML_LANG_SPACE_SpecNS;
52
+ private static final String XMLNS_URI = Constants.NamespaceSpecNS;
52
53
 
53
- /**
54
- * This Set contains the names (Strings like "xmlns" or "xmlns:foo") of
55
- * the inclusive namespaces.
56
- */
57
- private SortedSet<String> inclusiveNSSet;
54
+ /**
55
+ * This Set contains the names (Strings like "xmlns" or "xmlns:foo") of
56
+ * the inclusive namespaces.
57
+ */
58
+ private SortedSet<String> inclusiveNSSet;
58
59
 
59
- private final SortedSet<Attr> result = new TreeSet<Attr>(COMPARE);
60
+ private final SortedSet<Attr> result = new TreeSet<Attr>(COMPARE);
60
61
 
61
- /**
62
- * Constructor Canonicalizer20010315Excl
63
- *
64
- * @param includeComments
65
- */
66
- public Canonicalizer20010315Excl(boolean includeComments) {
67
- super(includeComments);
68
- }
62
+ /**
63
+ * Constructor Canonicalizer20010315Excl
64
+ *
65
+ * @param includeComments
66
+ */
67
+ public
68
+ Canonicalizer20010315Excl(boolean includeComments)
69
+ {
70
+ super(includeComments);
71
+ }
69
72
 
70
- /**
71
- * Method engineCanonicalizeSubTree
72
- * @inheritDoc
73
- * @param rootNode
74
- *
75
- * @throws CanonicalizationException
76
- */
77
- @Override
78
- public byte[] engineCanonicalizeSubTree(Node rootNode, CanonicalFilter filter)
79
- throws CanonicalizationException {
80
- return engineCanonicalizeSubTree(rootNode, "", null);
81
- }
73
+ /**
74
+ * Method engineCanonicalizeSubTree
75
+ * @inheritDoc
76
+ * @param rootNode
77
+ *
78
+ * @throws CanonicalizationException
79
+ */
80
+ @Override
81
+ public byte[]
82
+ engineCanonicalizeSubTree(Node rootNode, CanonicalFilter filter)
83
+ throws CanonicalizationException
84
+ {
85
+ return engineCanonicalizeSubTree(rootNode, "", null);
86
+ }
82
87
 
83
- /**
84
- * Method engineCanonicalizeSubTree
85
- * @inheritDoc
86
- * @param rootNode
87
- * @param inclusiveNamespaces
88
- *
89
- * @throws CanonicalizationException
90
- */
91
- @Override
92
- public byte[] engineCanonicalizeSubTree(
93
- Node rootNode, String inclusiveNamespaces, CanonicalFilter filter
94
- ) throws CanonicalizationException {
95
- return engineCanonicalizeSubTree(rootNode, inclusiveNamespaces, null, filter);
96
- }
88
+ /**
89
+ * Method engineCanonicalizeSubTree
90
+ * @inheritDoc
91
+ * @param rootNode
92
+ * @param inclusiveNamespaces
93
+ *
94
+ * @throws CanonicalizationException
95
+ */
96
+ @Override
97
+ public byte[]
98
+ engineCanonicalizeSubTree(
99
+ Node rootNode, String inclusiveNamespaces, CanonicalFilter filter
100
+ ) throws CanonicalizationException
101
+ {
102
+ return engineCanonicalizeSubTree(rootNode, inclusiveNamespaces, null, filter);
103
+ }
97
104
 
98
- /**
99
- * Method engineCanonicalizeSubTree
100
- * @param rootNode
101
- * @param inclusiveNamespaces
102
- * @param excl A element to exclude from the c14n process.
103
- * @return the rootNode c14n.
104
- * @throws CanonicalizationException
105
- */
106
- public byte[] engineCanonicalizeSubTree(
107
- Node rootNode, String inclusiveNamespaces, Node excl, CanonicalFilter filter
108
- ) throws CanonicalizationException{
109
- inclusiveNSSet = InclusiveNamespaces.prefixStr2Set(inclusiveNamespaces);
110
- return super.engineCanonicalizeSubTree(rootNode, excl, filter);
111
- }
105
+ /**
106
+ * Method engineCanonicalizeSubTree
107
+ * @param rootNode
108
+ * @param inclusiveNamespaces
109
+ * @param excl A element to exclude from the c14n process.
110
+ * @return the rootNode c14n.
111
+ * @throws CanonicalizationException
112
+ */
113
+ public byte[]
114
+ engineCanonicalizeSubTree(
115
+ Node rootNode, String inclusiveNamespaces, Node excl, CanonicalFilter filter
116
+ ) throws CanonicalizationException
117
+ {
118
+ inclusiveNSSet = InclusiveNamespaces.prefixStr2Set(inclusiveNamespaces);
119
+ return super.engineCanonicalizeSubTree(rootNode, excl, filter);
120
+ }
112
121
 
113
- @Override
114
- protected Iterator<Attr> handleAttributesSubtree(Element element, NameSpaceSymbTable ns)
115
- throws CanonicalizationException {
116
- // result will contain the attrs which have to be output
117
- final SortedSet<Attr> result = this.result;
118
- result.clear();
122
+ @Override
123
+ protected Iterator<Attr>
124
+ handleAttributesSubtree(Element element, NameSpaceSymbTable ns)
125
+ throws CanonicalizationException
126
+ {
127
+ // result will contain the attrs which have to be output
128
+ final SortedSet<Attr> result = this.result;
129
+ result.clear();
119
130
 
120
- // The prefix visibly utilized (in the attribute or in the name) in
121
- // the element
122
- SortedSet<String> visiblyUtilized = new TreeSet<String>();
123
- if (inclusiveNSSet != null && !inclusiveNSSet.isEmpty()) {
124
- visiblyUtilized.addAll(inclusiveNSSet);
125
- }
131
+ // The prefix visibly utilized (in the attribute or in the name) in
132
+ // the element
133
+ SortedSet<String> visiblyUtilized = new TreeSet<String>();
134
+ if (inclusiveNSSet != null && !inclusiveNSSet.isEmpty()) {
135
+ visiblyUtilized.addAll(inclusiveNSSet);
136
+ }
126
137
 
127
- if (element.hasAttributes()) {
128
- NamedNodeMap attrs = element.getAttributes();
129
- int attrsLength = attrs.getLength();
130
- for (int i = 0; i < attrsLength; i++) {
131
- Attr attribute = (Attr) attrs.item(i);
132
- String NName = attribute.getLocalName();
133
- String NNodeValue = attribute.getNodeValue();
138
+ if (element.hasAttributes()) {
139
+ NamedNodeMap attrs = element.getAttributes();
140
+ int attrsLength = attrs.getLength();
141
+ for (int i = 0; i < attrsLength; i++) {
142
+ Attr attribute = (Attr) attrs.item(i);
143
+ String NName = attribute.getLocalName();
144
+ String NNodeValue = attribute.getNodeValue();
134
145
 
135
- if (!XMLNS_URI.equals(attribute.getNamespaceURI())) {
136
- // Not a namespace definition.
137
- // The Element is output element, add the prefix (if used) to
138
- // visiblyUtilized
139
- String prefix = attribute.getPrefix();
140
- if (prefix != null && !(prefix.equals(XML) || prefix.equals(XMLNS))) {
141
- visiblyUtilized.add(prefix);
142
- }
143
- // Add to the result.
144
- result.add(attribute);
145
- } else if (!(XML.equals(NName) && XML_LANG_URI.equals(NNodeValue))
146
- && ns.addMapping(NName, NNodeValue, attribute)
147
- && C14nHelper.namespaceIsRelative(NNodeValue)) {
148
- // The default mapping for xml must not be output.
149
- // New definition check if it is relative.
150
- Object exArgs[] = {element.getTagName(), NName, attribute.getNodeValue()};
151
- throw new CanonicalizationException(
152
- "c14n.Canonicalizer.RelativeNamespace", exArgs
153
- );
154
- }
155
- }
156
- }
157
- String prefix;
158
- if (element.getNamespaceURI() != null
159
- && !(element.getPrefix() == null || element.getPrefix().length() == 0)) {
160
- prefix = element.getPrefix();
161
- } else {
162
- prefix = XMLNS;
163
- }
164
- visiblyUtilized.add(prefix);
165
-
166
- for (String s : visiblyUtilized) {
167
- Attr key = ns.getMapping(s);
168
- if (key != null) {
169
- result.add(key);
170
- }
146
+ if (!XMLNS_URI.equals(attribute.getNamespaceURI())) {
147
+ // Not a namespace definition.
148
+ // The Element is output element, add the prefix (if used) to
149
+ // visiblyUtilized
150
+ String prefix = attribute.getPrefix();
151
+ if (prefix != null && !(prefix.equals(XML) || prefix.equals(XMLNS))) {
152
+ visiblyUtilized.add(prefix);
153
+ }
154
+ // Add to the result.
155
+ result.add(attribute);
156
+ } else if (!(XML.equals(NName) && XML_LANG_URI.equals(NNodeValue))
157
+ && ns.addMapping(NName, NNodeValue, attribute)
158
+ && C14nHelper.namespaceIsRelative(NNodeValue)) {
159
+ // The default mapping for xml must not be output.
160
+ // New definition check if it is relative.
161
+ Object exArgs[] = {element.getTagName(), NName, attribute.getNodeValue()};
162
+ throw new CanonicalizationException(
163
+ "c14n.Canonicalizer.RelativeNamespace", exArgs
164
+ );
171
165
  }
172
-
173
- return result.iterator();
166
+ }
174
167
  }
168
+ String prefix;
169
+ if (element.getNamespaceURI() != null
170
+ && !(element.getPrefix() == null || element.getPrefix().length() == 0)) {
171
+ prefix = element.getPrefix();
172
+ } else {
173
+ prefix = XMLNS;
174
+ }
175
+ visiblyUtilized.add(prefix);
175
176
 
176
- /**
177
- * @inheritDoc
178
- * @param element
179
- * @throws CanonicalizationException
180
- */
181
- @Override
182
- protected final Iterator<Attr> handleAttributes(Element element, NameSpaceSymbTable ns)
183
- throws CanonicalizationException {
184
- // result will contain the attrs which have to be output
185
- final SortedSet<Attr> result = this.result;
186
- result.clear();
177
+ for (String s : visiblyUtilized) {
178
+ Attr key = ns.getMapping(s);
179
+ if (key != null) {
180
+ result.add(key);
181
+ }
182
+ }
187
183
 
188
- // The prefix visibly utilized (in the attribute or in the name) in
189
- // the element
190
- Set<String> visiblyUtilized = null;
191
- // It's the output selected.
192
- boolean isOutputElement = isVisibleDO(element, ns.getLevel()) == 1;
193
- if (isOutputElement) {
194
- visiblyUtilized = new TreeSet<String>();
195
- if (inclusiveNSSet != null && !inclusiveNSSet.isEmpty()) {
196
- visiblyUtilized.addAll(inclusiveNSSet);
197
- }
198
- }
184
+ return result.iterator();
185
+ }
199
186
 
200
- if (element.hasAttributes()) {
201
- NamedNodeMap attrs = element.getAttributes();
202
- int attrsLength = attrs.getLength();
203
- for (int i = 0; i < attrsLength; i++) {
204
- Attr attribute = (Attr) attrs.item(i);
187
+ /**
188
+ * @inheritDoc
189
+ * @param element
190
+ * @throws CanonicalizationException
191
+ */
192
+ @Override
193
+ protected final Iterator<Attr>
194
+ handleAttributes(Element element, NameSpaceSymbTable ns)
195
+ throws CanonicalizationException
196
+ {
197
+ // result will contain the attrs which have to be output
198
+ final SortedSet<Attr> result = this.result;
199
+ result.clear();
205
200
 
206
- String NName = attribute.getLocalName();
207
- String NNodeValue = attribute.getNodeValue();
201
+ // The prefix visibly utilized (in the attribute or in the name) in
202
+ // the element
203
+ Set<String> visiblyUtilized = null;
204
+ // It's the output selected.
205
+ boolean isOutputElement = isVisibleDO(element, ns.getLevel()) == 1;
206
+ if (isOutputElement) {
207
+ visiblyUtilized = new TreeSet<String>();
208
+ if (inclusiveNSSet != null && !inclusiveNSSet.isEmpty()) {
209
+ visiblyUtilized.addAll(inclusiveNSSet);
210
+ }
211
+ }
208
212
 
209
- if (!XMLNS_URI.equals(attribute.getNamespaceURI())) {
210
- if (isVisible(attribute) && isOutputElement) {
211
- // The Element is output element, add the prefix (if used)
212
- // to visibyUtilized
213
- String prefix = attribute.getPrefix();
214
- if (prefix != null && !(prefix.equals(XML) || prefix.equals(XMLNS))) {
215
- visiblyUtilized.add(prefix);
216
- }
217
- // Add to the result.
218
- result.add(attribute);
219
- }
220
- } else if (isOutputElement && !isVisible(attribute) && !XMLNS.equals(NName)) {
221
- ns.removeMappingIfNotRender(NName);
222
- } else {
223
- if (!isOutputElement && isVisible(attribute)
224
- && inclusiveNSSet.contains(NName)
225
- && !ns.removeMappingIfRender(NName)) {
226
- Node n = ns.addMappingAndRender(NName, NNodeValue, attribute);
227
- if (n != null) {
228
- result.add((Attr)n);
229
- if (C14nHelper.namespaceIsRelative(attribute)) {
230
- Object exArgs[] = { element.getTagName(), NName, attribute.getNodeValue() };
231
- throw new CanonicalizationException(
232
- "c14n.Canonicalizer.RelativeNamespace", exArgs
233
- );
234
- }
235
- }
236
- }
213
+ if (element.hasAttributes()) {
214
+ NamedNodeMap attrs = element.getAttributes();
215
+ int attrsLength = attrs.getLength();
216
+ for (int i = 0; i < attrsLength; i++) {
217
+ Attr attribute = (Attr) attrs.item(i);
237
218
 
238
- if (ns.addMapping(NName, NNodeValue, attribute)
239
- && C14nHelper.namespaceIsRelative(NNodeValue)) {
240
- // New definition check if it is relative
241
- Object exArgs[] = { element.getTagName(), NName, attribute.getNodeValue() };
242
- throw new CanonicalizationException(
243
- "c14n.Canonicalizer.RelativeNamespace", exArgs
244
- );
245
- }
246
- }
247
- }
248
- }
219
+ String NName = attribute.getLocalName();
220
+ String NNodeValue = attribute.getNodeValue();
249
221
 
250
- if (isOutputElement) {
251
- // The element is visible, handle the xmlns definition
252
- Attr xmlns = element.getAttributeNodeNS(XMLNS_URI, XMLNS);
253
- if (xmlns != null && !isVisible(xmlns)) {
254
- // There is a definition but the xmlns is not selected by the
255
- // xpath. then xmlns=""
256
- ns.addMapping(XMLNS, "", nullNode);
222
+ if (!XMLNS_URI.equals(attribute.getNamespaceURI())) {
223
+ if (isVisible(attribute) && isOutputElement) {
224
+ // The Element is output element, add the prefix (if used)
225
+ // to visibyUtilized
226
+ String prefix = attribute.getPrefix();
227
+ if (prefix != null && !(prefix.equals(XML) || prefix.equals(XMLNS))) {
228
+ visiblyUtilized.add(prefix);
257
229
  }
258
-
259
- String prefix;
260
- if (element.getNamespaceURI() != null
261
- && !(element.getPrefix() == null || element.getPrefix().length() == 0)) {
262
- prefix = element.getPrefix();
263
- } else {
264
- prefix = XMLNS;
230
+ // Add to the result.
231
+ result.add(attribute);
232
+ }
233
+ } else if (isOutputElement && !isVisible(attribute) && !XMLNS.equals(NName)) {
234
+ ns.removeMappingIfNotRender(NName);
235
+ } else {
236
+ if (!isOutputElement && isVisible(attribute)
237
+ && inclusiveNSSet.contains(NName)
238
+ && !ns.removeMappingIfRender(NName)) {
239
+ Node n = ns.addMappingAndRender(NName, NNodeValue, attribute);
240
+ if (n != null) {
241
+ result.add((Attr)n);
242
+ if (C14nHelper.namespaceIsRelative(attribute)) {
243
+ Object exArgs[] = { element.getTagName(), NName, attribute.getNodeValue() };
244
+ throw new CanonicalizationException(
245
+ "c14n.Canonicalizer.RelativeNamespace", exArgs
246
+ );
247
+ }
265
248
  }
266
- visiblyUtilized.add(prefix);
249
+ }
267
250
 
268
- for (String s : visiblyUtilized) {
269
- Attr key = ns.getMapping(s);
270
- if (key != null) {
271
- result.add(key);
272
- }
273
- }
251
+ if (ns.addMapping(NName, NNodeValue, attribute)
252
+ && C14nHelper.namespaceIsRelative(NNodeValue)) {
253
+ // New definition check if it is relative
254
+ Object exArgs[] = { element.getTagName(), NName, attribute.getNodeValue() };
255
+ throw new CanonicalizationException(
256
+ "c14n.Canonicalizer.RelativeNamespace", exArgs
257
+ );
258
+ }
274
259
  }
275
-
276
- return result.iterator();
260
+ }
277
261
  }
278
262
 
279
- /*
280
- protected void circumventBugIfNeeded(XMLSignatureInput input)
281
- throws CanonicalizationException, ParserConfigurationException,
282
- IOException, SAXException {
283
- if (!input.isNeedsToBeExpanded() || inclusiveNSSet.isEmpty() || inclusiveNSSet.isEmpty()) {
284
- return;
285
- }
286
- Document doc = null;
287
- if (input.getSubNode() != null) {
288
- doc = XMLUtils.getOwnerDocument(input.getSubNode());
289
- } else {
290
- doc = XMLUtils.getOwnerDocument(input.getNodeSet());
263
+ if (isOutputElement) {
264
+ // The element is visible, handle the xmlns definition
265
+ Attr xmlns = element.getAttributeNodeNS(XMLNS_URI, XMLNS);
266
+ if (xmlns != null && !isVisible(xmlns)) {
267
+ // There is a definition but the xmlns is not selected by the
268
+ // xpath. then xmlns=""
269
+ ns.addMapping(XMLNS, "", nullNode);
270
+ }
271
+
272
+ String prefix;
273
+ if (element.getNamespaceURI() != null
274
+ && !(element.getPrefix() == null || element.getPrefix().length() == 0)) {
275
+ prefix = element.getPrefix();
276
+ } else {
277
+ prefix = XMLNS;
278
+ }
279
+ visiblyUtilized.add(prefix);
280
+
281
+ for (String s : visiblyUtilized) {
282
+ Attr key = ns.getMapping(s);
283
+ if (key != null) {
284
+ result.add(key);
291
285
  }
292
- XMLUtils.circumventBug2650(doc);
286
+ }
293
287
  }
294
- */
288
+
289
+ return result.iterator();
290
+ }
291
+
292
+ /*
293
+ protected void circumventBugIfNeeded(XMLSignatureInput input)
294
+ throws CanonicalizationException, ParserConfigurationException,
295
+ IOException, SAXException {
296
+ if (!input.isNeedsToBeExpanded() || inclusiveNSSet.isEmpty() || inclusiveNSSet.isEmpty()) {
297
+ return;
298
+ }
299
+ Document doc = null;
300
+ if (input.getSubNode() != null) {
301
+ doc = XMLUtils.getOwnerDocument(input.getSubNode());
302
+ } else {
303
+ doc = XMLUtils.getOwnerDocument(input.getNodeSet());
304
+ }
305
+ XMLUtils.circumventBug2650(doc);
306
+ }
307
+ */
295
308
  }