A terse introduction to E4X
Public Domain
The inline XML literals in this code are part of E4X, a standard
XML processing interface for ECMAScript. In addition to syntax
for XML literals, E4X provides a new kind of native object,
"xml", and a syntax, similar to XPath, for accessing and
modifying the tree. Here is a brief synopsis of the kind of
usage you'll see herein:
> let xml =
;
// Select all bar elements of the root foo element
> xml.bar
// Select all baz elements anywhere beneath the root
> xml..baz
// Select all of the immediate children of the root
> xml.*
// Select the bar attribute of the root node
> xml.@bar
baz
// Select all id attributes in the tree
> xml..@id
1
2
// Select all attributes of the root node
> xml.@*
baz
quz
// Add a quux elemend beneath the first baz
> xml..baz[0] +=
> xml
// and beneath the second
> xml.baz[1] =
> xml
// Replace bar's subtree with a foo element
> xml.bar.* =
> xml
// Add a bar below bar
> xml.bar.* +=
> xml
// Adding a quux attribute to the root
> xml.@quux = "foo"
foo
> xml
> xml.bar.@id = "0"
> xml..foo[0] = "Foo"
Foo
> xml..bar[1] = "Bar"
Bar
> xml
js> xml
Foo
Bar
// Selecting all bar elements where id="1"
> xml..bar.(@id == 1)
Bar
// Literals:
// XMLList literal. No root node.
> <>Foo
Baz>
Foo
Baz
// Interpolation.
> let x = ""
> {x + ">"}
>
> {x + ">"}.toXMLString()
<foo/><?>
> let x =
> {x}.toXMLString()