## org.mozilla.javascript.ast
Class XmlRef

    java.lang.Object
      org.mozilla.javascript.Node
          org.mozilla.javascript.ast.AstNode
              org.mozilla.javascript.ast.XmlRef

All Implemented Interfaces:
  java.lang.Comparable<AstNode>, java.lang.Iterable<Node>

Direct Known Subclasses:
  XmlElemRef, XmlPropRef

    public abstract class XmlRef

extends AstNode

Base class for E4X XML attribute-access or property-get expressions. Such expressions can take a variety of forms. The general syntax has three parts:

1. optional: an `@`
(specifying an attribute access)
2. optional: a namespace (a `Name`) and double-colon
3. required: either a `Name` or a bracketed [expression]

The property-name expressions (examples: `ns::name`, `@name`) are represented as `XmlPropRef` nodes. The bracketed-expression versions (examples: `ns::[name]`, `@[name]`) become `XmlElemRef` nodes.

This node type (or more specifically, its subclasses) will sometimes be the right-hand child of a `PropertyGet` node or an `XmlMemberGet` node. The `XmlRef` node may also be a standalone primary expression with no explicit target, which is valid in certain expression contexts such as `company..employee.(@id &lt; 100)` - in this case, the `@id` is an `XmlRef` that is part of an infix '<' expression whose parent is an `XmlDotQuery` node.

Nested Class Summary

Nested classes/interfaces inherited from class org.mozilla.javascript.ast.AstNode
`AstNode.DebugPrintVisitor, AstNode.PositionComparator`

Nested classes/interfaces inherited from class org.mozilla.javascript.Node
`Node.NodeIterator`

Field Summary
`protected int` `atPos`
`protected int` `colonPos`
`protected Name` `namespace`

Fields inherited from class org.mozilla.javascript.ast.AstNode
`length, parent, position`

Fields inherited from class org.mozilla.javascript.Node

`ATTRIBUTE_FLAG, BOTH, CASEARRAY_PROP, CATCH_SCOPE_PROP, CONTROL_BLOCK_PROP, DECR_FLAG, DESCENDANTS_FLAG, DESTRUCTURING_ARRAY_LENGTH, DESTRUCTURING_NAMES, DESTRUCTURING_PARAMS, DESTRUCTURING_SHORTHAND, DIRECTCALL_PROP, END_DROPS_OFF, END_RETURNS, END_RETURNS_VALUE, END_UNREACHED, END_YIELDS, EXPRESSION_CLOSURE_PROP, first, FUNCTION_PROP, GENERATOR_END_PROP, INCRDECR_PROP, ISNUMBER_PROP, JSDOC_PROP, LABEL_ID_PROP, last, LAST_PROP, LEFT, lineno, LOCAL_BLOCK_PROP, LOCAL_PROP, MEMBER_TYPE_PROP, NAME_PROP, next, NON_SPECIALCALL, OBJECT_IDS_PROP, PARENTHESIZED_PROP, POST_FLAG, PROPERTY_FLAG, propListHead, REGEXP_PROP, RIGHT, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, type, VARIABLE_PROP`

Constructor Summary
`XmlRef()`
`XmlRef(int pos)`
`XmlRef(int pos, int len)`

Method Summary
`int` `getAtPos()` Returns position of `@`-token, or -1 if this is not an attribute-access expression.
`int` `getColonPos()` Returns position of `::` token, or -1 if not present.
`Name` `getNamespace()` Return the namespace.
`boolean` `isAttributeAccess()` Returns `true` if this expression began with an `@`-token.
`void` `setAtPos(int atPos)` Sets position of `@`-token, or -1
`void` `setColonPos(int colonPos)` Sets position of `::` token, or -1 if not present
`void` `setNamespace(Name namespace)` Sets namespace, and sets its parent to this node.

Methods inherited from class org.mozilla.javascript.ast.AstNode
`addChild, assertNotNull, codeBug, compareTo, debugPrint, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, printList, setBounds, setLength, setParent, setPosition, setRelative, shortName, toSource, toSource, visit`

Methods inherited from class org.mozilla.javascript.Node

`addChildAfter, addChildBefore, addChildrenToBack, addChildrenToFront, addChildToBack, addChildToFront, getChildBefore, getDouble, getExistingIntProp, getFirstChild, getIntProp, getJsDoc, getLastChild, getLastSibling, getNext, getProp, getScope, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, setDouble, setJsDoc, setLineno, setScope, setString, setType, toString, toStringTree`

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

Field Detail

### namespace

    protected Name namespace

### atPos

    protected int atPos

### colonPos

    protected int colonPos

Constructor Detail

### XmlRef

    public XmlRef()

### XmlRef

    public XmlRef(int pos)

### XmlRef

    public XmlRef(int pos,
                  int len)

Method Detail

### getNamespace

    public Name getNamespace()

  Return the namespace. May be `@null`.

### setNamespace

    public void setNamespace(Name namespace)

  Sets namespace, and sets its parent to this node. Can be `null`.

### isAttributeAccess

    public boolean isAttributeAccess()

  Returns `true` if this expression began with an `@`-token.

### getAtPos

    public int getAtPos()

  Returns position of `@`-token, or -1 if this is not an attribute-access expression.

### setAtPos

    public void setAtPos(int atPos)

  Sets position of `@`-token, or -1

### getColonPos

    public int getColonPos()

  Returns position of `::` token, or -1 if not present. It will only be present if the namespace node is non-`null`.

### setColonPos

    public void setColonPos(int colonPos)

  Sets position of `::` token, or -1 if not present