Nokogiri_precompiled_aarch64_dedshit 1.14.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +44 -0
  3. data/LICENSE-DEPENDENCIES.md +2224 -0
  4. data/LICENSE.md +9 -0
  5. data/README.md +287 -0
  6. data/bin/nokogiri +131 -0
  7. data/dependencies.yml +41 -0
  8. data/ext/java/nokogiri/Html4Document.java +157 -0
  9. data/ext/java/nokogiri/Html4ElementDescription.java +133 -0
  10. data/ext/java/nokogiri/Html4EntityLookup.java +63 -0
  11. data/ext/java/nokogiri/Html4SaxParserContext.java +289 -0
  12. data/ext/java/nokogiri/Html4SaxPushParser.java +213 -0
  13. data/ext/java/nokogiri/NokogiriService.java +613 -0
  14. data/ext/java/nokogiri/XmlAttr.java +154 -0
  15. data/ext/java/nokogiri/XmlAttributeDecl.java +119 -0
  16. data/ext/java/nokogiri/XmlCdata.java +60 -0
  17. data/ext/java/nokogiri/XmlComment.java +77 -0
  18. data/ext/java/nokogiri/XmlDocument.java +705 -0
  19. data/ext/java/nokogiri/XmlDocumentFragment.java +163 -0
  20. data/ext/java/nokogiri/XmlDtd.java +516 -0
  21. data/ext/java/nokogiri/XmlElement.java +44 -0
  22. data/ext/java/nokogiri/XmlElementContent.java +412 -0
  23. data/ext/java/nokogiri/XmlElementDecl.java +148 -0
  24. data/ext/java/nokogiri/XmlEntityDecl.java +151 -0
  25. data/ext/java/nokogiri/XmlEntityReference.java +79 -0
  26. data/ext/java/nokogiri/XmlNamespace.java +193 -0
  27. data/ext/java/nokogiri/XmlNode.java +1938 -0
  28. data/ext/java/nokogiri/XmlNodeSet.java +463 -0
  29. data/ext/java/nokogiri/XmlProcessingInstruction.java +79 -0
  30. data/ext/java/nokogiri/XmlReader.java +615 -0
  31. data/ext/java/nokogiri/XmlRelaxng.java +133 -0
  32. data/ext/java/nokogiri/XmlSaxParserContext.java +329 -0
  33. data/ext/java/nokogiri/XmlSaxPushParser.java +288 -0
  34. data/ext/java/nokogiri/XmlSchema.java +423 -0
  35. data/ext/java/nokogiri/XmlSyntaxError.java +137 -0
  36. data/ext/java/nokogiri/XmlText.java +90 -0
  37. data/ext/java/nokogiri/XmlXpathContext.java +305 -0
  38. data/ext/java/nokogiri/XsltStylesheet.java +368 -0
  39. data/ext/java/nokogiri/internals/ClosedStreamException.java +13 -0
  40. data/ext/java/nokogiri/internals/HtmlDomParserContext.java +252 -0
  41. data/ext/java/nokogiri/internals/IgnoreSchemaErrorsErrorHandler.java +27 -0
  42. data/ext/java/nokogiri/internals/NokogiriBlockingQueueInputStream.java +178 -0
  43. data/ext/java/nokogiri/internals/NokogiriDomParser.java +99 -0
  44. data/ext/java/nokogiri/internals/NokogiriEntityResolver.java +140 -0
  45. data/ext/java/nokogiri/internals/NokogiriErrorHandler.java +65 -0
  46. data/ext/java/nokogiri/internals/NokogiriHandler.java +339 -0
  47. data/ext/java/nokogiri/internals/NokogiriHelpers.java +817 -0
  48. data/ext/java/nokogiri/internals/NokogiriNamespaceCache.java +228 -0
  49. data/ext/java/nokogiri/internals/NokogiriNamespaceContext.java +110 -0
  50. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler.java +86 -0
  51. data/ext/java/nokogiri/internals/NokogiriNonStrictErrorHandler4NekoHtml.java +107 -0
  52. data/ext/java/nokogiri/internals/NokogiriStrictErrorHandler.java +62 -0
  53. data/ext/java/nokogiri/internals/NokogiriXPathFunction.java +165 -0
  54. data/ext/java/nokogiri/internals/NokogiriXPathFunctionResolver.java +50 -0
  55. data/ext/java/nokogiri/internals/NokogiriXPathVariableResolver.java +37 -0
  56. data/ext/java/nokogiri/internals/NokogiriXsltErrorListener.java +70 -0
  57. data/ext/java/nokogiri/internals/ParserContext.java +262 -0
  58. data/ext/java/nokogiri/internals/ReaderNode.java +564 -0
  59. data/ext/java/nokogiri/internals/SaveContextVisitor.java +865 -0
  60. data/ext/java/nokogiri/internals/SchemaErrorHandler.java +50 -0
  61. data/ext/java/nokogiri/internals/XalanDTMManagerPatch.java +174 -0
  62. data/ext/java/nokogiri/internals/XmlDeclHandler.java +11 -0
  63. data/ext/java/nokogiri/internals/XmlDomParserContext.java +265 -0
  64. data/ext/java/nokogiri/internals/XmlSaxParser.java +40 -0
  65. data/ext/java/nokogiri/internals/c14n/AttrCompare.java +122 -0
  66. data/ext/java/nokogiri/internals/c14n/C14nHelper.java +178 -0
  67. data/ext/java/nokogiri/internals/c14n/CanonicalFilter.java +43 -0
  68. data/ext/java/nokogiri/internals/c14n/CanonicalizationException.java +106 -0
  69. data/ext/java/nokogiri/internals/c14n/Canonicalizer.java +278 -0
  70. data/ext/java/nokogiri/internals/c14n/Canonicalizer11.java +664 -0
  71. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_OmitComments.java +45 -0
  72. data/ext/java/nokogiri/internals/c14n/Canonicalizer11_WithComments.java +45 -0
  73. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315.java +388 -0
  74. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315Excl.java +308 -0
  75. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclOmitComments.java +47 -0
  76. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315ExclWithComments.java +51 -0
  77. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315OmitComments.java +51 -0
  78. data/ext/java/nokogiri/internals/c14n/Canonicalizer20010315WithComments.java +50 -0
  79. data/ext/java/nokogiri/internals/c14n/CanonicalizerBase.java +660 -0
  80. data/ext/java/nokogiri/internals/c14n/CanonicalizerPhysical.java +194 -0
  81. data/ext/java/nokogiri/internals/c14n/CanonicalizerSpi.java +77 -0
  82. data/ext/java/nokogiri/internals/c14n/Constants.java +45 -0
  83. data/ext/java/nokogiri/internals/c14n/ElementProxy.java +325 -0
  84. data/ext/java/nokogiri/internals/c14n/HelperNodeList.java +106 -0
  85. data/ext/java/nokogiri/internals/c14n/IgnoreAllErrorHandler.java +86 -0
  86. data/ext/java/nokogiri/internals/c14n/InclusiveNamespaces.java +181 -0
  87. data/ext/java/nokogiri/internals/c14n/InvalidCanonicalizerException.java +87 -0
  88. data/ext/java/nokogiri/internals/c14n/NameSpaceSymbTable.java +452 -0
  89. data/ext/java/nokogiri/internals/c14n/NodeFilter.java +52 -0
  90. data/ext/java/nokogiri/internals/c14n/UtfHelpper.java +190 -0
  91. data/ext/java/nokogiri/internals/c14n/XMLUtils.java +540 -0
  92. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTM.java +1712 -0
  93. data/ext/java/nokogiri/internals/dom2dtm/DOM2DTMdefaultNamespaceDeclarationNode.java +737 -0
  94. data/ext/nokogiri/depend +38 -0
  95. data/ext/nokogiri/extconf.rb +1086 -0
  96. data/ext/nokogiri/gumbo.c +594 -0
  97. data/ext/nokogiri/html4_document.c +167 -0
  98. data/ext/nokogiri/html4_element_description.c +294 -0
  99. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  100. data/ext/nokogiri/html4_sax_parser_context.c +116 -0
  101. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  102. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  103. data/ext/nokogiri/nokogiri.c +265 -0
  104. data/ext/nokogiri/nokogiri.h +235 -0
  105. data/ext/nokogiri/test_global_handlers.c +42 -0
  106. data/ext/nokogiri/xml_attr.c +103 -0
  107. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  108. data/ext/nokogiri/xml_cdata.c +57 -0
  109. data/ext/nokogiri/xml_comment.c +62 -0
  110. data/ext/nokogiri/xml_document.c +689 -0
  111. data/ext/nokogiri/xml_document_fragment.c +44 -0
  112. data/ext/nokogiri/xml_dtd.c +210 -0
  113. data/ext/nokogiri/xml_element_content.c +128 -0
  114. data/ext/nokogiri/xml_element_decl.c +69 -0
  115. data/ext/nokogiri/xml_encoding_handler.c +104 -0
  116. data/ext/nokogiri/xml_entity_decl.c +112 -0
  117. data/ext/nokogiri/xml_entity_reference.c +50 -0
  118. data/ext/nokogiri/xml_namespace.c +186 -0
  119. data/ext/nokogiri/xml_node.c +2426 -0
  120. data/ext/nokogiri/xml_node_set.c +496 -0
  121. data/ext/nokogiri/xml_processing_instruction.c +54 -0
  122. data/ext/nokogiri/xml_reader.c +794 -0
  123. data/ext/nokogiri/xml_relax_ng.c +164 -0
  124. data/ext/nokogiri/xml_sax_parser.c +316 -0
  125. data/ext/nokogiri/xml_sax_parser_context.c +283 -0
  126. data/ext/nokogiri/xml_sax_push_parser.c +166 -0
  127. data/ext/nokogiri/xml_schema.c +260 -0
  128. data/ext/nokogiri/xml_syntax_error.c +85 -0
  129. data/ext/nokogiri/xml_text.c +48 -0
  130. data/ext/nokogiri/xml_xpath_context.c +415 -0
  131. data/ext/nokogiri/xslt_stylesheet.c +363 -0
  132. data/gumbo-parser/CHANGES.md +63 -0
  133. data/gumbo-parser/Makefile +111 -0
  134. data/gumbo-parser/THANKS +27 -0
  135. data/gumbo-parser/src/Makefile +34 -0
  136. data/gumbo-parser/src/README.md +41 -0
  137. data/gumbo-parser/src/ascii.c +75 -0
  138. data/gumbo-parser/src/ascii.h +115 -0
  139. data/gumbo-parser/src/attribute.c +42 -0
  140. data/gumbo-parser/src/attribute.h +17 -0
  141. data/gumbo-parser/src/char_ref.c +22225 -0
  142. data/gumbo-parser/src/char_ref.h +29 -0
  143. data/gumbo-parser/src/char_ref.rl +2154 -0
  144. data/gumbo-parser/src/error.c +626 -0
  145. data/gumbo-parser/src/error.h +148 -0
  146. data/gumbo-parser/src/foreign_attrs.c +104 -0
  147. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  148. data/gumbo-parser/src/insertion_mode.h +33 -0
  149. data/gumbo-parser/src/macros.h +91 -0
  150. data/gumbo-parser/src/nokogiri_gumbo.h +944 -0
  151. data/gumbo-parser/src/parser.c +4878 -0
  152. data/gumbo-parser/src/parser.h +41 -0
  153. data/gumbo-parser/src/replacement.h +33 -0
  154. data/gumbo-parser/src/string_buffer.c +103 -0
  155. data/gumbo-parser/src/string_buffer.h +68 -0
  156. data/gumbo-parser/src/string_piece.c +48 -0
  157. data/gumbo-parser/src/svg_attrs.c +174 -0
  158. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  159. data/gumbo-parser/src/svg_tags.c +137 -0
  160. data/gumbo-parser/src/svg_tags.gperf +55 -0
  161. data/gumbo-parser/src/tag.c +223 -0
  162. data/gumbo-parser/src/tag_lookup.c +382 -0
  163. data/gumbo-parser/src/tag_lookup.gperf +170 -0
  164. data/gumbo-parser/src/tag_lookup.h +13 -0
  165. data/gumbo-parser/src/token_buffer.c +79 -0
  166. data/gumbo-parser/src/token_buffer.h +71 -0
  167. data/gumbo-parser/src/token_type.h +17 -0
  168. data/gumbo-parser/src/tokenizer.c +3463 -0
  169. data/gumbo-parser/src/tokenizer.h +112 -0
  170. data/gumbo-parser/src/tokenizer_states.h +339 -0
  171. data/gumbo-parser/src/utf8.c +245 -0
  172. data/gumbo-parser/src/utf8.h +164 -0
  173. data/gumbo-parser/src/util.c +66 -0
  174. data/gumbo-parser/src/util.h +34 -0
  175. data/gumbo-parser/src/vector.c +111 -0
  176. data/gumbo-parser/src/vector.h +45 -0
  177. data/lib/nokogiri/class_resolver.rb +67 -0
  178. data/lib/nokogiri/css/node.rb +54 -0
  179. data/lib/nokogiri/css/parser.rb +770 -0
  180. data/lib/nokogiri/css/parser.y +277 -0
  181. data/lib/nokogiri/css/parser_extras.rb +96 -0
  182. data/lib/nokogiri/css/syntax_error.rb +9 -0
  183. data/lib/nokogiri/css/tokenizer.rb +155 -0
  184. data/lib/nokogiri/css/tokenizer.rex +56 -0
  185. data/lib/nokogiri/css/xpath_visitor.rb +359 -0
  186. data/lib/nokogiri/css.rb +66 -0
  187. data/lib/nokogiri/decorators/slop.rb +44 -0
  188. data/lib/nokogiri/encoding_handler.rb +57 -0
  189. data/lib/nokogiri/extension.rb +32 -0
  190. data/lib/nokogiri/gumbo.rb +15 -0
  191. data/lib/nokogiri/html.rb +48 -0
  192. data/lib/nokogiri/html4/builder.rb +37 -0
  193. data/lib/nokogiri/html4/document.rb +214 -0
  194. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  195. data/lib/nokogiri/html4/element_description.rb +25 -0
  196. data/lib/nokogiri/html4/element_description_defaults.rb +572 -0
  197. data/lib/nokogiri/html4/encoding_reader.rb +121 -0
  198. data/lib/nokogiri/html4/entity_lookup.rb +15 -0
  199. data/lib/nokogiri/html4/sax/parser.rb +63 -0
  200. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  201. data/lib/nokogiri/html4/sax/push_parser.rb +37 -0
  202. data/lib/nokogiri/html4.rb +47 -0
  203. data/lib/nokogiri/html5/document.rb +168 -0
  204. data/lib/nokogiri/html5/document_fragment.rb +90 -0
  205. data/lib/nokogiri/html5/node.rb +98 -0
  206. data/lib/nokogiri/html5.rb +389 -0
  207. data/lib/nokogiri/jruby/dependencies.rb +3 -0
  208. data/lib/nokogiri/jruby/isorelax/isorelax/20030108/isorelax-20030108.jar +0 -0
  209. data/lib/nokogiri/jruby/net/sf/saxon/Saxon-HE/9.6.0-4/Saxon-HE-9.6.0-4.jar +0 -0
  210. data/lib/nokogiri/jruby/net/sourceforge/htmlunit/neko-htmlunit/2.63.0/neko-htmlunit-2.63.0.jar +0 -0
  211. data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
  212. data/lib/nokogiri/jruby/nu/validator/jing/20200702VNU/jing-20200702VNU.jar +0 -0
  213. data/lib/nokogiri/jruby/org/nokogiri/nekodtd/0.1.11.noko2/nekodtd-0.1.11.noko2.jar +0 -0
  214. data/lib/nokogiri/jruby/xalan/serializer/2.7.3/serializer-2.7.3.jar +0 -0
  215. data/lib/nokogiri/jruby/xalan/xalan/2.7.3/xalan-2.7.3.jar +0 -0
  216. data/lib/nokogiri/jruby/xerces/xercesImpl/2.12.2/xercesImpl-2.12.2.jar +0 -0
  217. data/lib/nokogiri/jruby/xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar +0 -0
  218. data/lib/nokogiri/syntax_error.rb +6 -0
  219. data/lib/nokogiri/version/constant.rb +6 -0
  220. data/lib/nokogiri/version/info.rb +223 -0
  221. data/lib/nokogiri/version.rb +4 -0
  222. data/lib/nokogiri/xml/attr.rb +66 -0
  223. data/lib/nokogiri/xml/attribute_decl.rb +20 -0
  224. data/lib/nokogiri/xml/builder.rb +487 -0
  225. data/lib/nokogiri/xml/cdata.rb +13 -0
  226. data/lib/nokogiri/xml/character_data.rb +9 -0
  227. data/lib/nokogiri/xml/document.rb +471 -0
  228. data/lib/nokogiri/xml/document_fragment.rb +205 -0
  229. data/lib/nokogiri/xml/dtd.rb +34 -0
  230. data/lib/nokogiri/xml/element_content.rb +38 -0
  231. data/lib/nokogiri/xml/element_decl.rb +15 -0
  232. data/lib/nokogiri/xml/entity_decl.rb +21 -0
  233. data/lib/nokogiri/xml/entity_reference.rb +20 -0
  234. data/lib/nokogiri/xml/namespace.rb +58 -0
  235. data/lib/nokogiri/xml/node/save_options.rb +68 -0
  236. data/lib/nokogiri/xml/node.rb +1563 -0
  237. data/lib/nokogiri/xml/node_set.rb +447 -0
  238. data/lib/nokogiri/xml/notation.rb +19 -0
  239. data/lib/nokogiri/xml/parse_options.rb +213 -0
  240. data/lib/nokogiri/xml/pp/character_data.rb +21 -0
  241. data/lib/nokogiri/xml/pp/node.rb +57 -0
  242. data/lib/nokogiri/xml/pp.rb +4 -0
  243. data/lib/nokogiri/xml/processing_instruction.rb +11 -0
  244. data/lib/nokogiri/xml/reader.rb +105 -0
  245. data/lib/nokogiri/xml/relax_ng.rb +38 -0
  246. data/lib/nokogiri/xml/sax/document.rb +167 -0
  247. data/lib/nokogiri/xml/sax/parser.rb +125 -0
  248. data/lib/nokogiri/xml/sax/parser_context.rb +21 -0
  249. data/lib/nokogiri/xml/sax/push_parser.rb +61 -0
  250. data/lib/nokogiri/xml/sax.rb +6 -0
  251. data/lib/nokogiri/xml/schema.rb +73 -0
  252. data/lib/nokogiri/xml/searchable.rb +270 -0
  253. data/lib/nokogiri/xml/syntax_error.rb +72 -0
  254. data/lib/nokogiri/xml/text.rb +11 -0
  255. data/lib/nokogiri/xml/xpath/syntax_error.rb +13 -0
  256. data/lib/nokogiri/xml/xpath.rb +21 -0
  257. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  258. data/lib/nokogiri/xml.rb +76 -0
  259. data/lib/nokogiri/xslt/stylesheet.rb +27 -0
  260. data/lib/nokogiri/xslt.rb +65 -0
  261. data/lib/nokogiri.rb +120 -0
  262. data/lib/xsd/xmlparser/nokogiri.rb +106 -0
  263. metadata +391 -0
