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