## net.sf.saxon.tree
Class ElementWithAttributes

    java.lang.Object
      |
      +--net.sf.saxon.om.AbstractNode
            |
            +--net.sf.saxon.tree.NodeImpl
                  |
                  +--net.sf.saxon.tree.ParentNodeImpl
                        |
                        +--net.sf.saxon.tree.ElementImpl
                              |
                              +--net.sf.saxon.tree.ElementWithAttributes

All Implemented Interfaces:
  javax.xml.transform.dom.DOMLocator, org.w3c.dom.Element, FingerprintedNode, Item, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, NodeInfo, javax.xml.transform.Source, javax.xml.transform.SourceLocator

Direct Known Subclasses:
  DataElement, StyleElement

public class ElementWithAttributes
extends ElementImpl
implements org.w3c.dom.Element, org.w3c.dom.NamedNodeMap

A node in the XML parse tree representing an XML element.

This class is an implementation of NodeInfo

Field Summary
`protected AttributeCollection` `attributeList`
`protected int[]` `namespaceList`

Fields inherited from class net.sf.saxon.tree.ElementImpl
`nameCode, root, sequence`

Fields inherited from class net.sf.saxon.tree.NodeImpl
`index, parent`

Fields inherited from class net.sf.saxon.om.AbstractNode
`NODE_LETTER`

