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)

optional: a namespace (a `Name`) and double-colon
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

Fields
`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

Constructors
Constructor and Description
`XmlRef()`
`XmlRef(int pos)`
`XmlRef(int pos, int len)`

### Method Summary

Methods
`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, getJsDocNode, getLastChild, getLastSibling, getNext, getProp, getScope, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, resetTargets, setDouble, setJsDocNode, 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