| /* |
| * The Apache Software License, Version 1.1 |
| * |
| * |
| * Copyright (c) 2002 The Apache Software Foundation. All rights |
| * reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * |
| * 3. The end-user documentation included with the redistribution, |
| * if any, must include the following acknowledgment: |
| * "This product includes software developed by the |
| * Apache Software Foundation (http://www.apache.org/)." |
| * Alternately, this acknowledgment may appear in the software itself, |
| * if and wherever such third-party acknowledgments normally appear. |
| * |
| * 4. The names "Xalan" and "Apache Software Foundation" must |
| * not be used to endorse or promote products derived from this |
| * software without prior written permission. For written |
| * permission, please contact apache@apache.org. |
| * |
| * 5. Products derived from this software may not be called "Apache", |
| * nor may "Apache" appear in their name, without prior written |
| * permission of the Apache Software Foundation. |
| * |
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR |
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * ==================================================================== |
| * |
| * This software consists of voluntary contributions made by many |
| * individuals on behalf of the Apache Software Foundation and was |
| * originally based on software copyright (c) 1999, Lotus |
| * Development Corporation., http://www.lotus.com. For more |
| * information on the Apache Software Foundation, please see |
| * <http://www.apache.org/>. |
| */ |
| |
| |
| package org.apache.xpath.domapi; |
| |
| import org.w3c.dom.xpath.XPathNamespace; |
| import org.w3c.dom.Attr; |
| import org.w3c.dom.DOMException; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.NamedNodeMap; |
| import org.w3c.dom.Node; |
| import org.w3c.dom.NodeList; |
| |
| /** |
| * |
| * <meta name="usage" content="experimental"/> |
| * |
| * The <code>XPathNamespace</code> interface is returned by |
| * <code>XPathResult</code> interfaces to represent the XPath namespace node |
| * type that DOM lacks. There is no public constructor for this node type. |
| * Attempts to place it into a hierarchy or a NamedNodeMap result in a |
| * <code>DOMException</code> with the code <code>HIERARCHY_REQUEST_ERR</code> |
| * . This node is read only, so methods or setting of attributes that would |
| * mutate the node result in a DOMException with the code |
| * <code>NO_MODIFICATION_ALLOWED_ERR</code>. |
| * <p>The core specification describes attributes of the <code>Node</code> |
| * interface that are different for different node node types but does not |
| * describe <code>XPATH_NAMESPACE_NODE</code>, so here is a description of |
| * those attributes for this node type. All attributes of <code>Node</code> |
| * not described in this section have a <code>null</code> or |
| * <code>false</code> value. |
| * <p><code>ownerDocument</code> matches the <code>ownerDocument</code> of the |
| * <code>ownerElement</code> even if the element is later adopted. |
| * <p><code>prefix</code> is the prefix of the namespace represented by the |
| * node. |
| * <p><code>nodeName</code> is the same as <code>prefix</code>. |
| * <p><code>nodeType</code> is equal to <code>XPATH_NAMESPACE_NODE</code>. |
| * <p><code>namespaceURI</code> is the namespace URI of the namespace |
| * represented by the node. |
| * <p><code>adoptNode</code>, <code>cloneNode</code>, and |
| * <code>importNode</code> fail on this node type by raising a |
| * <code>DOMException</code> with the code <code>NOT_SUPPORTED_ERR</code>.In |
| * future versions of the XPath specification, the definition of a namespace |
| * node may be changed incomatibly, in which case incompatible changes to |
| * field values may be required to implement versions beyond XPath 1.0. |
| * <p>See also the <a href='http://www.w3.org/2002/08/WD-DOM-Level-3-XPath-20020820'>Document Object Model (DOM) Level 3 XPath Specification</a>. |
| * |
| * This implementation wraps the DOM attribute node that contained the |
| * namespace declaration. |
| */ |
| |
| public class XPathNamespaceImpl implements XPathNamespace { |
| |
| // Node that XPathNamespaceImpl wraps |
| Node m_attributeNode = null; |
| |
| /** |
| * Constructor for XPathNamespaceImpl. |
| */ |
| public XPathNamespaceImpl(Node node) { |
| m_attributeNode = node; |
| } |
| |
| /** |
| * @see org.apache.xalan.dom3.xpath.XPathNamespace#getOwnerElement() |
| */ |
| public Element getOwnerElement() { |
| return ((Attr)m_attributeNode).getOwnerElement(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getNodeName() |
| */ |
| public String getNodeName() { |
| return "#namespace"; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getNodeValue() |
| */ |
| public String getNodeValue() throws DOMException { |
| return m_attributeNode.getNodeValue(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#setNodeValue(String) |
| */ |
| public void setNodeValue(String arg0) throws DOMException { |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getNodeType() |
| */ |
| public short getNodeType() { |
| return XPathNamespace.XPATH_NAMESPACE_NODE; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getParentNode() |
| */ |
| public Node getParentNode() { |
| return m_attributeNode.getParentNode(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getChildNodes() |
| */ |
| public NodeList getChildNodes() { |
| return m_attributeNode.getChildNodes(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getFirstChild() |
| */ |
| public Node getFirstChild() { |
| return m_attributeNode.getFirstChild(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getLastChild() |
| */ |
| public Node getLastChild() { |
| return m_attributeNode.getLastChild(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getPreviousSibling() |
| */ |
| public Node getPreviousSibling() { |
| return m_attributeNode.getPreviousSibling(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getNextSibling() |
| */ |
| public Node getNextSibling() { |
| return m_attributeNode.getNextSibling(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getAttributes() |
| */ |
| public NamedNodeMap getAttributes() { |
| return m_attributeNode.getAttributes(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getOwnerDocument() |
| */ |
| public Document getOwnerDocument() { |
| return m_attributeNode.getOwnerDocument(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#insertBefore(Node, Node) |
| */ |
| public Node insertBefore(Node arg0, Node arg1) throws DOMException { |
| return null; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#replaceChild(Node, Node) |
| */ |
| public Node replaceChild(Node arg0, Node arg1) throws DOMException { |
| return null; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#removeChild(Node) |
| */ |
| public Node removeChild(Node arg0) throws DOMException { |
| return null; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#appendChild(Node) |
| */ |
| public Node appendChild(Node arg0) throws DOMException { |
| return null; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#hasChildNodes() |
| */ |
| public boolean hasChildNodes() { |
| return false; |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#cloneNode(boolean) |
| */ |
| public Node cloneNode(boolean arg0) { |
| throw new DOMException(DOMException.NOT_SUPPORTED_ERR,null); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#normalize() |
| */ |
| public void normalize() { |
| m_attributeNode.normalize(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#isSupported(String, String) |
| */ |
| public boolean isSupported(String arg0, String arg1) { |
| return m_attributeNode.isSupported(arg0, arg1); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getNamespaceURI() |
| */ |
| public String getNamespaceURI() { |
| |
| // For namespace node, the namespaceURI is the namespace URI |
| // of the namespace represented by the node. |
| return m_attributeNode.getNodeValue(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getPrefix() |
| */ |
| public String getPrefix() { |
| return m_attributeNode.getPrefix(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#setPrefix(String) |
| */ |
| public void setPrefix(String arg0) throws DOMException { |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#getLocalName() |
| */ |
| public String getLocalName() { |
| |
| // For namespace node, the local name is the same as the prefix |
| return m_attributeNode.getPrefix(); |
| } |
| |
| /** |
| * @see org.w3c.dom.Node#hasAttributes() |
| */ |
| public boolean hasAttributes() { |
| return m_attributeNode.hasAttributes(); |
| } |
| |
| } |