/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESNAMEDNODEMAPBRIDGE_HEADER_GUARD_1357924680) #define XERCESNAMEDNODEMAPBRIDGE_HEADER_GUARD_1357924680 #include #if XERCES_VERSION_MAJOR >= 2 #include #else #include #endif #include namespace XALAN_CPP_NAMESPACE { class XercesBridgeNavigator; class XercesNodeBridge; /** * This class is deprecated. * * @deprecated This class is part of the deprecated Xerces DOM bridge. */ class XALAN_XERCESPARSERLIAISON_EXPORT XercesNamedNodeMapBridge : public XalanNamedNodeMap { public: typedef xercesc::DOM_NamedNodeMap DOM_NamedNodeMapType; XercesNamedNodeMapBridge( const DOM_NamedNodeMapType& theXercesNamedNodeMap, const XercesBridgeNavigator& theNavigator); virtual ~XercesNamedNodeMapBridge(); /** @name Set functions. */ //@{ /** * Adds a node using its nodeName attribute. * *
As the nodeName attribute is used to derive the name * which the node must be stored under, multiple nodes of certain types * (those that have a "special" string value) cannot be stored as the names * would clash. This is seen as preferable to allowing nodes to be aliased. * @param arg A node to store in a named node map. The node will later be * accessible using the value of the nodeName attribute of * the node. If a node with that name is already present in the map, it * is replaced by the new one. * @return If the new Node replaces an existing node the * replaced Node is returned, * otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if arg was created from a * different document than the one that created the * NamedNodeMap. *
NO_MODIFICATION_ALLOWED_ERR: Raised if this * NamedNodeMap is readonly. *
INUSE_ATTRIBUTE_ERR: Raised if arg is an * Attr that is already an attribute of another * Element object. The DOM user must explicitly clone * Attr nodes to re-use them in other elements. */ virtual XalanNode* setNamedItem(XalanNode* arg); /** * Returns the indexth item in the map. * * If index * is greater than or equal to the number of nodes in the map, this returns * null. * @param index Index into the map. * @return The node at the indexth position in the * NamedNodeMap, or null if that is not a valid * index. */ virtual XalanNode* item(unsigned int index) const; //@} /** @name Get functions. */ //@{ /** * Retrieves a node specified by name. * * @param name The nodeName of a node to retrieve. * @return A DOM_Node (of any type) with the specified nodeName, or * null if it does not identify any node in * the map. */ virtual XalanNode* getNamedItem(const XalanDOMString& name) const; /** * The number of nodes in the map. * * The range of valid child node indices is * 0 to length-1 inclusive. */ virtual unsigned int getLength() const; //@} /** @name Functions to change the node collection. */ //@{ /** * Removes a node specified by name. * * If the removed node is an * Attr with a default value it is immediately replaced. * @param name The nodeName of a node to remove. * @return The node removed from the map or null if no node * with such a name exists. * @exception DOMException * NOT_FOUND_ERR: Raised if there is no node named name in * the map. *
* NO_MODIFICATION_ALLOWED_ERR: Raised if this NamedNodeMap * is readonly. */ virtual XalanNode* removeNamedItem(const XalanDOMString& name); //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Retrieves a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to retrieve. * @param localName The local name of the node to retrieve. * @return A DOM_Node (of any type) with the specified * local name and namespace URI, or null if they do not * identify any node in the map. */ virtual XalanNode* getNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName) const; /** * Adds a node using its namespaceURI and localName. * @param arg A node to store in a named node map. The node will later be * accessible using the value of the namespaceURI and * localName attribute of the node. If a node with those * namespace URI and local name is already present in the map, it is * replaced by the new one. * @return If the new Node replaces an existing node the * replaced Node is returned, * otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if arg was created from a * different document than the one that created the * NamedNodeMap. *
NO_MODIFICATION_ALLOWED_ERR: Raised if this * NamedNodeMap is readonly. *
INUSE_ATTRIBUTE_ERR: Raised if arg is an * Attr that is already an attribute of another * Element object. The DOM user must explicitly clone * Attr nodes to re-use them in other elements. */ virtual XalanNode* setNamedItemNS(XalanNode* arg); /** * Removes a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to remove. * @param localName The local name of the * node to remove. When this DOM_NamedNodeMap contains the * attributes attached to an element, as returned by the attributes * attribute of the DOM_Node interface, if the removed * attribute is known to have a default value, an attribute * immediately appears containing the default value * as well as the corresponding namespace URI, local name, and prefix. * @return The node removed from the map if a node with such a local name * and namespace URI exists. * @exception DOMException * NOT_FOUND_ERR: Raised if there is no node named name in * the map. *
* NO_MODIFICATION_ALLOWED_ERR: Raised if this NamedNodeMap * is readonly. */ virtual XalanNode* removeNamedItemNS( const XalanDOMString& namespaceURI, const XalanDOMString& localName); //@} private: // Not implemented... XercesNamedNodeMapBridge(const XercesNamedNodeMapBridge& theSource); XercesNamedNodeMapBridge& operator=(const XercesNamedNodeMapBridge& theRHS); bool operator==(const XercesNamedNodeMapBridge& theRHS) const; // $$$ ToDo: Eventually, this will not need to be mutable. mutable DOM_NamedNodeMapType m_xercesNamedNodeMap; const XercesBridgeNavigator& m_navigator; }; } #endif // !defined(XERCESNAMEDNODEMAPBRIDGE_HEADER_GUARD_1357924680)