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