DomEntity.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. /* DomEntity.java --
  2. Copyright (C) 1999,2000,2004 Free Software Foundation, Inc.
  3. This file is part of GNU Classpath.
  4. GNU Classpath is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.
  8. GNU Classpath is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with GNU Classpath; see the file COPYING. If not, write to the
  14. Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  15. 02110-1301 USA.
  16. Linking this library statically or dynamically with other modules is
  17. making a combined work based on this library. Thus, the terms and
  18. conditions of the GNU General Public License cover the whole
  19. combination.
  20. As a special exception, the copyright holders of this library give you
  21. permission to link this library with independent modules to produce an
  22. executable, regardless of the license terms of these independent
  23. modules, and to copy and distribute the resulting executable under
  24. terms of your choice, provided that you also meet, for each linked
  25. independent module, the terms and conditions of the license of that
  26. module. An independent module is a module which is not derived from
  27. or based on this library. If you modify this library, you may extend
  28. this exception to your version of the library, but you are not
  29. obligated to do so. If you do not wish to do so, delete this
  30. exception statement from your version. */
  31. package gnu.xml.dom;
  32. import org.w3c.dom.Entity;
  33. /**
  34. * <p> "Entity" implementation. This is a non-core DOM class, supporting the
  35. * "XML" feature. There are two types of entities, neither of which works
  36. * particularly well in this API:</p><dl>
  37. *
  38. * <dt><em>Unparsed Entities</em></dt>
  39. * <dd>Since ENTITY/ENTITIES attributes, the only legal use of unparsed
  40. * entities in XML, can't be detected with DOM, there isn't much point in
  41. * trying to use unparsed entities in DOM applications. (XML Linking is
  42. * working to provide a better version of this functionality.) </dd>
  43. *
  44. * <dt><em>Parsed Entities</em></dt>
  45. * <dd> While the DOM specification permits nodes for parsed entities
  46. * to have a readonly set of children, this is not required and there
  47. * is no portable way to provide such children. <em>This implementation
  48. * currently does not permit children to be added to Entities.</em>
  49. * There are related issues with the use of EntityReference nodes. </dd>
  50. *
  51. * </dl>
  52. *
  53. * <p> In short, <em>avoid using this DOM functionality</em>.
  54. *
  55. * @see DomDoctype
  56. * @see DomEntityReference
  57. * @see DomNotation
  58. *
  59. * @author David Brownell
  60. * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
  61. */
  62. public class DomEntity
  63. extends DomExtern
  64. implements Entity
  65. {
  66. private String notation;
  67. /**
  68. * Constructs an Entity node associated with the specified document,
  69. * with the specified descriptive data.
  70. *
  71. * <p>This constructor should only be invoked by a DomDoctype as part
  72. * of its declareEntity functionality, or through a subclass which is
  73. * similarly used in a "Sub-DOM" style layer.
  74. *
  75. * @param owner The document with which this entity is associated
  76. * @param name Name of this entity
  77. * @param publicId If non-null, provides the entity's PUBLIC identifier
  78. * @param systemId Provides the entity's SYSTEM identifier (URI)
  79. * @param notation If non-null, provides the unparsed entity's notation.
  80. */
  81. protected DomEntity(DomDocument owner,
  82. String name,
  83. String publicId,
  84. String systemId,
  85. String notation)
  86. {
  87. super(ENTITY_NODE, owner, name, publicId, systemId);
  88. this.notation = notation;
  89. // NOTE: if notation == null, this is a parsed entity
  90. // which could reasonably be given child nodes ...
  91. makeReadonly();
  92. }
  93. /**
  94. * <b>DOM L1</b>
  95. * Returns the NOTATION identifier associated with this entity, if any.
  96. */
  97. final public String getNotationName()
  98. {
  99. return notation;
  100. }
  101. // DOM Level 3 methods
  102. public String getInputEncoding()
  103. {
  104. // TODO
  105. return null;
  106. }
  107. public String getXmlEncoding()
  108. {
  109. // TODO
  110. return null;
  111. }
  112. public String getXmlVersion()
  113. {
  114. // TODO
  115. return null;
  116. }
  117. /**
  118. * The base URI of an external entity is its system ID.
  119. * The base URI of an internal entity is the parent document's base URI.
  120. * @since DOM Level 3 Core
  121. */
  122. public String getBaseURI()
  123. {
  124. String systemId = getSystemId();
  125. return (systemId == null) ? owner.getBaseURI() : systemId;
  126. }
  127. }