@@ -0,0 +1,737 @@
1
+ /*
2
+ * Copyright 1999-2004 The Apache Software Foundation.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /*
17
+ * $Id: DOM2DTMdefaultNamespaceDeclarationNode.java,v 1.2.4.1 2005/09/15 08:15:11 suresh_emailid Exp $
18
+ */
19
+
20
+ // This is copied directly out of the original
21
+ // com.sun.org.apache.xml.internal.dtm.ref.dom2dtm path to allow modifying
22
+ // DOM2DTM and working around package private constructors. Other than the
23
+ // package declaration, this class is unmodified
24
+
25
+ package nokogiri.internals.dom2dtm;
26
+
27
+ import org.apache.xml.dtm.DTMException;
28
+
29
+ import org.w3c.dom.Attr;
30
+ import org.w3c.dom.Document;
31
+ import org.w3c.dom.Element;
32
+ import org.w3c.dom.NamedNodeMap;
33
+ import org.w3c.dom.Node;
34
+ import org.w3c.dom.NodeList;
35
+ import org.w3c.dom.TypeInfo;
36
+ import org.w3c.dom.UserDataHandler;
37
+ import org.w3c.dom.DOMException;
38
+
39
+ /** This is a kluge to let us shove a declaration for xml: into the
40
+ * DOM2DTM model. Basically, it creates a proxy node in DOM space to
41
+ * carry the additional information. This is _NOT_ a full DOM
42
+ * implementation, and shouldn't be one since it sits alongside the
43
+ * DOM rather than becoming part of the DOM model.
44
+ *
45
+ * (This used to be an internal class within DOM2DTM. Moved out because
46
+ * I need to perform an instanceof operation on it to support a temporary
47
+ * workaround in DTMManagerDefault.)
48
+ *
49
+ * %REVIEW% What if the DOM2DTM was built around a DocumentFragment and
50
+ * there isn't a single root element? I think this fails that case...
51
+ *
52
+ * %REVIEW% An alternative solution would be to create the node _only_
53
+ * in DTM space, but given how DOM2DTM is currently written I think
54
+ * this is simplest.
55
+ * */
56
+ public class DOM2DTMdefaultNamespaceDeclarationNode implements Attr, TypeInfo
57
+ {
58
+ final String NOT_SUPPORTED_ERR = "Unsupported operation on pseudonode";
59
+
60
+ Element pseudoparent;
61
+ String prefix, uri, nodename;
62
+ int handle;
63
+ DOM2DTMdefaultNamespaceDeclarationNode(Element pseudoparent, String prefix, String uri, int handle)
64
+ {
65
+ this.pseudoparent = pseudoparent;
66
+ this.prefix = prefix;
67
+ this.uri = uri;
68
+ this.handle = handle;
69
+ this.nodename = "xmlns:" + prefix;
70
+ }
71
+ public String
72
+ getNodeName() {return nodename;}
73
+ public String
74
+ getName() {return nodename;}
75
+ public String
76
+ getNamespaceURI() {return "http://www.w3.org/2000/xmlns/";}
77
+ public String
78
+ getPrefix() {return prefix;}
79
+ public String
80
+ getLocalName() {return prefix;}
81
+ public String
82
+ getNodeValue() {return uri;}
83
+ public String
84
+ getValue() {return uri;}
85
+ public Element
86
+ getOwnerElement() {return pseudoparent;}
87
+
88
+ public boolean
89
+ isSupported(String feature, String version) {return false;}
90
+ public boolean
91
+ hasChildNodes() {return false;}
92
+ public boolean
93
+ hasAttributes() {return false;}
94
+ public Node
95
+ getParentNode() {return null;}
96
+ public Node
97
+ getFirstChild() {return null;}
98
+ public Node
99
+ getLastChild() {return null;}
100
+ public Node
101
+ getPreviousSibling() {return null;}
102
+ public Node
103
+ getNextSibling() {return null;}
104
+ public boolean
105
+ getSpecified() {return false;}
106
+ public void
107
+ normalize() {return;}
108
+ public NodeList
109
+ getChildNodes() {return null;}
110
+ public NamedNodeMap
111
+ getAttributes() {return null;}
112
+ public short
113
+ getNodeType() {return Node.ATTRIBUTE_NODE;}
114
+ public void
115
+ setNodeValue(String value) {throw new DTMException(NOT_SUPPORTED_ERR);}
116
+ public void
117
+ setValue(String value) {throw new DTMException(NOT_SUPPORTED_ERR);}
118
+ public void
119
+ setPrefix(String value) {throw new DTMException(NOT_SUPPORTED_ERR);}
120
+ public Node
121
+ insertBefore(Node a, Node b) {throw new DTMException(NOT_SUPPORTED_ERR);}
122
+ public Node
123
+ replaceChild(Node a, Node b) {throw new DTMException(NOT_SUPPORTED_ERR);}
124
+ public Node
125
+ appendChild(Node a) {throw new DTMException(NOT_SUPPORTED_ERR);}
126
+ public Node
127
+ removeChild(Node a) {throw new DTMException(NOT_SUPPORTED_ERR);}
128
+ public Document
129
+ getOwnerDocument() {return pseudoparent.getOwnerDocument();}
130
+ public Node
131
+ cloneNode(boolean deep) {throw new DTMException(NOT_SUPPORTED_ERR);}
132
+
133
+ /** Non-DOM method, part of the temporary kluge
134
+ * %REVIEW% This would be a pruning problem, but since it will always be
135
+ * added to the root element and we prune on elements, we shouldn't have
136
+ * to worry.
137
+ */
138
+ public int
139
+ getHandleOfNode()
140
+ {
141
+ return handle;
142
+ }
143
+
144
+ //RAMESH: PENDING=> Add proper implementation for the below DOM L3 additions
145
+
146
+ /**
147
+ * @see org.w3c.dom.TypeInfo#getTypeName()
148
+ */
149
+ public String
150
+ getTypeName() {return null; }
151
+
152
+ /**
153
+ * @see org.w3c.dom.TypeInfo#getTypeNamespace()
154
+ */
155
+ public String
156
+ getTypeNamespace() { return null;}
157
+
158
+ /**
159
+ * @see or.gw3c.dom.TypeInfo#isDerivedFrom(String,String,int)
160
+ */
161
+ public boolean
162
+ isDerivedFrom(String ns, String localName, int derivationMethod)
163
+ {
164
+ return false;
165
+ }
166
+
167
+ public TypeInfo
168
+ getSchemaTypeInfo() { return this; }
169
+
170
+ public boolean
171
+ isId() { return false; }
172
+
173
+ /**
174
+ * Associate an object to a key on this node. The object can later be
175
+ * retrieved from this node by calling <code>getUserData</code> with the
176
+ * same key.
177
+ * @param key The key to associate the object to.
178
+ * @param data The object to associate to the given key, or
179
+ * <code>null</code> to remove any existing association to that key.
180
+ * @param handler The handler to associate to that key, or
181
+ * <code>null</code>.
182
+ * @return Returns the <code>DOMObject</code> previously associated to
183
+ * the given key on this node, or <code>null</code> if there was none.
184
+ * @since DOM Level 3
185
+ */
186
+ public Object
187
+ setUserData(String key,
188
+ Object data,
189
+ UserDataHandler handler)
190
+ {
191
+ return getOwnerDocument().setUserData(key, data, handler);
192
+ }
193
+
194
+ /**
195
+ * Retrieves the object associated to a key on a this node. The object
196
+ * must first have been set to this node by calling
197
+ * <code>setUserData</code> with the same key.
198
+ * @param key The key the object is associated to.
199
+ * @return Returns the <code>DOMObject</code> associated to the given key
200
+ * on this node, or <code>null</code> if there was none.
201
+ * @since DOM Level 3
202
+ */
203
+ public Object
204
+ getUserData(String key)
205
+ {
206
+ return getOwnerDocument().getUserData(key);
207
+ }
208
+
209
+ /**
210
+ * This method returns a specialized object which implements the
211
+ * specialized APIs of the specified feature and version. The
212
+ * specialized object may also be obtained by using binding-specific
213
+ * casting methods but is not necessarily expected to, as discussed in Mixed DOM implementations.
214
+ * @param feature The name of the feature requested (case-insensitive).
215
+ * @param version This is the version number of the feature to test. If
216
+ * the version is <code>null</code> or the empty string, supporting
217
+ * any version of the feature will cause the method to return an
218
+ * object that supports at least one version of the feature.
219
+ * @return Returns an object which implements the specialized APIs of
220
+ * the specified feature and version, if any, or <code>null</code> if
221
+ * there is no object which implements interfaces associated with that
222
+ * feature. If the <code>DOMObject</code> returned by this method
223
+ * implements the <code>Node</code> interface, it must delegate to the
224
+ * primary core <code>Node</code> and not return results inconsistent
225
+ * with the primary core <code>Node</code> such as attributes,
226
+ * childNodes, etc.
227
+ * @since DOM Level 3
228
+ */
229
+ public Object
230
+ getFeature(String feature, String version)
231
+ {
232
+ // we don't have any alternate node, either this node does the job
233
+ // or we don't have anything that does
234
+ return isSupported(feature, version) ? this : null;
235
+ }
236
+
237
+ /**
238
+ * Tests whether two nodes are equal.
239
+ * <br>This method tests for equality of nodes, not sameness (i.e.,
240
+ * whether the two nodes are references to the same object) which can be
241
+ * tested with <code>Node.isSameNode</code>. All nodes that are the same
242
+ * will also be equal, though the reverse may not be true.
243
+ * <br>Two nodes are equal if and only if the following conditions are
244
+ * satisfied: The two nodes are of the same type.The following string
245
+ * attributes are equal: <code>nodeName</code>, <code>localName</code>,
246
+ * <code>namespaceURI</code>, <code>prefix</code>, <code>nodeValue</code>
247
+ * , <code>baseURI</code>. This is: they are both <code>null</code>, or
248
+ * they have the same length and are character for character identical.
249
+ * The <code>attributes</code> <code>NamedNodeMaps</code> are equal.
250
+ * This is: they are both <code>null</code>, or they have the same
251
+ * length and for each node that exists in one map there is a node that
252
+ * exists in the other map and is equal, although not necessarily at the
253
+ * same index.The <code>childNodes</code> <code>NodeLists</code> are
254
+ * equal. This is: they are both <code>null</code>, or they have the
255
+ * same length and contain equal nodes at the same index. This is true
256
+ * for <code>Attr</code> nodes as for any other type of node. Note that
257
+ * normalization can affect equality; to avoid this, nodes should be
258
+ * normalized before being compared.
259
+ * <br>For two <code>DocumentType</code> nodes to be equal, the following
260
+ * conditions must also be satisfied: The following string attributes
261
+ * are equal: <code>publicId</code>, <code>systemId</code>,
262
+ * <code>internalSubset</code>.The <code>entities</code>
263
+ * <code>NamedNodeMaps</code> are equal.The <code>notations</code>
264
+ * <code>NamedNodeMaps</code> are equal.
265
+ * <br>On the other hand, the following do not affect equality: the
266
+ * <code>ownerDocument</code> attribute, the <code>specified</code>
267
+ * attribute for <code>Attr</code> nodes, the
268
+ * <code>isWhitespaceInElementContent</code> attribute for
269
+ * <code>Text</code> nodes, as well as any user data or event listeners
270
+ * registered on the nodes.
271
+ * @param arg The node to compare equality with.
272
+ * @param deep If <code>true</code>, recursively compare the subtrees; if
273
+ * <code>false</code>, compare only the nodes themselves (and its
274
+ * attributes, if it is an <code>Element</code>).
275
+ * @return If the nodes, and possibly subtrees are equal,
276
+ * <code>true</code> otherwise <code>false</code>.
277
+ * @since DOM Level 3
278
+ */
279
+ public boolean
280
+ isEqualNode(Node arg)
281
+ {
282
+ if (arg == this) {
283
+ return true;
284
+ }
285
+ if (arg.getNodeType() != getNodeType()) {
286
+ return false;
287
+ }
288
+ // in theory nodeName can't be null but better be careful
289
+ // who knows what other implementations may be doing?...
290
+ if (getNodeName() == null) {
291
+ if (arg.getNodeName() != null) {
292
+ return false;
293
+ }
294
+ } else if (!getNodeName().equals(arg.getNodeName())) {
295
+ return false;
296
+ }
297
+
298
+ if (getLocalName() == null) {
299
+ if (arg.getLocalName() != null) {
300
+ return false;
301
+ }
302
+ } else if (!getLocalName().equals(arg.getLocalName())) {
303
+ return false;
304
+ }
305
+
306
+ if (getNamespaceURI() == null) {
307
+ if (arg.getNamespaceURI() != null) {
308
+ return false;
309
+ }
310
+ } else if (!getNamespaceURI().equals(arg.getNamespaceURI())) {
311
+ return false;
312
+ }
313
+
314
+ if (getPrefix() == null) {
315
+ if (arg.getPrefix() != null) {
316
+ return false;
317
+ }
318
+ } else if (!getPrefix().equals(arg.getPrefix())) {
319
+ return false;
320
+ }
321
+
322
+ if (getNodeValue() == null) {
323
+ if (arg.getNodeValue() != null) {
324
+ return false;
325
+ }
326
+ } else if (!getNodeValue().equals(arg.getNodeValue())) {
327
+ return false;
328
+ }
329
+ /*
330
+ if (getBaseURI() == null) {
331
+ if (((NodeImpl) arg).getBaseURI() != null) {
332
+ return false;
333
+ }
334
+ }
335
+ else if (!getBaseURI().equals(((NodeImpl) arg).getBaseURI())) {
336
+ return false;
337
+ }
338
+ */
339
+
340
+ return true;
341
+ }
342
+
343
+ /**
344
+ * DOM Level 3 - Experimental:
345
+ * Look up the namespace URI associated to the given prefix, starting from this node.
346
+ * Use lookupNamespaceURI(null) to lookup the default namespace
347
+ *
348
+ * @param namespaceURI
349
+ * @return th URI for the namespace
350
+ * @since DOM Level 3
351
+ */
352
+ public String
353
+ lookupNamespaceURI(String specifiedPrefix)
354
+ {
355
+ short type = this.getNodeType();
356
+ switch (type) {
357
+ case Node.ELEMENT_NODE : {
358
+
359
+ String namespace = this.getNamespaceURI();
360
+ String prefix = this.getPrefix();
361
+ if (namespace != null) {
362
+ // REVISIT: is it possible that prefix is empty string?
363
+ if (specifiedPrefix == null && prefix == specifiedPrefix) {
364
+ // looking for default namespace
365
+ return namespace;
366
+ } else if (prefix != null && prefix.equals(specifiedPrefix)) {
367
+ // non default namespace
368
+ return namespace;
369
+ }
370
+ }
371
+ if (this.hasAttributes()) {
372
+ NamedNodeMap map = this.getAttributes();
373
+ int length = map.getLength();
374
+ for (int i = 0; i < length; i++) {
375
+ Node attr = map.item(i);
376
+ String attrPrefix = attr.getPrefix();
377
+ String value = attr.getNodeValue();
378
+ namespace = attr.getNamespaceURI();
379
+ if (namespace != null && namespace.equals("http://www.w3.org/2000/xmlns/")) {
380
+ // at this point we are dealing with DOM Level 2 nodes only
381
+ if (specifiedPrefix == null &&
382
+ attr.getNodeName().equals("xmlns")) {
383
+ // default namespace
384
+ return value;
385
+ } else if (attrPrefix != null &&
386
+ attrPrefix.equals("xmlns") &&
387
+ attr.getLocalName().equals(specifiedPrefix)) {
388
+ // non default namespace
389
+ return value;
390
+ }
391
+ }
392
+ }
393
+ }
394
+ /*
395
+ NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
396
+ if (ancestor != null) {
397
+ return ancestor.lookupNamespaceURI(specifiedPrefix);
398
+ }
399
+ */
400
+
401
+ return null;
402
+
403
+
404
+ }
405
+ /*
406
+ case Node.DOCUMENT_NODE : {
407
+ return((NodeImpl)((Document)this).getDocumentElement()).lookupNamespaceURI(specifiedPrefix) ;
408
+ }
409
+ */
410
+ case Node.ENTITY_NODE :
411
+ case Node.NOTATION_NODE:
412
+ case Node.DOCUMENT_FRAGMENT_NODE:
413
+ case Node.DOCUMENT_TYPE_NODE:
414
+ // type is unknown
415
+ return null;
416
+ case Node.ATTRIBUTE_NODE: {
417
+ if (this.getOwnerElement().getNodeType() == Node.ELEMENT_NODE) {
418
+ return getOwnerElement().lookupNamespaceURI(specifiedPrefix);
419
+
420
+ }
421
+ return null;
422
+ }
423
+ default: {
424
+ /*
425
+ NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
426
+ if (ancestor != null) {
427
+ return ancestor.lookupNamespaceURI(specifiedPrefix);
428
+ }
429
+ */
430
+ return null;
431
+ }
432
+
433
+ }
434
+ }
435
+
436
+ /**
437
+ * DOM Level 3: Experimental
438
+ * This method checks if the specified <code>namespaceURI</code> is the
439
+ * default namespace or not.
440
+ * @param namespaceURI The namespace URI to look for.
441
+ * @return <code>true</code> if the specified <code>namespaceURI</code>
442
+ * is the default namespace, <code>false</code> otherwise.
443
+ * @since DOM Level 3
444
+ */
445
+ public boolean
446
+ isDefaultNamespace(String namespaceURI)
447
+ {
448
+ /*
449
+ // REVISIT: remove casts when DOM L3 becomes REC.
450
+ short type = this.getNodeType();
451
+ switch (type) {
452
+ case Node.ELEMENT_NODE: {
453
+ String namespace = this.getNamespaceURI();
454
+ String prefix = this.getPrefix();
455
+
456
+ // REVISIT: is it possible that prefix is empty string?
457
+ if (prefix == null || prefix.length() == 0) {
458
+ if (namespaceURI == null) {
459
+ return (namespace == namespaceURI);
460
+ }
461
+ return namespaceURI.equals(namespace);
462
+ }
463
+ if (this.hasAttributes()) {
464
+ ElementImpl elem = (ElementImpl)this;
465
+ NodeImpl attr = (NodeImpl)elem.getAttributeNodeNS("http://www.w3.org/2000/xmlns/", "xmlns");
466
+ if (attr != null) {
467
+ String value = attr.getNodeValue();
468
+ if (namespaceURI == null) {
469
+ return (namespace == value);
470
+ }
471
+ return namespaceURI.equals(value);
472
+ }
473
+ }
474
+
475
+ NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
476
+ if (ancestor != null) {
477
+ return ancestor.isDefaultNamespace(namespaceURI);
478
+ }
479
+ return false;
480
+ }
481
+ case Node.DOCUMENT_NODE:{
482
+ return((NodeImpl)((Document)this).getDocumentElement()).isDefaultNamespace(namespaceURI);
483
+ }
484
+
485
+ case Node.ENTITY_NODE :
486
+ case Node.NOTATION_NODE:
487
+ case Node.DOCUMENT_FRAGMENT_NODE:
488
+ case Node.DOCUMENT_TYPE_NODE:
489
+ // type is unknown
490
+ return false;
491
+ case Node.ATTRIBUTE_NODE:{
492
+ if (this.ownerNode.getNodeType() == Node.ELEMENT_NODE) {
493
+ return ownerNode.isDefaultNamespace(namespaceURI);
494
+
495
+ }
496
+ return false;
497
+ }
498
+ default:{
499
+ NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
500
+ if (ancestor != null) {
501
+ return ancestor.isDefaultNamespace(namespaceURI);
502
+ }
503
+ return false;
504
+ }
505
+
506
+ }
507
+ */
508
+ return false;
509
+
510
+
511
+ }
512
+
513
+ /**
514
+ *
515
+ * DOM Level 3 - Experimental:
516
+ * Look up the prefix associated to the given namespace URI, starting from this node.
517
+ *
518
+ * @param namespaceURI
519
+ * @return the prefix for the namespace
520
+ */
521
+ public String
522
+ lookupPrefix(String namespaceURI)
523
+ {
524
+
525
+ // REVISIT: When Namespaces 1.1 comes out this may not be true
526
+ // Prefix can't be bound to null namespace
527
+ if (namespaceURI == null) {
528
+ return null;
529
+ }
530
+
531
+ short type = this.getNodeType();
532
+
533
+ switch (type) {
534
+ /*
535
+ case Node.ELEMENT_NODE: {
536
+
537
+ String namespace = this.getNamespaceURI(); // to flip out children
538
+ return lookupNamespacePrefix(namespaceURI, (ElementImpl)this);
539
+ }
540
+
541
+ case Node.DOCUMENT_NODE:{
542
+ return((NodeImpl)((Document)this).getDocumentElement()).lookupPrefix(namespaceURI);
543
+ }
544
+ */
545
+ case Node.ENTITY_NODE :
546
+ case Node.NOTATION_NODE:
547
+ case Node.DOCUMENT_FRAGMENT_NODE:
548
+ case Node.DOCUMENT_TYPE_NODE:
549
+ // type is unknown
550
+ return null;
551
+ case Node.ATTRIBUTE_NODE: {
552
+ if (this.getOwnerElement().getNodeType() == Node.ELEMENT_NODE) {
553
+ return getOwnerElement().lookupPrefix(namespaceURI);
554
+
555
+ }
556
+ return null;
557
+ }
558
+ default: {
559
+ /*
560
+ NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
561
+ if (ancestor != null) {
562
+ return ancestor.lookupPrefix(namespaceURI);
563
+ }
564
+ */
565
+ return null;
566
+ }
567
+ }
568
+ }
569
+
570
+ /**
571
+ * Returns whether this node is the same node as the given one.
572
+ * <br>This method provides a way to determine whether two
573
+ * <code>Node</code> references returned by the implementation reference
574
+ * the same object. When two <code>Node</code> references are references
575
+ * to the same object, even if through a proxy, the references may be
576
+ * used completely interchangably, such that all attributes have the
577
+ * same values and calling the same DOM method on either reference
578
+ * always has exactly the same effect.
579
+ * @param other The node to test against.
580
+ * @return Returns <code>true</code> if the nodes are the same,
581
+ * <code>false</code> otherwise.
582
+ * @since DOM Level 3
583
+ */
584
+ public boolean
585
+ isSameNode(Node other)
586
+ {
587
+ // we do not use any wrapper so the answer is obvious
588
+ return this == other;
589
+ }
590
+
591
+ /**
592
+ * This attribute returns the text content of this node and its
593
+ * descendants. When it is defined to be null, setting it has no effect.
594
+ * When set, any possible children this node may have are removed and
595
+ * replaced by a single <code>Text</code> node containing the string
596
+ * this attribute is set to. On getting, no serialization is performed,
597
+ * the returned string does not contain any markup. No whitespace
598
+ * normalization is performed, the returned string does not contain the
599
+ * element content whitespaces . Similarly, on setting, no parsing is
600
+ * performed either, the input string is taken as pure textual content.
601
+ * <br>The string returned is made of the text content of this node
602
+ * depending on its type, as defined below:
603
+ * <table border='1'>
604
+ * <tr>
605
+ * <th>Node type</th>
606
+ * <th>Content</th>
607
+ * </tr>
608
+ * <tr>
609
+ * <td valign='top' rowspan='1' colspan='1'>
610
+ * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
611
+ * DOCUMENT_FRAGMENT_NODE</td>
612
+ * <td valign='top' rowspan='1' colspan='1'>concatenation of the <code>textContent</code>
613
+ * attribute value of every child node, excluding COMMENT_NODE and
614
+ * PROCESSING_INSTRUCTION_NODE nodes</td>
615
+ * </tr>
616
+ * <tr>
617
+ * <td valign='top' rowspan='1' colspan='1'>ATTRIBUTE_NODE, TEXT_NODE,
618
+ * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE</td>
619
+ * <td valign='top' rowspan='1' colspan='1'>
620
+ * <code>nodeValue</code></td>
621
+ * </tr>
622
+ * <tr>
623
+ * <td valign='top' rowspan='1' colspan='1'>DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE</td>
624
+ * <td valign='top' rowspan='1' colspan='1'>
625
+ * null</td>
626
+ * </tr>
627
+ * </table>
628
+ * @exception DOMException
629
+ * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
630
+ * @exception DOMException
631
+ * DOMSTRING_SIZE_ERR: Raised when it would return more characters than
632
+ * fit in a <code>DOMString</code> variable on the implementation
633
+ * platform.
634
+ * @since DOM Level 3
635
+ */
636
+ public void
637
+ setTextContent(String textContent)
638
+ throws DOMException
639
+ {
640
+ setNodeValue(textContent);
641
+ }
642
+
643
+ /**
644
+ * This attribute returns the text content of this node and its
645
+ * descendants. When it is defined to be null, setting it has no effect.
646
+ * When set, any possible children this node may have are removed and
647
+ * replaced by a single <code>Text</code> node containing the string
648
+ * this attribute is set to. On getting, no serialization is performed,
649
+ * the returned string does not contain any markup. No whitespace
650
+ * normalization is performed, the returned string does not contain the
651
+ * element content whitespaces . Similarly, on setting, no parsing is
652
+ * performed either, the input string is taken as pure textual content.
653
+ * <br>The string returned is made of the text content of this node
654
+ * depending on its type, as defined below:
655
+ * <table border='1'>
656
+ * <tr>
657
+ * <th>Node type</th>
658
+ * <th>Content</th>
659
+ * </tr>
660
+ * <tr>
661
+ * <td valign='top' rowspan='1' colspan='1'>
662
+ * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
663
+ * DOCUMENT_FRAGMENT_NODE</td>
664
+ * <td valign='top' rowspan='1' colspan='1'>concatenation of the <code>textContent</code>
665
+ * attribute value of every child node, excluding COMMENT_NODE and
666
+ * PROCESSING_INSTRUCTION_NODE nodes</td>
667
+ * </tr>
668
+ * <tr>
669
+ * <td valign='top' rowspan='1' colspan='1'>ATTRIBUTE_NODE, TEXT_NODE,
670
+ * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE</td>
671
+ * <td valign='top' rowspan='1' colspan='1'>
672
+ * <code>nodeValue</code></td>
673
+ * </tr>
674
+ * <tr>
675
+ * <td valign='top' rowspan='1' colspan='1'>DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE</td>
676
+ * <td valign='top' rowspan='1' colspan='1'>
677
+ * null</td>
678
+ * </tr>
679
+ * </table>
680
+ * @exception DOMException
681
+ * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
682
+ * @exception DOMException
683
+ * DOMSTRING_SIZE_ERR: Raised when it would return more characters than
684
+ * fit in a <code>DOMString</code> variable on the implementation
685
+ * platform.
686
+ * @since DOM Level 3
687
+ */
688
+ public String
689
+ getTextContent() throws DOMException
690
+ {
691
+ return getNodeValue(); // overriden in some subclasses
692
+ }
693
+
694
+ /**
695
+ * Compares a node with this node with regard to their position in the
696
+ * document.
697
+ * @param other The node to compare against this node.
698
+ * @return Returns how the given node is positioned relatively to this
699
+ * node.
700
+ * @since DOM Level 3
701
+ */
702
+ public short
703
+ compareDocumentPosition(Node other) throws DOMException
704
+ {
705
+ return 0;
706
+ }
707
+
708
+ /**
709
+ * The absolute base URI of this node or <code>null</code> if undefined.
710
+ * This value is computed according to . However, when the
711
+ * <code>Document</code> supports the feature "HTML" , the base URI is
712
+ * computed using first the value of the href attribute of the HTML BASE
713
+ * element if any, and the value of the <code>documentURI</code>
714
+ * attribute from the <code>Document</code> interface otherwise.
715
+ * <br> When the node is an <code>Element</code>, a <code>Document</code>
716
+ * or a a <code>ProcessingInstruction</code>, this attribute represents
717
+ * the properties [base URI] defined in . When the node is a
718
+ * <code>Notation</code>, an <code>Entity</code>, or an
719
+ * <code>EntityReference</code>, this attribute represents the
720
+ * properties [declaration base URI] in the . How will this be affected
721
+ * by resolution of relative namespace URIs issue?It's not.Should this
722
+ * only be on Document, Element, ProcessingInstruction, Entity, and
723
+ * Notation nodes, according to the infoset? If not, what is it equal to
724
+ * on other nodes? Null? An empty string? I think it should be the
725
+ * parent's.No.Should this be read-only and computed or and actual
726
+ * read-write attribute?Read-only and computed (F2F 19 Jun 2000 and
727
+ * teleconference 30 May 2001).If the base HTML element is not yet
728
+ * attached to a document, does the insert change the Document.baseURI?
729
+ * Yes. (F2F 26 Sep 2001)
730
+ * @since DOM Level 3
731
+ */
732
+ public String
733
+ getBaseURI()
734
+ {
735
+ return null;
736
+ }
737
+ }