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()
+
+
+
+