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
@@ -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
  }