diff --git a/content/README.E4X b/content/README.E4X new file mode 100644 index 00000000..3edb7714 --- /dev/null +++ b/content/README.E4X @@ -0,0 +1,149 @@ + 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() + + + +