1. /*
  2. * $Id: NodeEx.java,v 1.1.1.1 2000/11/23 01:53:34 edwingo Exp $
  3. *
  4. * The Apache Software License, Version 1.1
  5. *
  6. *
  7. * Copyright (c) 2000 The Apache Software Foundation. All rights
  8. * reserved.
  9. *
  10. * Redistribution and use in source and binary forms, with or without
  11. * modification, are permitted provided that the following conditions
  12. * are met:
  13. *
  14. * 1. Redistributions of source code must retain the above copyright
  15. * notice, this list of conditions and the following disclaimer.
  16. *
  17. * 2. Redistributions in binary form must reproduce the above copyright
  18. * notice, this list of conditions and the following disclaimer in
  19. * the documentation and/or other materials provided with the
  20. * distribution.
  21. *
  22. * 3. The end-user documentation included with the redistribution,
  23. * if any, must include the following acknowledgment:
  24. * "This product includes software developed by the
  25. * Apache Software Foundation (http://www.apache.org/)."
  26. * Alternately, this acknowledgment may appear in the software itself,
  27. * if and wherever such third-party acknowledgments normally appear.
  28. *
  29. * 4. The names "Crimson" and "Apache Software Foundation" must
  30. * not be used to endorse or promote products derived from this
  31. * software without prior written permission. For written
  32. * permission, please contact apache@apache.org.
  33. *
  34. * 5. Products derived from this software may not be called "Apache",
  35. * nor may "Apache" appear in their name, without prior written
  36. * permission of the Apache Software Foundation.
  37. *
  38. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  39. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  40. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  41. * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  42. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  43. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  44. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  45. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  46. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  47. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  48. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  49. * SUCH DAMAGE.
  50. * ====================================================================
  51. *
  52. * This software consists of voluntary contributions made by many
  53. * individuals on behalf of the Apache Software Foundation and was
  54. * originally based on software copyright (c) 1999, Sun Microsystems, Inc.,
  55. * http://www.sun.com. For more information on the Apache Software
  56. * Foundation, please see <http://www.apache.org/>.
  57. */
  58. package org.apache.crimson.tree;
  59. import org.w3c.dom.Node;
  60. /**
  61. * This interface defines accessors to inherited attributes of nodes,
  62. * and provides support for using XML Namespaces.
  63. *
  64. * @author David Brownell
  65. * @version $Revision: 1.1.1.1 $
  66. */
  67. public interface NodeEx extends Node, XmlWritable
  68. {
  69. /**
  70. * Returns the value of a given attribute, tracing up through
  71. * ancestors if needed. In the XML standard, two attributes are
  72. * inherited: <em>xml:lang</em> and <em>xml:space</em>. A very
  73. * similar mechanism is involved with Cascading Style Sheets (CSS).
  74. * XML Namespaces also use inheritance, using attributes with
  75. * names like <em>xmlns:foo</em> to declare namespace prefixes.
  76. *
  77. * @param name The name of the attribute to be found. Colons in
  78. * this are ignored.
  79. * @return the value of the identified attribute, or null if no
  80. * such attribute is found.
  81. */
  82. public String getInheritedAttribute (String name);
  83. /**
  84. * Returns the language id (value of <code>xml:lang</code>
  85. * attribute) applicable to this node, if known. Traces up
  86. * through ancestors as needed.
  87. * @return the value of the <em>xml:lang</em> attribute, or
  88. * null if no such attribute is found.
  89. */
  90. public String getLanguage ();
  91. /**
  92. * Returns the index of the node in the list of children, such
  93. * that <em>item()</em> will return that child.
  94. *
  95. * @param maybeChild the node which may be a child of this one
  96. * @return the index of the node in the set of children, or
  97. * else -1 if that node is not a child of this node.
  98. */
  99. public int getIndexOf (Node maybeChild);
  100. /**
  101. * Sets the node to be readonly; applies recursively to the children
  102. * of this node if the parameter is true.
  103. *
  104. * @param deep If <code> true </code> recursively set the nodes in the
  105. * subtree under the current node to be read only.
  106. * If <code> false </code> then set only the current node to be
  107. * readonly
  108. */
  109. public void setReadonly (boolean deep);
  110. /**
  111. * Method to allow easy determination of whether a node is read only.
  112. *
  113. * @return <code> true </code> if the node is read only
  114. */
  115. public boolean isReadonly ();
  116. }