Fields inherited from interface org.w3c.dom.Node
`ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

Fields inherited from interface net.sf.saxon.om.NodeInfo
`ALL_NAMESPACES, LOCAL_NAMESPACES, NO_NAMESPACES`

Constructor Summary
`ElementWithAttributes()`

Method Summary
`void` `addNamespaceNodes(ElementImpl owner, java.util.List list, boolean addXML)` Make the set of all namespace nodes associated with this element.
`void` `copy(Receiver out, int whichNamespaces)` Copy this node to a given outputter (supporting xsl:copy-of)
`java.lang.String` `getAttribute(java.lang.String name)` Retrieves an attribute value by name.
`AttributeCollection` `getAttributeList()` Get the attribute list for this element.
`org.w3c.dom.Attr` `getAttributeNode(java.lang.String name)` Retrieves an attribute node by name.
`org.w3c.dom.Attr` `getAttributeNodeNS(java.lang.String namespaceURI, java.lang.String localName)` Retrieves an `Attr` node by local name and namespace URI.
`java.lang.String` `getAttributeNS(java.lang.String namespaceURI, java.lang.String localName)` Retrieves an attribute value by local name and namespace URI.
`org.w3c.dom.NamedNodeMap` `getAttributes()` A `NamedNodeMap` containing the attributes of this element.
`java.lang.String` `getAttributeValue(int fingerprint)` Get the value of a given attribute of this node
`int` `getLength()` Get number of attributes (DOM NamedNodeMap method).
`org.w3c.dom.Node` `getNamedItem(java.lang.String name)` Get named attribute (DOM NamedNodeMap method) Treats namespace declarations as attributes.
`org.w3c.dom.Node` `getNamedItemNS(java.lang.String uri, java.lang.String localName)` Get named attribute (DOM NamedNodeMap method) Treats namespace declarations as attributes.
`int[]` `getNamespaceCodes()` Get the list of in-scope namespaces for this element as an array of namespace codes.
`java.lang.String` `getPrefixForURI(java.lang.String uri)` Search the NamespaceList for a given URI, returning the corresponding prefix.
`short` `getURICodeForPrefix(java.lang.String prefix)` Search the NamespaceList for a given prefix, returning the corresponding URI.
`boolean` `hasAttribute(java.lang.String name)` Returns `true` when an attribute with a given name is specified on this element or has a default value, `false` otherwise.
`boolean` `hasAttributeNS(java.lang.String namespaceURI, java.lang.String localName)` Returns `true` when an attribute with a given local name and namespace URI is specified on this element or has a default value, `false` otherwise.
`boolean` `hasAttributes()` Returns whether this node (if it is an element) has any attributes.
`void` `initialise(int nameCode, AttributeCollection atts, NodeInfo parent, java.lang.String baseURI, int lineNumber, int sequenceNumber)` Initialise a new ElementWithAttributes with an element name and attribute list
`org.w3c.dom.Node` `item(int index)` Get n'th attribute (DOM NamedNodeMap method).
`void` `outputNamespaceNodes(Receiver out, boolean includeAncestors)` Output all namespace nodes associated with this element.
`void` `removeAttribute(java.lang.String name)` Removes an attribute by name.
`org.w3c.dom.Attr` `removeAttributeNode(org.w3c.dom.Attr oldAttr)` Removes the specified attribute node.
`void` `removeAttributeNS(java.lang.String namespaceURI, java.lang.String localName)` Removes an attribute by local name and namespace URI.
`org.w3c.dom.Node` `removeNamedItem(java.lang.String name)` Remove named attribute (DOM NamedNodeMap method: always fails)
`org.w3c.dom.Node` `removeNamedItemNS(java.lang.String uri, java.lang.String localName)` Remove named attribute (DOM NamedNodeMap method: always fails)
`void` `setAttribute(java.lang.String name, java.lang.String value)` Set the value of an attribute on the current element.
`org.w3c.dom.Attr` `setAttributeNode(org.w3c.dom.Attr newAttr)` Adds a new attribute node.
`org.w3c.dom.Attr` `setAttributeNodeNS(org.w3c.dom.Attr newAttr)` Add a new attribute.
`void` `setAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName, java.lang.String value)` Adds a new attribute.
`org.w3c.dom.Node` `setNamedItem(org.w3c.dom.Node arg)` Set named attribute (DOM NamedNodeMap method: always fails)
`org.w3c.dom.Node` `setNamedItemNS(org.w3c.dom.Node arg)` Set named attribute (DOM NamedNodeMap method: always fails)
`void` `setNamespaceDeclarations(int[] namespaces, int namespacesUsed)` Set the namespace declarations for the element

Methods inherited from class net.sf.saxon.tree.ElementImpl
`addChild, compact, enumerateChildren, generateId, getBaseURI, getDocumentRoot, getFirstChild, getLastChild, getLineNumber, getNameCode, getNodeKind, getNodeValue, getNthChild, getRoot, getSequenceNumber, getStringValue, getSystemId, hasChildNodes, setLineNumber, setNameCode, setSystemId, useChildrenArray`

Methods inherited from class net.sf.saxon.tree.NodeImpl
`compareOrder, copy, getDisplayName, getDocumentElement, getFingerprint, getLocalPart, getNamePool, getNextInDocument, getNextSibling, getOriginatingNode, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getURI, isSameNodeInfo, iterateAxis, iterateAxis`

Methods inherited from class net.sf.saxon.om.AbstractNode

`appendChild, appendData, cloneNode, compareDocumentPosition, createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, deleteData, disallowUpdate, getChildNodes, getColumnNumber, getData, getDoctype, getDocumentNumber, getElementById, getElementsByTagName, getElementsByTagNameNS, getFeature, getImplementation, getLocalName, getName, getNamespaceURI, getNodeName, getNodeType, getOwnerDocument, getOwnerElement, getParentNode, getPublicId, getSchemaTypeInfo, getSpecified, getTagName, getTextContent, getTypeAnnotation, getTypedValue, getUserData, getValue, importNode, insertBefore, insertData, isDefaultNamespace, isEqualNode, isId, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, replaceData, setData, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setNodeValue, setPrefix, setTextContent, setValue, splitText, substringData, supports`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.w3c.dom.Element
`getElementsByTagName, getElementsByTagNameNS, getTagName`

Methods inherited from interface org.w3c.dom.Node
`appendChild, cloneNode, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix`

Field Detail

### attributeList

    protected AttributeCollection attributeList

### namespaceList

    protected int[] namespaceList

Constructor Detail

### ElementWithAttributes

    public ElementWithAttributes()

Method Detail

### initialise

    public void initialise(int nameCode,
                           AttributeCollection atts,
                           NodeInfo parent,
                           java.lang.String baseURI,
                           int lineNumber,
                           int sequenceNumber)

  Initialise a new ElementWithAttributes with an element name and attribute list

  Overrides:
    `initialise` in class `ElementImpl`
  Parameters:
    `nameCode` - The element name, with namespaces resolved
    `atts` - The attribute list, after namespace processing
    `parent` - The parent node
    `baseURI` - The base URI of the new element
    `lineNumber` - The line number of the element in the source document
    `sequenceNumber` - Integer identifying this element within the document

### setNamespaceDeclarations

    public void setNamespaceDeclarations(int[] namespaces,
                                         int namespacesUsed)

  Set the namespace declarations for the element

### getURICodeForPrefix

    public short getURICodeForPrefix(java.lang.String prefix)
                              throws NamespaceException

  Search the NamespaceList for a given prefix, returning the corresponding URI.

  Parameters:
    `prefix` - The prefix to be matched. To find the default namespace, supply ""
  Returns:
    The URI code corresponding to this namespace. If it is an unnamed default namespace, return Namespace.NULL_CODE.
  Throws:
    `NamespaceException` - if the prefix has not been declared on this NamespaceList.

### getPrefixForURI

    public java.lang.String getPrefixForURI(java.lang.String uri)

  Search the NamespaceList for a given URI, returning the corresponding prefix.

  Parameters:
    `uri` - The URI to be matched.
  Returns:
    The prefix corresponding to this URI. If not found, return null. If there is more than one prefix matching the URI, the first one found is returned. If the URI matches the default namespace, return an empty string.

### addNamespaceNodes

    public void addNamespaceNodes(ElementImpl owner,
                                  java.util.List list,
                                  boolean addXML)

  Make the set of all namespace nodes associated with this element.

  Overrides:
    `addNamespaceNodes` in class `ElementImpl`
  Parameters:
    `owner` - The element owning these namespace nodes.
    `list` - a List containing NamespaceImpl objects representing the namespaces in scope for this element; the method appends nodes to this List, which should initially be empty. Note that the returned list will never contain the XML namespace (to get this, the NamespaceEnumeration class adds it itself). The list WILL include an entry for the undeclaration xmlns=""; again it is the job of NamespaceEnumeration to ignore this, since it doesn't represent a true namespace node.
    `addXML` - Add a namespace node for the XML namespace

### outputNamespaceNodes

    public void outputNamespaceNodes(Receiver out,
                                     boolean includeAncestors)
                              throws XPathException

  Output all namespace nodes associated with this element.

  Specified by:
    `outputNamespaceNodes` in interface `NodeInfo`
  Overrides:
    `outputNamespaceNodes` in class `ElementImpl`
  Parameters:
    `out` - The relevant outputter
    `XPathException`

### getNamespaceCodes

    public int[] getNamespaceCodes()

  Get the list of in-scope namespaces for this element as an array of namespace codes. (Used by LiteralResultElement)

### getAttributeList

    public AttributeCollection getAttributeList()

  Get the attribute list for this element.

  Overrides:
    `getAttributeList` in class `ElementImpl`
  Returns:
    The attribute list. This will not include any namespace attributes. The attribute names will be in expanded form, with prefixes replaced by URIs

### hasAttributes

    public boolean hasAttributes()

  Returns whether this node (if it is an element) has any attributes.

  Specified by:
    `hasAttributes` in interface `org.w3c.dom.Node`
  Overrides:
    `hasAttributes` in class `NodeImpl`
  Returns:
    `true` if this node has any attributes, `false` otherwise.
  Since:
    DOM Level 2

### getAttributeValue

    public java.lang.String getAttributeValue(int fingerprint)

  Get the value of a given attribute of this node

  Specified by:
    `getAttributeValue` in interface `NodeInfo`
  Overrides:
    `getAttributeValue` in class `NodeImpl`
  Parameters:
    `fingerprint` - The fingerprint of the attribute name
  Returns:
    the attribute value if it exists or null if not

### setAttribute

    public void setAttribute(java.lang.String name,
                             java.lang.String value)
                      throws org.w3c.dom.DOMException

  Set the value of an attribute on the current element. This affects subsequent calls of getAttribute() for that element.

  Specified by:
    `setAttribute` in interface `org.w3c.dom.Element`
  Overrides:
    `setAttribute` in class `ElementImpl`
  Parameters:
    `name` - The name of the attribute to be set. Any prefix is interpreted relative to the namespaces defined for this element.
    `value` - The new value of the attribute. Set this to null to remove the attribute.
  Throws:
    `org.w3c.dom.DOMException` - (always): Saxon trees are immutable.

### copy

    public void copy(Receiver out,
                     int whichNamespaces)
              throws XPathException

  Copy this node to a given outputter (supporting xsl:copy-of)

  Overrides:
    `copy` in class `ElementImpl`
  Parameters:
    `out` - The outputter
    `whichNamespaces` - indicates which namespaces should be output: all, none, or local namespaces only (those not declared on the parent element)
    `XPathException`

### getAttribute

    public java.lang.String getAttribute(java.lang.String name)

  Retrieves an attribute value by name. Namespace declarations are not returned.

  Specified by:
    `getAttribute` in interface `org.w3c.dom.Element`
  Overrides:
    `getAttribute` in class `AbstractNode`
  Parameters:
    `name` - The name of the attribute to retrieve.
  Returns:
    The `Attr` value as a string, or the empty string if that attribute does not have a specified or default value. (Note the difference from getAttributeValue(), which returns null if there is no value).

### getAttributes

    public org.w3c.dom.NamedNodeMap getAttributes()

  A `NamedNodeMap` containing the attributes of this element. This is a DOM method, so the list of attributes includes namespace declarations.

  Specified by:
    `getAttributes` in interface `org.w3c.dom.Node`
  Overrides:
    `getAttributes` in class `AbstractNode`

### removeAttribute

    public void removeAttribute(java.lang.String name)

  Removes an attribute by name.

  Specified by:
    `removeAttribute` in interface `org.w3c.dom.Element`
  Overrides:
    `removeAttribute` in class `AbstractNode`
  Parameters:
    `name` - The name of the attribute to remove.

### getAttributeNode

    public org.w3c.dom.Attr getAttributeNode(java.lang.String name)

  Retrieves an attribute node by name. Namespace declarations are not returned.
  To retrieve an attribute node by qualified name and namespace URI, use the `getAttributeNodeNS` method.

  Specified by:
    `getAttributeNode` in interface `org.w3c.dom.Element`
  Overrides:
    `getAttributeNode` in class `AbstractNode`
  Parameters:
    `name` - The name (`nodeName` ) of the attribute to retrieve.
  Returns:
    The `Attr` node with the specified name ( `nodeName` ) or `null` if there is no such attribute.

### setAttributeNode

    public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr newAttr)
                                      throws org.w3c.dom.DOMException

  Adds a new attribute node. Always fails

  Specified by:
    `setAttributeNode` in interface `org.w3c.dom.Element`
  Overrides:
    `setAttributeNode` in class `AbstractNode`
  Throws:
    `org.w3c.dom.DOMException` - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.

### removeAttributeNode

    public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr oldAttr)
                                         throws org.w3c.dom.DOMException

  Removes the specified attribute node. Always fails

  Specified by:
    `removeAttributeNode` in interface `org.w3c.dom.Element`
  Overrides:
    `removeAttributeNode` in class `AbstractNode`
  Throws:
    `org.w3c.dom.DOMException` - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.

### getAttributeNS

    public java.lang.String getAttributeNS(java.lang.String namespaceURI,
                                           java.lang.String localName)

  Retrieves an attribute value by local name and namespace URI. HTML-only DOM implementations do not need to implement this method.

  Specified by:
    `getAttributeNS` in interface `org.w3c.dom.Element`
  Overrides:
    `getAttributeNS` in class `AbstractNode`
  Parameters:
    `namespaceURI` - The namespace URI of the attribute to retrieve.
    `localName` - The local name of the attribute to retrieve.
  Returns:
    The `Attr` value as a string, or the empty string if that attribute does not have a specified or default value.
  Since:
    DOM Level 2

### setAttributeNS

    public void setAttributeNS(java.lang.String namespaceURI,
                               java.lang.String qualifiedName,
                               java.lang.String value)
                        throws org.w3c.dom.DOMException

  Adds a new attribute. Always fails.

  Specified by:
    `setAttributeNS` in interface `org.w3c.dom.Element`
  Overrides:
    `setAttributeNS` in class `AbstractNode`
  Parameters:
    `namespaceURI` - The namespace URI of the attribute to create or alter.
    `qualifiedName` - The qualified name of the attribute to create or alter.
    `value` - The value to set in string form.
  Throws:
    `org.w3c.dom.DOMException` - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.

### removeAttributeNS

    public void removeAttributeNS(java.lang.String namespaceURI,
                                  java.lang.String localName)
                           throws org.w3c.dom.DOMException

  Removes an attribute by local name and namespace URI. Always fails

  Specified by:
    `removeAttributeNS` in interface `org.w3c.dom.Element`
  Overrides:
    `removeAttributeNS` in class `AbstractNode`
  Throws:
    `org.w3c.dom.DOMException` - NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
  Since:
    DOM Level 2

### getAttributeNodeNS

    public org.w3c.dom.Attr getAttributeNodeNS(java.lang.String namespaceURI,
                                               java.lang.String localName)

  Retrieves an `Attr` node by local name and namespace URI. DOM method, so namespace declarations count as attributes.

  Specified by:
    `getAttributeNodeNS` in interface `org.w3c.dom.Element`
  Overrides:
    `getAttributeNodeNS` in class `AbstractNode`
  Parameters:
    `namespaceURI` - The namespace URI of the attribute to retrieve.
    `localName` - The local name of the attribute to retrieve.
  Returns:
    The `Attr` node with the specified attribute local name and namespace URI or `null` if there is no such attribute.
  Since:
    DOM Level 2

### setAttributeNodeNS

    public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr newAttr)
                                        throws org.w3c.dom.DOMException

  Add a new attribute. Always fails.

  Specified by:
    `setAttributeNodeNS` in interface `org.w3c.dom.Element`
  Overrides:
    `setAttributeNodeNS` in class `AbstractNode`
  Parameters:
    `newAttr` - The `Attr` node to add to the attribute list.
  Returns:
    If the `newAttr` attribute replaces an existing attribute with the same local name and namespace URI , the replaced `Attr` node is returned, otherwise `null` is returned.
  Throws:
    `org.w3c.dom.DOMException` -
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
  Since:
    DOM Level 2

### hasAttribute

    public boolean hasAttribute(java.lang.String name)

  Returns `true` when an attribute with a given name is specified on this element or has a default value, `false` otherwise. Namespace declarations are not included.

  Specified by:
    `hasAttribute` in interface `org.w3c.dom.Element`
  Overrides:
    `hasAttribute` in class `AbstractNode`
  Parameters:
    `name` - The name of the attribute to look for.
  Returns:
    `true` if an attribute with the given name is specified on this element or has a default value, `false` otherwise.
  Since:
    DOM Level 2

### hasAttributeNS

    public boolean hasAttributeNS(java.lang.String namespaceURI,
                                  java.lang.String localName)

  Returns `true` when an attribute with a given local name and namespace URI is specified on this element or has a default value, `false` otherwise. This is a DOM method so namespace declarations are treated as attributes.

  Specified by:
    `hasAttributeNS` in interface `org.w3c.dom.Element`
  Overrides:
    `hasAttributeNS` in class `AbstractNode`
  Parameters:
    `namespaceURI` - The namespace URI of the attribute to look for.
    `localName` - The local name of the attribute to look for.
  Returns:
    `true` if an attribute with the given local name and namespace URI is specified or has a default value on this element, `false` otherwise.
  Since:
    DOM Level 2

### getNamedItem

    public org.w3c.dom.Node getNamedItem(java.lang.String name)

  Get named attribute (DOM NamedNodeMap method) Treats namespace declarations as attributes.

  Specified by:
    `getNamedItem` in interface `org.w3c.dom.NamedNodeMap`

### setNamedItem

    public org.w3c.dom.Node setNamedItem(org.w3c.dom.Node arg)
                                  throws org.w3c.dom.DOMException

  Set named attribute (DOM NamedNodeMap method: always fails)

  Specified by:
    `setNamedItem` in interface `org.w3c.dom.NamedNodeMap`
    `org.w3c.dom.DOMException`

### removeNamedItem

    public org.w3c.dom.Node removeNamedItem(java.lang.String name)
                                     throws org.w3c.dom.DOMException

  Remove named attribute (DOM NamedNodeMap method: always fails)

  Specified by:
    `removeNamedItem` in interface `org.w3c.dom.NamedNodeMap`
    `org.w3c.dom.DOMException`

### item

    public org.w3c.dom.Node item(int index)

  Get n'th attribute (DOM NamedNodeMap method). Namespace declarations are not returned.

  Specified by:
    `item` in interface `org.w3c.dom.NamedNodeMap`

### getLength

    public int getLength()

  Get number of attributes (DOM NamedNodeMap method). Treats namespace declarations as attributes.

  Specified by:
    `getLength` in interface `org.w3c.dom.NamedNodeMap`
  Overrides:
    `getLength` in class `AbstractNode`

### getNamedItemNS

    public org.w3c.dom.Node getNamedItemNS(java.lang.String uri,
                                           java.lang.String localName)

  Get named attribute (DOM NamedNodeMap method) Treats namespace declarations as attributes.

  Specified by:
    `getNamedItemNS` in interface `org.w3c.dom.NamedNodeMap`

### setNamedItemNS

    public org.w3c.dom.Node setNamedItemNS(org.w3c.dom.Node arg)
                                    throws org.w3c.dom.DOMException

  Set named attribute (DOM NamedNodeMap method: always fails)

  Specified by:
    `setNamedItemNS` in interface `org.w3c.dom.NamedNodeMap`
    `org.w3c.dom.DOMException`

### removeNamedItemNS

    public org.w3c.dom.Node removeNamedItemNS(java.lang.String uri,
                                              java.lang.String localName)
                                       throws org.w3c.dom.DOMException

  Remove named attribute (DOM NamedNodeMap method: always fails)

  Specified by:
    `removeNamedItemNS` in interface `org.w3c.dom.NamedNodeMap`
    `org.w3c.dom.DOMException`