19f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
29f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one
39f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * or more contributor license agreements. See the NOTICE file
49f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed with this work for additional information
59f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * regarding copyright ownership. The ASF licenses this file
69f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * to you under the Apache License, Version 2.0 (the  "License");
79f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * you may not use this file except in compliance with the License.
89f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * You may obtain a copy of the License at
99f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * Unless required by applicable law or agreed to in writing, software
139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * See the License for the specific language governing permissions and
169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * limitations under the License.
179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * $Id: DTMNodeProxy.java 889881 2009-12-12 03:47:15Z zongaro $
209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpackage org.apache.xml.dtm.ref;
229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport java.util.Vector;
249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.DTM;
269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xml.dtm.DTMDOMException;
279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.apache.xpath.NodeSet;
289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Attr;
309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.CDATASection;
319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Comment;
329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.DOMException;
339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.DOMImplementation;
349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Document;
359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.DocumentFragment;
369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.DocumentType;
379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Element;
389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.EntityReference;
399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.NamedNodeMap;
409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Node;
419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.NodeList;
429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.ProcessingInstruction;
439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.Text;
449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.UserDataHandler;
469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.DOMConfiguration;
479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonimport org.w3c.dom.TypeInfo;
489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/**
509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <code>DTMNodeProxy</code> presents a DOM Node API front-end to the DTM model.
519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>
529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * It does _not_ attempt to address the "node identity" question; no effort
539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * is made to prevent the creation of multiple proxies referring to a single
549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTM node. Users can create a mechanism for managing this, or relinquish the
559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * use of "==" and use the .sameNodeAs() mechanism, which is under
569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * consideration for future versions of the DOM.
579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * <p>
589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * DTMNodeProxy may be subclassed further to present specific DOM node types.
599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson *
609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @see org.w3c.dom
619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson * @xsl.usage internal
629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson */
639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilsonpublic class DTMNodeProxy
649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  implements Node, Document, Text, Element, Attr,
659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                   ProcessingInstruction, Comment, DocumentFragment
669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson{
679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** The DTM for this node. */
699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public DTM dtm;
709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** The DTM node handle. */
729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  int node;
739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** The return value as Empty String. */
759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private static final String EMPTYSTRING = "";
769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** The DOMImplementation object */
789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  static final DOMImplementation implementation=new DTMNodeProxyImplementation();
799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Create a DTMNodeProxy Node representing a specific Node in a DTM
829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param dtm The DTM Reference, must be non-null.
849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param node The DTM node handle.
859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public DTMNodeProxy(DTM dtm, int node)
879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    this.dtm = dtm;
899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    this.node = node;
909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * NON-DOM: Return the DTM model
949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The DTM that this proxy is a representative for.
969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final DTM getDTM()
989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm;
1009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * NON-DOM: Return the DTM node number
1049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The DTM node handle.
1069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final int getDTMNodeNumber()
1089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return node;
1109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Test for equality based on node number.
1149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param node A DTM node proxy reference.
1169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if the given node has the same handle as this node.
1189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean equals(Node node)
1209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    try
1239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
1249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      DTMNodeProxy dtmp = (DTMNodeProxy) node;
1259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // return (dtmp.node == this.node);
1279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Patch attributed to Gary L Peskin <garyp@firstech.com>
1289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return (dtmp.node == this.node) && (dtmp.dtm == this.dtm);
1299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    catch (ClassCastException cce)
1319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
1329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return false;
1339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Test for equality based on node number.
1389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param node A DTM node proxy reference.
1409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if the given node has the same handle as this node.
1429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean equals(Object node)
1449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    try
1479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
1489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // DTMNodeProxy dtmp = (DTMNodeProxy)node;
1509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // return (dtmp.node == this.node);
1519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Patch attributed to Gary L Peskin <garyp@firstech.com>
1529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return equals((Node) node);
1539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    catch (ClassCastException cce)
1559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
1569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return false;
1579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
1589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * FUTURE DOM: Test node identity, in lieu of Node==Node
1629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param other
1649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return true if the given node has the same handle as this node.
1669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean sameNodeAs(Node other)
1689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (!(other instanceof DTMNodeProxy))
1719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return false;
1729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    DTMNodeProxy that = (DTMNodeProxy) other;
1749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return this.dtm == that.dtm && this.node == that.node;
1769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
1829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
1839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getNodeName()
1849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
1859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeName(node);
1869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
1879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
1889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
1899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * A PI's "target" states what processor channel the PI's data
1909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * should be directed to. It is defined differently in HTML and XML.
1919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>
1929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * In XML, a PI's "target" is the first (whitespace-delimited) token
1939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * following the "<?" token that begins the PI.
1949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>
1959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * In HTML, target is always null.
1969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>
1979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Note that getNodeName is aliased to getTarget.
1989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
1999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getTarget()
2029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeName(node);
2049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }  // getTarget():String
2059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node as of DOM Level 2
2109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getLocalName()
2129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getLocalName(node);
2149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The prefix for this node.
2189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node as of DOM Level 2
2199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getPrefix()
2219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getPrefix(node);
2239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param prefix
2289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
2309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node as of DOM Level 2 -- DTMNodeProxy is read-only
2319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void setPrefix(String prefix) throws DOMException
2339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
2359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node as of DOM Level 2
2419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getNamespaceURI()
2439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNamespaceURI(node);
2459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** Ask whether we support a given DOM feature.
2489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * In fact, we do not _fully_ support any DOM feature -- we're a
2499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * read-only subset -- so arguably we should always return false.
2509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Or we could say that we support DOM Core Level 2 but all nodes
2519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * are read-only. Unclear which answer is least misleading.
2529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * NON-DOM method. This was present in early drafts of DOM Level 2,
2549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * but was renamed isSupported. It's present here only because it's
2559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * cheap, harmless, and might help some poor fool who is still trying
2569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * to use an early Working Draft of the DOM.
2579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param feature
2599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param version
2609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return false
2629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean supports(String feature, String version)
2649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return implementation.hasFeature(feature,version);
2669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    //throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
2679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** Ask whether we support a given DOM feature.
2709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * In fact, we do not _fully_ support any DOM feature -- we're a
2719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * read-only subset -- so arguably we should always return false.
2729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param feature
2749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param version
2759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return false
2779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node as of DOM Level 2
2789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean isSupported(String feature, String version)
2809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return implementation.hasFeature(feature,version);
2829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
2839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
2899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
2909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
2919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
2929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getNodeValue() throws DOMException
2939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
2949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeValue(node);
2959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
2969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
2979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
2989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @return The string value of the node
2999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
3019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getStringValue() throws DOMException
3039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  	return dtm.getStringValue(node).toString();
3059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param nodeValue
3109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
3129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node -- DTMNodeProxy is read-only
3139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void setNodeValue(String nodeValue) throws DOMException
3159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
3179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
3239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final short getNodeType()
3259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (short) dtm.getNodeType(node);
3279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
3339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node getParentNode()
3359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (getNodeType() == Node.ATTRIBUTE_NODE)
3389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return null;
3399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getParent(node);
3419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : dtm.getNode(newnode);
3439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
3499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node getOwnerNode()
3519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getParent(node);
3549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : dtm.getNode(newnode);
3569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
3629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final NodeList getChildNodes()
3649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Annoyingly, AxisIterators do not currently implement DTMIterator, so
3679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // we can't just wap DTMNodeList around an Axis.CHILD iterator.
3689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Instead, we've created a special-case operating mode for that object.
3699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return new DTMChildIterNodeList(dtm,node);
3709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
3729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
3789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node getFirstChild()
3809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getFirstChild(node);
3839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : dtm.getNode(newnode);
3859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
3889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
3909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
3919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
3929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node getLastChild()
3939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
3949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getLastChild(node);
3969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
3979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : dtm.getNode(newnode);
3989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
3999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
4049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node getPreviousSibling()
4069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getPreviousSibling(node);
4099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : dtm.getNode(newnode);
4119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
4179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node getNextSibling()
4199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // Attr's Next is defined at DTM level, but not at DOM level.
4229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (dtm.getNodeType(node) == Node.ATTRIBUTE_NODE)
4239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return null;
4249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getNextSibling(node);
4269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : dtm.getNode(newnode);
4289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  // DTMNamedNodeMap m_attrs;
4319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
4369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final NamedNodeMap getAttributes()
4389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return new DTMNamedNodeMap(dtm, node);
4419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Method hasAttribute
4459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
4489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean hasAttribute(String name)
4529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return DTM.NULL != dtm.getAttributeNode(node,null,name);
4549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Method hasAttributeNS
4589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
4619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param localName
4629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean hasAttributeNS(String namespaceURI, String localName)
4669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return DTM.NULL != dtm.getAttributeNode(node,namespaceURI,localName);
4689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
4749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Document getOwnerDocument()
4769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  	// Note that this uses the DOM-compatable version of the call
4789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	return (Document)(dtm.getNode(dtm.getOwnerDocument(node)));
4799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param newChild
4849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param refChild
4859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
4899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node -- DTMNodeProxy is read-only
4909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
4919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node insertBefore(Node newChild, Node refChild)
4929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
4939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
4949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
4959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
4969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
4979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
4989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
4999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param newChild
5009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param oldChild
5019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
5059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node -- DTMNodeProxy is read-only
5069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node replaceChild(Node newChild, Node oldChild)
5089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
5099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
5119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param oldChild
5169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
5209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node -- DTMNodeProxy is read-only
5219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node removeChild(Node oldChild) throws DOMException
5239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
5259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param newChild
5309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
5349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node -- DTMNodeProxy is read-only
5359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node appendChild(Node newChild) throws DOMException
5379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
5399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node
5459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean hasChildNodes()
5479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (DTM.NULL != dtm.getFirstChild(node));
5499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param deep
5549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Node -- DTMNodeProxy is read-only
5579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node cloneNode(boolean deep)
5599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
5619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
5679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final DocumentType getDoctype()
5699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return null;
5719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
5749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
5779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final DOMImplementation getImplementation()
5799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return implementation;
5819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
5829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
5839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** This is a bit of a problem in DTM, since a DTM may be a Document
5849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Fragment and hence not have a clear-cut Document Element. We can
5859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * make it work in the well-formed cases but would that be confusing for others?
5869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
5889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
5899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
5909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Element getDocumentElement()
5919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
5929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		int dochandle=dtm.getDocument();
5939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		int elementhandle=DTM.NULL;
5949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		for(int kidhandle=dtm.getFirstChild(dochandle);
5959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				kidhandle!=DTM.NULL;
5969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				kidhandle=dtm.getNextSibling(kidhandle))
5979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		{
5989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			switch(dtm.getNodeType(kidhandle))
5999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			{
6009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			case Node.ELEMENT_NODE:
6019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				if(elementhandle!=DTM.NULL)
6029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				{
6039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson					elementhandle=DTM.NULL; // More than one; ill-formed.
6049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson					kidhandle=dtm.getLastChild(dochandle); // End loop
6059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				}
6069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				else
6079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson					elementhandle=kidhandle;
6089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				break;
6099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			// These are harmless; document is still wellformed
6119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			case Node.COMMENT_NODE:
6129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			case Node.PROCESSING_INSTRUCTION_NODE:
6139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			case Node.DOCUMENT_TYPE_NODE:
6149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				break;
6159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			default:
6179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				elementhandle=DTM.NULL; // ill-formed
6189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				kidhandle=dtm.getLastChild(dochandle); // End loop
6199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson				break;
6209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			}
6219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		}
6229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		if(elementhandle==DTM.NULL)
6239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
6249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		else
6259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson			return (Element)(dtm.getNode(elementhandle));
6269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param tagName
6319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
6359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
6369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Element createElement(String tagName) throws DOMException
6389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
6409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
6469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final DocumentFragment createDocumentFragment()
6489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
6509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param data
6559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
6589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Text createTextNode(String data)
6609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
6629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param data
6679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
6709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Comment createComment(String data)
6729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
6749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param data
6799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
6839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
6849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
6859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final CDATASection createCDATASection(String data)
6869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
6879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
6889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
6899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
6909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
6919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
6929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param target
6949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param data
6959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
6989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
6999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
7009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final ProcessingInstruction createProcessingInstruction(
7029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                                                 String target, String data) throws DOMException
7039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
7059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
7109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
7149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
7159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr createAttribute(String name) throws DOMException
7179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
7199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
7249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
7289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
7299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final EntityReference createEntityReference(String name)
7319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
7329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
7349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
7369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param tagname
7399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document
7429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final NodeList getElementsByTagName(String tagname)
7449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
7459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       Vector listVector = new Vector();
7469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       Node retNode = dtm.getNode(node);
7479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       if (retNode != null)
7489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       {
7499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         boolean isTagNameWildCard = "*".equals(tagname);
7509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         if (DTM.ELEMENT_NODE == retNode.getNodeType())
7519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         {
7529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           NodeList nodeList = retNode.getChildNodes();
7539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           for (int i = 0; i < nodeList.getLength(); i++)
7549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           {
7559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson             traverseChildren(listVector, nodeList.item(i), tagname,
7569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                              isTagNameWildCard);
7579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           }
7589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         } else if (DTM.DOCUMENT_NODE == retNode.getNodeType()) {
7599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson           traverseChildren(listVector, dtm.getNode(node), tagname,
7609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                            isTagNameWildCard);
7619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         }
7629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       }
7639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       int size = listVector.size();
7649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       NodeSet nodeSet = new NodeSet(size);
7659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       for (int i = 0; i < size; i++)
7669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       {
7679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         nodeSet.addNode((Node) listVector.elementAt(i));
7689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       }
7699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       return (NodeList) nodeSet;
7709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
7719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
7729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param listVector
7749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param tempNode
7759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param tagname
7769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param isTagNameWildCard
7779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
7799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Private method to be used for recursive iterations to obtain elements by tag name.
7809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
7819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private final void traverseChildren
7829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  (
7839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    Vector listVector,
7849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    Node tempNode,
7859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    String tagname,
7869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    boolean isTagNameWildCard) {
7879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (tempNode == null)
7889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
7899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return;
7909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
7919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    else
7929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
7939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if (tempNode.getNodeType() == DTM.ELEMENT_NODE
7949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            && (isTagNameWildCard || tempNode.getNodeName().equals(tagname)))
7959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
7969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        listVector.add(tempNode);
7979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
7989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if(tempNode.hasChildNodes())
7999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
8009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        NodeList nodeList = tempNode.getChildNodes();
8019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        for (int i = 0; i < nodeList.getLength(); i++)
8029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
8039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          traverseChildren(listVector, nodeList.item(i), tagname,
8049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           isTagNameWildCard);
8059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
8069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
8079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
8089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param importedNode
8139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param deep
8149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
8189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document as of DOM Level 2 -- DTMNodeProxy is read-only
8199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Node importNode(Node importedNode, boolean deep)
8219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
8229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR);
8249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
8299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param qualifiedName
8309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
8349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document as of DOM Level 2
8359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Element createElementNS(
8379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       String namespaceURI, String qualifiedName) throws DOMException
8389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
8409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
8459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param qualifiedName
8469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
8509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document as of DOM Level 2
8519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr createAttributeNS(
8539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                      String namespaceURI, String qualifiedName) throws DOMException
8549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
8569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
8589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
8619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param localName
8629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document as of DOM Level 2
8659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
8669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final NodeList getElementsByTagNameNS(String namespaceURI,
8679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                               String localName)
8689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
8699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    Vector listVector = new Vector();
8709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    Node retNode = dtm.getNode(node);
8719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (retNode != null)
8729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
8739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      boolean isNamespaceURIWildCard = "*".equals(namespaceURI);
8749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      boolean isLocalNameWildCard    = "*".equals(localName);
8759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if (DTM.ELEMENT_NODE == retNode.getNodeType())
8769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
8779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        NodeList nodeList = retNode.getChildNodes();
8789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        for(int i = 0; i < nodeList.getLength(); i++)
8799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
8809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          traverseChildren(listVector, nodeList.item(i), namespaceURI, localName, isNamespaceURIWildCard, isLocalNameWildCard);
8819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
8829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
8839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      else if(DTM.DOCUMENT_NODE == retNode.getNodeType())
8849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
8859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        traverseChildren(listVector, dtm.getNode(node), namespaceURI, localName, isNamespaceURIWildCard, isLocalNameWildCard);
8869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
8879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
8889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int size = listVector.size();
8899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    NodeSet nodeSet = new NodeSet(size);
8909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    for (int i = 0; i < size; i++)
8919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
8929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      nodeSet.addNode((Node)listVector.elementAt(i));
8939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
8949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (NodeList) nodeSet;
8959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
8969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
8979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
8989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param listVector
8999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param tempNode
9009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
9019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param localname
9029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param isNamespaceURIWildCard
9039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param isLocalNameWildCard
9049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Private method to be used for recursive iterations to obtain elements by tag name
9069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * and namespaceURI.
9079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  private final void traverseChildren
9099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  (
9109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   Vector listVector,
9119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   Node tempNode,
9129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   String namespaceURI,
9139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   String localname,
9149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   boolean isNamespaceURIWildCard,
9159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   boolean isLocalNameWildCard)
9169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   {
9179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (tempNode == null)
9189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
9199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return;
9209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
9219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    else
9229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
9239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if (tempNode.getNodeType() == DTM.ELEMENT_NODE
9249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson              && (isLocalNameWildCard
9259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                      || tempNode.getLocalName().equals(localname)))
9269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
9279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        String nsURI = tempNode.getNamespaceURI();
9289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if ((namespaceURI == null && nsURI == null)
9299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson               || isNamespaceURIWildCard
9309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson               || (namespaceURI != null && namespaceURI.equals(nsURI)))
9319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
9329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          listVector.add(tempNode);
9339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
9349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
9359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if(tempNode.hasChildNodes())
9369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      {
9379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        NodeList nl = tempNode.getChildNodes();
9389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        for(int i = 0; i < nl.getLength(); i++)
9399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        {
9409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          traverseChildren(listVector, nl.item(i), namespaceURI, localname,
9419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           isNamespaceURIWildCard, isLocalNameWildCard);
9429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
9439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      }
9449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
9459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param elementId
9499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Document as of DOM Level 2
9529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Element getElementById(String elementId)
9549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       return (Element) dtm.getNode(dtm.getElementById(elementId));
9569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param offset
9619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
9659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Text
9669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Text splitText(int offset) throws DOMException
9689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
9709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
9779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
9789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getData() throws DOMException
9809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeValue(node);
9829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param data
9879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
9899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
9909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
9919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void setData(String data) throws DOMException
9929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
9939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
9949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
9959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
9969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
9979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
9999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
10009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final int getLength()
10029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // %OPT% This should do something smarter?
10049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeValue(node).length();
10059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param offset
10109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param count
10119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
10159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
10169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String substringData(int offset, int count) throws DOMException
10189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return getData().substring(offset,offset+count);
10209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param arg
10259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
10279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
10289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void appendData(String arg) throws DOMException
10309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
10329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param offset
10379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param arg
10389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
10409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
10419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void insertData(int offset, String arg) throws DOMException
10439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
10459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param offset
10509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param count
10519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
10539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
10549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void deleteData(int offset, int count) throws DOMException
10569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
10589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param offset
10639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param count
10649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param arg
10659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
10679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.CharacterData
10689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void replaceData(int offset, int count, String arg)
10709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
10719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
10739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
10799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getTagName()
10819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeName(node);
10839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
10869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
10889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
10909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
10919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
10929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getAttribute(String name)
10939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
10949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
10959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    DTMNamedNodeMap  map = new DTMNamedNodeMap(dtm, node);
10969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    Node node = map.getNamedItem(name);
10979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (null == node) ? EMPTYSTRING : node.getNodeValue();
10989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
10999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
11039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param value
11049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
11069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
11079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void setAttribute(String name, String value)
11099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
11109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
11129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
11179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
11199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
11209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void removeAttribute(String name) throws DOMException
11229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
11249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param name
11299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
11329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr getAttributeNode(String name)
11349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    DTMNamedNodeMap  map = new DTMNamedNodeMap(dtm, node);
11379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (Attr)map.getNamedItem(name);
11389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param newAttr
11439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
11479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
11489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr setAttributeNode(Attr newAttr) throws DOMException
11509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
11529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param oldAttr
11579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
11619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
11629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr removeAttributeNode(Attr oldAttr) throws DOMException
11649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
11669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Introduced in DOM Level 2.
11709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean hasAttributes()
11749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return DTM.NULL != dtm.getFirstAttribute(node);
11769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** @see org.w3c.dom.Element */
11799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void normalize()
11809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
11829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
11839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
11849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
11859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
11879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param localName
11889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
11909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
11919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
11929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getAttributeNS(String namespaceURI, String localName)
11939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
11949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       Node retNode = null;
11959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       int n = dtm.getAttributeNode(node,namespaceURI,localName);
11969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       if(n != DTM.NULL)
11979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson               retNode = dtm.getNode(n);
11989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       return (null == retNode) ? EMPTYSTRING : retNode.getNodeValue();
11999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
12049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param qualifiedName
12059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param value
12069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
12089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
12099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void setAttributeNS(
12119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                   String namespaceURI, String qualifiedName, String value)
12129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
12139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
12159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
12209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param localName
12219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
12239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
12249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void removeAttributeNS(String namespaceURI, String localName)
12269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throws DOMException
12279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
12299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param namespaceURI
12349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param localName
12359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
12389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr getAttributeNodeNS(String namespaceURI, String localName)
12409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       Attr retAttr = null;
12429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       int n = dtm.getAttributeNode(node,namespaceURI,localName);
12439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       if(n != DTM.NULL)
12449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson               retAttr = (Attr) dtm.getNode(n);
12459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       return retAttr;
12469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param newAttr
12519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
12559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Element
12569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Attr setAttributeNodeNS(Attr newAttr) throws DOMException
12589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
12609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Attr
12669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getName()
12689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeName(node);
12709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Attr
12769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final boolean getSpecified()
12789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // We really don't know which attributes might have come from the
12809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // source document versus from the DTD. Treat them all as having
12819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // been provided by the user.
12829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // %REVIEW% if/when we become aware of DTDs/schemae.
12839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return true;
12849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Attr
12909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
12919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final String getValue()
12929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
12939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return dtm.getNodeValue(node);
12949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
12959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
12969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
12979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
12989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @param value
12999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Attr
13009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final void setValue(String value)
13029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
13049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Get the owner element of an attribute.
13089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @see org.w3c.dom.Attr as of DOM Level 2
13119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public final Element getOwnerElement()
13139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    if (getNodeType() != Node.ATTRIBUTE_NODE)
13159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return null;
13169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // In XPath and DTM data models, unlike DOM, an Attr's parent is its
13179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    // owner element.
13189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    int newnode = dtm.getParent(node);
13199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    return (newnode == DTM.NULL) ? null : (Element)(dtm.getNode(newnode));
13209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * NEEDSDOC Method adoptNode
13249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * NEEDSDOC @param source
13279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @throws DOMException
13319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public Node adoptNode(Node source) throws DOMException
13339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
13369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>Based on the <a
13409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document
13419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Object Model (DOM) Level 3 Core Specification of 07 April 2004.</a>.
13429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>
13439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * An attribute specifying, as part of the XML declaration, the encoding
13449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * of this document. This is <code>null</code> when unspecified.
13459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @since DOM Level 3
13469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public String getInputEncoding()
13509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
13539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>Based on the <a
13579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document
13589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Object Model (DOM) Level 3 Core Specification of 07 April 2004.</a>.
13599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>
13609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * An attribute specifying whether errors checking is enforced or not.
13619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * When set to <code>false</code>, the implementation is free to not
13629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * test every possible error case normally defined on DOM operations,
13639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * and not raise any <code>DOMException</code>. In case of error, the
13649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * behavior is undefined. This attribute is <code>true</code> by
13659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * defaults.
13669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @since DOM Level 3
13679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public boolean getStrictErrorChecking()
13719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
13749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /**
13779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>Based on the <a
13789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * href='http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407'>Document
13799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * Object Model (DOM) Level 3 Core Specification of 07 April 2004.</a>.
13809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * <p>
13819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * An attribute specifying whether errors checking is enforced or not.
13829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * When set to <code>false</code>, the implementation is free to not
13839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * test every possible error case normally defined on DOM operations,
13849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * and not raise any <code>DOMException</code>. In case of error, the
13859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * behavior is undefined. This attribute is <code>true</code> by
13869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * defaults.
13879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * @since DOM Level 3
13889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   *
13899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   * NEEDSDOC @param strictErrorChecking
13909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  public void setStrictErrorChecking(boolean strictErrorChecking)
13929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
13939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
13949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
13959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
13969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  /** Inner class to support getDOMImplementation.
13979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   */
13989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  static class DTMNodeProxyImplementation implements DOMImplementation
13999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  {
14009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public DocumentType createDocumentType(String qualifiedName,String publicId, String systemId)
14019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
14029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
14039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
14049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Document createDocument(String namespaceURI,String qualfiedName,DocumentType doctype)
14059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
14069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      // Could create a DTM... but why, when it'd have to be permanantly empty?
14079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      throw new DTMDOMException(DOMException.NOT_SUPPORTED_ERR);
14089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
14099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /** Ask whether we support a given DOM feature.
14109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *
14119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * In fact, we do not _fully_ support any DOM feature -- we're a
14129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * read-only subset -- so arguably we should always return false.
14139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * On the other hand, it may be more practically useful to return
14149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * true and simply treat the whole DOM as read-only, failing on the
14159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * methods we can't support. I'm not sure which would be more useful
14169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * to the caller.
14179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
14189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean hasFeature(String feature,String version)
14199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    {
14209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      if( ("CORE".equals(feature.toUpperCase()) || "XML".equals(feature.toUpperCase()))
14219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson					&&
14229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          ("1.0".equals(version) || "2.0".equals(version))
14239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          )
14249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return true;
14259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return false;
14269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
14279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
14299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  This method returns a specialized object which implements the
14309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * specialized APIs of the specified feature and version. The
14319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * specialized object may also be obtained by using binding-specific
14329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * casting methods but is not necessarily expected to, as discussed in Mixed DOM implementations
14339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson.
14349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param feature The name of the feature requested (case-insensitive).
14359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param version  This is the version number of the feature to test. If
14369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   the version is <code>null</code> or the empty string, supporting
14379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   any version of the feature will cause the method to return an
14389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   object that supports at least one version of the feature.
14399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return  Returns an object which implements the specialized APIs of
14409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   the specified feature and version, if any, or <code>null</code> if
14419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   there is no object which implements interfaces associated with that
14429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   feature. If the <code>DOMObject</code> returned by this method
14439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   implements the <code>Node</code> interface, it must delegate to the
14449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   primary core <code>Node</code> and not return results inconsistent
14459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   with the primary core <code>Node</code> such as attributes,
14469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   childNodes, etc.
14479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
14489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
14499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Object getFeature(String feature, String version) {
14509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // we don't have any alternate node, either this node does the job
14519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // or we don't have anything that does
14529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        //return hasFeature(feature, version) ? this : null;
14539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return null; //PENDING
14549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
14559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson  }
14579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    //RAMESH : Pending proper implementation of DOM Level 3
14609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Object setUserData(String key,
14629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                              Object data,
14639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                              UserDataHandler handler) {
14649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return getOwnerDocument().setUserData( key, data, handler);
14659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
14669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
14689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Retrieves the object associated to a key on a this node. The object
14699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * must first have been set to this node by calling
14709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>setUserData</code> with the same key.
14719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param key The key the object is associated to.
14729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return Returns the <code>DOMObject</code> associated to the given key
14739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   on this node, or <code>null</code> if there was none.
14749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
14759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
14769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Object getUserData(String key) {
14779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return getOwnerDocument().getUserData( key);
14789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
14799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
14809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
14819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  This method returns a specialized object which implements the
14829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * specialized APIs of the specified feature and version. The
14839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * specialized object may also be obtained by using binding-specific
14849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * casting methods but is not necessarily expected to, as discussed in Mixed DOM implementations.
14859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param feature The name of the feature requested (case-insensitive).
14869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param version  This is the version number of the feature to test. If
14879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   the version is <code>null</code> or the empty string, supporting
14889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   any version of the feature will cause the method to return an
14899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   object that supports at least one version of the feature.
14909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return  Returns an object which implements the specialized APIs of
14919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   the specified feature and version, if any, or <code>null</code> if
14929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   there is no object which implements interfaces associated with that
14939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   feature. If the <code>DOMObject</code> returned by this method
14949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   implements the <code>Node</code> interface, it must delegate to the
14959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   primary core <code>Node</code> and not return results inconsistent
14969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   with the primary core <code>Node</code> such as attributes,
14979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   childNodes, etc.
14989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
14999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
15009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Object getFeature(String feature, String version) {
15019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // we don't have any alternate node, either this node does the job
15029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // or we don't have anything that does
15039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return isSupported(feature, version) ? this : null;
15049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
15059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
15079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Tests whether two nodes are equal.
15089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>This method tests for equality of nodes, not sameness (i.e.,
15099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * whether the two nodes are references to the same object) which can be
15109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * tested with <code>Node.isSameNode</code>. All nodes that are the same
15119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * will also be equal, though the reverse may not be true.
15129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>Two nodes are equal if and only if the following conditions are
15139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * satisfied: The two nodes are of the same type.The following string
15149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * attributes are equal: <code>nodeName</code>, <code>localName</code>,
15159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>namespaceURI</code>, <code>prefix</code>, <code>nodeValue</code>
15169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * , <code>baseURI</code>. This is: they are both <code>null</code>, or
15179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * they have the same length and are character for character identical.
15189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * The <code>attributes</code> <code>NamedNodeMaps</code> are equal.
15199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * This is: they are both <code>null</code>, or they have the same
15209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * length and for each node that exists in one map there is a node that
15219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * exists in the other map and is equal, although not necessarily at the
15229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * same index.The <code>childNodes</code> <code>NodeLists</code> are
15239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * equal. This is: they are both <code>null</code>, or they have the
15249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * same length and contain equal nodes at the same index. This is true
15259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * for <code>Attr</code> nodes as for any other type of node. Note that
15269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * normalization can affect equality; to avoid this, nodes should be
15279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * normalized before being compared.
15289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>For two <code>DocumentType</code> nodes to be equal, the following
15299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * conditions must also be satisfied: The following string attributes
15309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * are equal: <code>publicId</code>, <code>systemId</code>,
15319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>internalSubset</code>.The <code>entities</code>
15329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>NamedNodeMaps</code> are equal.The <code>notations</code>
15339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>NamedNodeMaps</code> are equal.
15349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>On the other hand, the following do not affect equality: the
15359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>ownerDocument</code> attribute, the <code>specified</code>
15369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * attribute for <code>Attr</code> nodes, the
15379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>isWhitespaceInElementContent</code> attribute for
15389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>Text</code> nodes, as well as any user data or event listeners
15399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * registered on the nodes.
15409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param arg The node to compare equality with.
15419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param deep If <code>true</code>, recursively compare the subtrees; if
15429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   <code>false</code>, compare only the nodes themselves (and its
15439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   attributes, if it is an <code>Element</code>).
15449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return If the nodes, and possibly subtrees are equal,
15459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   <code>true</code> otherwise <code>false</code>.
15469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
15479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
15489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean isEqualNode(Node arg) {
15499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (arg == this) {
15509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return true;
15519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (arg.getNodeType() != getNodeType()) {
15539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
15549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // in theory nodeName can't be null but better be careful
15569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // who knows what other implementations may be doing?...
15579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (getNodeName() == null) {
15589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (arg.getNodeName() != null) {
15599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
15609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
15619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else if (!getNodeName().equals(arg.getNodeName())) {
15639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
15649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (getLocalName() == null) {
15679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (arg.getLocalName() != null) {
15689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
15699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
15709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else if (!getLocalName().equals(arg.getLocalName())) {
15729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
15739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (getNamespaceURI() == null) {
15769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (arg.getNamespaceURI() != null) {
15779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
15789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
15799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else if (!getNamespaceURI().equals(arg.getNamespaceURI())) {
15819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
15829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (getPrefix() == null) {
15859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (arg.getPrefix() != null) {
15869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
15879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
15889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else if (!getPrefix().equals(arg.getPrefix())) {
15909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
15919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
15939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (getNodeValue() == null) {
15949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (arg.getNodeValue() != null) {
15959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
15969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
15979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
15989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else if (!getNodeValue().equals(arg.getNodeValue())) {
15999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
16009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
16019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /*
16029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (getBaseURI() == null) {
16039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (((NodeImpl) arg).getBaseURI() != null) {
16049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
16059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
16069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
16079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        else if (!getBaseURI().equals(((NodeImpl) arg).getBaseURI())) {
16089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
16099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
16109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
16119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return true;
16129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
16139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
16149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
16159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3:
16169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Look up the namespace URI associated to the given prefix, starting from this node.
16179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Use lookupNamespaceURI(null) to lookup the default namespace
16189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *
16199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param namespaceURI
16209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return th URI for the namespace
16219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
16229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
16239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String lookupNamespaceURI(String specifiedPrefix) {
16249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        short type = this.getNodeType();
16259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        switch (type) {
16269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ELEMENT_NODE : {
16279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
16289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                String namespace = this.getNamespaceURI();
16299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                String prefix = this.getPrefix();
16309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (namespace !=null) {
16319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    // REVISIT: is it possible that prefix is empty string?
16329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    if (specifiedPrefix== null && prefix==specifiedPrefix) {
16339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        // looking for default namespace
16349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        return namespace;
16359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    } else if (prefix != null && prefix.equals(specifiedPrefix)) {
16369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        // non default namespace
16379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        return namespace;
16389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    }
16399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
16409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (this.hasAttributes()) {
16419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    NamedNodeMap map = this.getAttributes();
16429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    int length = map.getLength();
16439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    for (int i=0;i<length;i++) {
16449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        Node attr = map.item(i);
16459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        String attrPrefix = attr.getPrefix();
16469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        String value = attr.getNodeValue();
16479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        namespace = attr.getNamespaceURI();
16489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        if (namespace !=null && namespace.equals("http://www.w3.org/2000/xmlns/")) {
16499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                            // at this point we are dealing with DOM Level 2 nodes only
16509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                            if (specifiedPrefix == null &&
16519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                attr.getNodeName().equals("xmlns")) {
16529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                // default namespace
16539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                return value;
16549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                            } else if (attrPrefix !=null &&
16559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       attrPrefix.equals("xmlns") &&
16569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                       attr.getLocalName().equals(specifiedPrefix)) {
16579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                 // non default namespace
16589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                return value;
16599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                            }
16609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        }
16619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    }
16629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
16639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		/*
16649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
16659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (ancestor != null) {
16669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return ancestor.lookupNamespaceURI(specifiedPrefix);
16679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
16689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson		*/
16699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return null;
16709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
16719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
16729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_NODE : {
16739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return((NodeImpl)((Document)this).getDocumentElement()).lookupNamespaceURI(specifiedPrefix) ;
16749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
16759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
16769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ENTITY_NODE :
16779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.NOTATION_NODE:
16789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_FRAGMENT_NODE:
16799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_TYPE_NODE:
16809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            // type is unknown
16819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return null;
16829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ATTRIBUTE_NODE:{
16839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (this.getOwnerElement().getNodeType() == Node.ELEMENT_NODE) {
16849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return getOwnerElement().lookupNamespaceURI(specifiedPrefix);
16859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
16869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return null;
16879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
16889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        default:{
16899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson	   /*
16909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
16919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (ancestor != null) {
16929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return ancestor.lookupNamespaceURI(specifiedPrefix);
16939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
16949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson             */
16959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return null;
16969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
16979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
16989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
16999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
17009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
17029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  DOM Level 3:
17039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  This method checks if the specified <code>namespaceURI</code> is the
17049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  default namespace or not.
17059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  @param namespaceURI The namespace URI to look for.
17069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  @return  <code>true</code> if the specified <code>namespaceURI</code>
17079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   is the default namespace, <code>false</code> otherwise.
17089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
17099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
17109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean isDefaultNamespace(String namespaceURI){
17119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       /*
17129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // REVISIT: remove casts when DOM L3 becomes REC.
17139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        short type = this.getNodeType();
17149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        switch (type) {
17159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ELEMENT_NODE: {
17169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            String namespace = this.getNamespaceURI();
17179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            String prefix = this.getPrefix();
17189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            // REVISIT: is it possible that prefix is empty string?
17209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (prefix == null || prefix.length() == 0) {
17219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (namespaceURI == null) {
17229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return (namespace == namespaceURI);
17239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
17249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return namespaceURI.equals(namespace);
17259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (this.hasAttributes()) {
17279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                ElementImpl elem = (ElementImpl)this;
17289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                NodeImpl attr = (NodeImpl)elem.getAttributeNodeNS("http://www.w3.org/2000/xmlns/", "xmlns");
17299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (attr != null) {
17309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    String value = attr.getNodeValue();
17319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    if (namespaceURI == null) {
17329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                        return (namespace == value);
17339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    }
17349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return namespaceURI.equals(value);
17359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
17369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
17399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (ancestor != null) {
17409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return ancestor.isDefaultNamespace(namespaceURI);
17419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
17439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
17449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_NODE:{
17459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return((NodeImpl)((Document)this).getDocumentElement()).isDefaultNamespace(namespaceURI);
17469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ENTITY_NODE :
17499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson          case Node.NOTATION_NODE:
17509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_FRAGMENT_NODE:
17519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_TYPE_NODE:
17529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            // type is unknown
17539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return false;
17549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ATTRIBUTE_NODE:{
17559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (this.ownerNode.getNodeType() == Node.ELEMENT_NODE) {
17569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return ownerNode.isDefaultNamespace(namespaceURI);
17579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
17599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
17609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        default:{
17629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
17639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (ancestor != null) {
17649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return ancestor.isDefaultNamespace(namespaceURI);
17659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
17669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return false;
17679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
17709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
17719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return false;
17729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
17739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
17759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3:
17769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Look up the prefix associated to the given namespace URI, starting from this node.
17779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *
17789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param namespaceURI
17799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return the prefix for the namespace
17809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
17819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String lookupPrefix(String namespaceURI){
17829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // REVISIT: When Namespaces 1.1 comes out this may not be true
17849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // Prefix can't be bound to null namespace
17859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (namespaceURI == null) {
17869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return null;
17879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
17889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        short type = this.getNodeType();
17909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        switch (type) {
17929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
17939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ELEMENT_NODE: {
17949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                String namespace = this.getNamespaceURI(); // to flip out children
17969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return lookupNamespacePrefix(namespaceURI, (ElementImpl)this);
17979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
17989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
17999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_NODE:{
18009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return((NodeImpl)((Document)this).getDocumentElement()).lookupPrefix(namespaceURI);
18019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
18029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
18039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ENTITY_NODE :
18049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.NOTATION_NODE:
18059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_FRAGMENT_NODE:
18069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.DOCUMENT_TYPE_NODE:
18079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            // type is unknown
18089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return null;
18099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        case Node.ATTRIBUTE_NODE:{
18109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (this.getOwnerElement().getNodeType() == Node.ELEMENT_NODE) {
18119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return getOwnerElement().lookupPrefix(namespaceURI);
18129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
18139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
18149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return null;
18159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
18169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        default:{
18179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
18189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                NodeImpl ancestor = (NodeImpl)getElementAncestor(this);
18199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                if (ancestor != null) {
18209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                    return ancestor.lookupPrefix(namespaceURI);
18219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                }
18229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
18239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return null;
18249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
18259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson         }
18269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
18279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
18289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
18299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Returns whether this node is the same node as the given one.
18309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>This method provides a way to determine whether two
18319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>Node</code> references returned by the implementation reference
18329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * the same object. When two <code>Node</code> references are references
18339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * to the same object, even if through a proxy, the references may be
18349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * used completely interchangably, such that all attributes have the
18359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * same values and calling the same DOM method on either reference
18369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * always has exactly the same effect.
18379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param other The node to test against.
18389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return Returns <code>true</code> if the nodes are the same,
18399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   <code>false</code> otherwise.
18409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
18419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
18429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean isSameNode(Node other) {
18439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // we do not use any wrapper so the answer is obvious
18449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return this == other;
18459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
18469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
18479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
18489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * This attribute returns the text content of this node and its
18499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * descendants. When it is defined to be null, setting it has no effect.
18509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * When set, any possible children this node may have are removed and
18519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * replaced by a single <code>Text</code> node containing the string
18529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * this attribute is set to. On getting, no serialization is performed,
18539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * the returned string does not contain any markup. No whitespace
18549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * normalization is performed, the returned string does not contain the
18559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * element content whitespaces . Similarly, on setting, no parsing is
18569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * performed either, the input string is taken as pure textual content.
18579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>The string returned is made of the text content of this node
18589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * depending on its type, as defined below:
18599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <table border='1'>
18609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
18619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <th>Node type</th>
18629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <th>Content</th>
18639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
18649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
18659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>
18669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
18679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOCUMENT_FRAGMENT_NODE</td>
18689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>concatenation of the <code>textContent</code>
18699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * attribute value of every child node, excluding COMMENT_NODE and
18709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * PROCESSING_INSTRUCTION_NODE nodes</td>
18719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
18729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
18739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>ATTRIBUTE_NODE, TEXT_NODE,
18749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE</td>
18759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>
18769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>nodeValue</code></td>
18779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
18789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
18799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE</td>
18809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>
18819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * null</td>
18829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
18839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </table>
18849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @exception DOMException
18859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
18869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @exception DOMException
18879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   DOMSTRING_SIZE_ERR: Raised when it would return more characters than
18889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   fit in a <code>DOMString</code> variable on the implementation
18899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   platform.
18909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
18919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
18929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setTextContent(String textContent)
18939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        throws DOMException {
18949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        setNodeValue(textContent);
18959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
18969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
18979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
18989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * This attribute returns the text content of this node and its
18999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * descendants. When it is defined to be null, setting it has no effect.
19009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * When set, any possible children this node may have are removed and
19019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * replaced by a single <code>Text</code> node containing the string
19029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * this attribute is set to. On getting, no serialization is performed,
19039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * the returned string does not contain any markup. No whitespace
19049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * normalization is performed, the returned string does not contain the
19059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * element content whitespaces . Similarly, on setting, no parsing is
19069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * performed either, the input string is taken as pure textual content.
19079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>The string returned is made of the text content of this node
19089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * depending on its type, as defined below:
19099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <table border='1'>
19109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
19119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <th>Node type</th>
19129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <th>Content</th>
19139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
19149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
19159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>
19169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,
19179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOCUMENT_FRAGMENT_NODE</td>
19189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>concatenation of the <code>textContent</code>
19199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * attribute value of every child node, excluding COMMENT_NODE and
19209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * PROCESSING_INSTRUCTION_NODE nodes</td>
19219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
19229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
19239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>ATTRIBUTE_NODE, TEXT_NODE,
19249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE</td>
19259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>
19269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>nodeValue</code></td>
19279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
19289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <tr>
19299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE</td>
19309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <td valign='top' rowspan='1' colspan='1'>
19319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * null</td>
19329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </tr>
19339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * </table>
19349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @exception DOMException
19359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
19369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @exception DOMException
19379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   DOMSTRING_SIZE_ERR: Raised when it would return more characters than
19389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   fit in a <code>DOMString</code> variable on the implementation
19399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   platform.
19409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
19419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
19429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getTextContent() throws DOMException {
19439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return dtm.getStringValue(node).toString();
19449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
19459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
19469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
19479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Compares a node with this node with regard to their position in the
19489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * document.
19499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param other The node to compare against this node.
19509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @return Returns how the given node is positioned relatively to this
19519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *   node.
19529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
19539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
19549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public short compareDocumentPosition(Node other) throws DOMException {
19559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return 0;
19569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
19579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
19589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
19599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * The absolute base URI of this node or <code>null</code> if undefined.
19609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * This value is computed according to . However, when the
19619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>Document</code> supports the feature "HTML" , the base URI is
19629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * computed using first the value of the href attribute of the HTML BASE
19639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * element if any, and the value of the <code>documentURI</code>
19649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * attribute from the <code>Document</code> interface otherwise.
19659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br> When the node is an <code>Element</code>, a <code>Document</code>
19669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * or a a <code>ProcessingInstruction</code>, this attribute represents
19679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * the properties [base URI] defined in . When the node is a
19689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>Notation</code>, an <code>Entity</code>, or an
19699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>EntityReference</code>, this attribute represents the
19709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * properties [declaration base URI] in the . How will this be affected
19719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * by resolution of relative namespace URIs issue?It's not.Should this
19729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * only be on Document, Element, ProcessingInstruction, Entity, and
19739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Notation nodes, according to the infoset? If not, what is it equal to
19749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * on other nodes? Null? An empty string? I think it should be the
19759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * parent's.No.Should this be read-only and computed or and actual
19769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * read-write attribute?Read-only and computed (F2F 19 Jun 2000 and
19779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * teleconference 30 May 2001).If the base HTML element is not yet
19789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * attached to a document, does the insert change the Document.baseURI?
19799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Yes. (F2F 26 Sep 2001)
19809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
19819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
19829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getBaseURI() {
19839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return null;
19849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
19859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
19869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
19879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
19889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Renaming node
19899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
19909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Node renameNode(Node n,
19919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           String namespaceURI,
19929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           String name)
19939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                           throws DOMException{
19949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return n;
19959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
19969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
19979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
19989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  DOM Level 3
19999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  Normalize document.
20009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
20019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void normalizeDocument(){
20029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
20049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
20069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *  The configuration used when <code>Document.normalizeDocument</code> is
20079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * invoked.
20089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
20099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
20109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public DOMConfiguration getDomConfig(){
20119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson       return null;
20129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
20139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /** DOM Level 3 feature: documentURI */
20159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    protected String fDocumentURI;
20169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
20189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
20199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
20209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setDocumentURI(String documentURI){
20219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        fDocumentURI= documentURI;
20239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
20249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
20269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
20279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * The location of the document or <code>null</code> if undefined.
20289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br>Beware that when the <code>Document</code> supports the feature
20299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * "HTML" , the href attribute of the HTML BASE element takes precedence
20309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * over this attribute.
20319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
20329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
20339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getDocumentURI(){
20349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return fDocumentURI;
20359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
20369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /** DOM Level 3 feature: Document actualEncoding */
20389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    protected String actualEncoding;
20399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
20419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
20429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * An attribute specifying the actual encoding of this document. This is
20439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>null</code> otherwise.
20449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br> This attribute represents the property [character encoding scheme]
20459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * defined in .
20469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
20479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
20489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getActualEncoding() {
20499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return actualEncoding;
20509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
20519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
20539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
20549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * An attribute specifying the actual encoding of this document. This is
20559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <code>null</code> otherwise.
20569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * <br> This attribute represents the property [character encoding scheme]
20579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * defined in .
20589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
20599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
20609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setActualEncoding(String value) {
20619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        actualEncoding = value;
20629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
20639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson   /**
20659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    * DOM Level 3
20669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    */
20679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public Text replaceWholeText(String content)
20689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                 throws DOMException{
20699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
20709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (needsSyncData()) {
20729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            synchronizeData();
20739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
20749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        // make sure we can make the replacement
20769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (!canModify(nextSibling)) {
20779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            throw new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR,
20789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NO_MODIFICATION_ALLOWED_ERR", null));
20799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
20809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
20819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        Node parent = this.getParentNode();
20829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (content == null || content.length() == 0) {
20839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            // remove current node
20849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (parent !=null) { // check if node in the tree
20859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                parent.removeChild(this);
20869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return null;
20879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
20889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
20899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        Text currentNode = null;
20909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (isReadOnly()){
20919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            Text newNode = this.ownerDocument().createTextNode(content);
20929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            if (parent !=null) { // check if node in the tree
20939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                parent.insertBefore(newNode, this);
20949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                parent.removeChild(this);
20959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                currentNode = newNode;
20969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            } else {
20979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                return newNode;
20989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            }
20999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }  else {
21009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            this.setData(content);
21019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            currentNode = this;
21029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
21039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        Node sibling =  currentNode.getNextSibling();
21049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        while ( sibling !=null) {
21059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            parent.removeChild(sibling);
21069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            sibling = currentNode.getNextSibling();
21079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
21089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return currentNode;
21109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
21119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return null; //Pending
21129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
21159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
21169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Returns all text of <code>Text</code> nodes logically-adjacent text
21179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * nodes to this node, concatenated in document order.
21189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @since DOM Level 3
21199f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
21209f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getWholeText(){
21219f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21229f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson/*
21239f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (needsSyncData()) {
21249f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            synchronizeData();
21259f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
21269f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (nextSibling == null) {
21279f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            return data;
21289f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
21299f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        StringBuffer buffer = new StringBuffer();
21309f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        if (data != null && data.length() != 0) {
21319f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson            buffer.append(data);
21329f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        }
21339f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        getWholeText(nextSibling, buffer);
21349f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return buffer.toString();
21359f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson*/
21369f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return null; // PENDING
21379f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21389f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21399f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
21409f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3
21419f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * Returns whether this text node contains whitespace in element content,
21429f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * often abusively called "ignorable whitespace".
21439f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
21449f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean isElementContentWhitespace(){
21459f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return false;
21469f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21479f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21489f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
21499f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * NON-DOM: set the type of this attribute to be ID type.
21509f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     *
21519f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * @param id
21529f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
21539f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setIdAttribute(boolean id){
21549f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        //PENDING
21559f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21569f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21579f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
21589f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3: register the given attribute node as an ID attribute
21599f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
21609f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setIdAttribute(String name, boolean makeId) {
21619f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        //PENDING
21629f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21639f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21649f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21659f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
21669f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3: register the given attribute node as an ID attribute
21679f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
21689f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setIdAttributeNode(Attr at, boolean makeId) {
21699f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        //PENDING
21709f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21719f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21729f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    /**
21739f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     * DOM Level 3: register the given attribute node as an ID attribute
21749f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson     */
21759f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setIdAttributeNS(String namespaceURI, String localName,
21769f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson                                    boolean makeId) {
21779f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        //PENDING
21789f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21799f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21809f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public TypeInfo getSchemaTypeInfo(){
21819f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson      return null; //PENDING
21829f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21839f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21849f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean isId() {
21859f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return false; //PENDING
21869f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21879f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21889f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21899f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    private String xmlEncoding;
21909f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21919f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getXmlEncoding( ) {
21929f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return xmlEncoding;
21939f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21949f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21959f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setXmlEncoding( String xmlEncoding ) {
21969f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        this.xmlEncoding = xmlEncoding;
21979f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
21989f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
21999f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    private boolean xmlStandalone;
22009f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
22019f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public boolean getXmlStandalone() {
22029f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return xmlStandalone;
22039f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
22049f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
22059f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setXmlStandalone(boolean xmlStandalone) throws DOMException {
22069f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        this.xmlStandalone = xmlStandalone;
22079f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
22089f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
22099f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    private String xmlVersion;
22109f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
22119f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public String getXmlVersion() {
22129f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        return xmlVersion;
22139f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
22149f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson
22159f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    public void setXmlVersion(String xmlVersion) throws DOMException {
22169f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson        this.xmlVersion = xmlVersion;
22179f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson    }
22189f8118474e9513f7a5b7d2a05e4a0fb15d1a6569Jesse Wilson}
2219