diff --git a/content/xml/tests/docbook.css b/content/xml/tests/docbook.css
new file mode 100644
index 00000000000..292714c3bf1
--- /dev/null
+++ b/content/xml/tests/docbook.css
@@ -0,0 +1,610 @@
+
+XML {
+ background-color: inherit;
+}
+
+Abbrev {
+ display: block;
+}
+
+Affiliation {
+ font-style: italic;
+}
+
+Appendix Title {
+ font-weight: bold;
+ font-family: Arial;
+ font-size: 24pt;
+ bottom-margin: 10pt;
+ display: block;
+}
+
+Para Author {
+ display: inline;
+}
+
+Author {
+ display: block;
+}
+
+AuthorGroup {
+ font-size: 12pt;
+ top-margin: 25pt;
+ display: block;
+ font-weight: bold;
+}
+
+BiblioDiv Title {
+ font-style: italic;
+}
+
+Blockquote {
+ display: block;
+ margin-top: 3pt;
+ margin-left: 30pt;
+}
+
+Book Title {
+ font-weight: bold;
+ font-family: Arial;
+ font-size: 18pt;
+ bottom-margin: 10pt;
+ display: block;
+}
+
+BookInfo {
+ display: block;
+ margin-bottom: 30pt;
+}
+
+BridgeHead {
+ display: block;
+ font-size: 16pt;
+ font-weight: bold;
+ color: teal;
+}
+
+Caution {
+ prefix-format: "Caution:";
+ font-weight: bold;
+ color: red;
+}
+
+Chapter {
+ display: block;
+ margin-bottom: 25pt;
+}
+
+Chapter Title {
+ font-weight: bold;
+ font-family: Arial;
+ font-size: 20pt;
+ bottom-margin: 10pt;
+ display: block;
+}
+
+CiteTitle {
+ font-style: italic;
+}
+
+CmdSynopsis {
+ display: block;
+}
+
+CO {
+ display: block;
+}
+
+Command {
+ font-style: italic;
+}
+
+Comment {
+ display: block;
+}
+
+ComputerOutput {
+ font-family: monospace;
+}
+
+Copyright {
+ display: block;
+}
+
+Para CorpAuthor {
+ display: inline;
+}
+
+CorpAuthor {
+ display: block;
+}
+
+Email {
+ font-style: italic;
+}
+
+Editor {
+ display: block;
+}
+
+Emphasis {
+ font-style: italic;
+}
+
+ErrorType {
+ font-family: monospace;
+}
+
+Example {
+ display: block;
+ margin-top: 10pt;
+ margin-bottom: 10pt;
+}
+
+Example Title {
+ display: block;
+ font-weight: bold;
+ font-size: 14pt;
+}
+
+Figure Title {
+ font-family: Arial;
+ font-size: 10pt;
+ font-style: italic;
+ font-weight: bold;
+ display: block;
+}
+
+Filename {
+ font-style: italic;
+}
+
+Figure {
+ display: block;
+ margin-top: 10pt;
+}
+
+FirstTerm {
+ font-style: italic;
+}
+
+ForeignPhrase {
+ font-style: italic;
+}
+
+FormalPara {
+ display: block;
+}
+
+FormalPara Title {
+ display: block;
+ font-weight: bold;
+}
+
+FuncSynopsis {
+ display: block;
+}
+
+FuncSynopsisInfo {
+ display: block;
+ white-space: pre;
+}
+
+Function {
+ font-family: monospace;
+ white-space: pre;
+}
+
+Glossary {
+ display: block;
+}
+
+GlossDef {
+ display: block;
+ margin-left: 15pt;
+}
+
+GlossList {
+ display: block;
+}
+
+GlossSee {
+ display: block;
+ margin-left: 15pt;
+}
+
+GlossTerm {
+ display: block;
+ font-weight: bold;
+}
+
+InformalTable {
+ display: block;
+ margin-top: 10pt;
+ margin-bottom: 10pt;
+}
+
+Interface {
+ font-family: Arial;
+}
+
+ISBN {
+ display: block;
+ font-size: 10pt;
+}
+
+ItemizedList {
+ display: block;
+ margin-top: 5pt;
+ margin-left: 20pt;
+}
+
+LineAnnotation {
+ font-style: italic;
+}
+
+Link {
+ color: blue;
+ text-decoration: underline;
+}
+
+ListItem {
+ margin-left: 25pt;
+ display: list-item;
+}
+
+Literal {
+ font-family: monospace;
+}
+
+LiteralLayout {
+ whitespace: pre;
+ display: block;
+}
+
+Member {
+ display: block;
+ margin-left: 15pt;
+}
+
+OLink {
+ display: block;
+ font-size: 12pt;
+}
+
+Option {
+ font-family: monospace;
+}
+
+OrderedList {
+ top-margin: 5pt;
+ left-margin: 20pt;
+ bottom-margin: 10pt;
+ display: block;
+ list-style-type: decimal;
+}
+
+OrderedList Para {
+ display: block;
+ margin-top: 15pt;
+}
+
+Para OtherCredit {
+ display: inline;
+}
+
+OtherCredit {
+ display: block;
+}
+
+Para {
+ display: block;
+ margin-top: 8pt;
+}
+
+Para LiteralLayout {
+ display: block;
+ margin-top: 4pt;
+ margin-left: 10pt;
+ white-space: pre;
+}
+
+Para Screen {
+ top-margin: 7pt;
+ left-margin: 10pt;
+ bottom-margin: 7pt;
+ display: block;
+}
+
+Parameter {
+ font-family: monospace;
+}
+
+Part Title {
+ font-size: 24pt;
+ display: block;
+ font-weight: bold;
+}
+
+Preface {
+ display: block;
+ margin-top: 10pt;
+}
+
+PrintHistory {
+ display: block;
+}
+
+Procedure {
+ display: block;
+}
+
+ProgramListing {
+ display: block;
+ white-space: pre;
+ font-family: monospace;
+}
+
+ProgramListingCO {
+ display: block;
+ white-space: pre;
+ font-family: monospace;
+}
+
+PublisherName {
+ font-family: Times, New, Roman;
+ font-size: 20pt;
+ top-margin: 15pt;
+ bottom-margin: 15pt;
+ display: block;
+}
+
+RefEntry {
+ display: block;
+}
+
+RefEntryTitle {
+ display: block;
+ font-size: 20em;
+ font-weight: bold;
+}
+
+RefName {
+ font-weight: bold;
+}
+
+RefNameDiv {
+ display: block;
+}
+
+RefSect1 {
+ display: block;
+ margin-top: 10pt;
+}
+
+RefSect1 Title {
+ font-size: 14pt;
+}
+
+RefSect1Info {
+ display: block;
+ font-size: small;
+}
+
+RefSect2 {
+ display: block;
+ margin-top: 10pt;
+}
+
+RefSect2 Title {
+ font-size: 14pt;
+}
+
+RefSect2Info {
+ display: block;
+ font-size: small;
+}
+
+RefSect3 {
+ display: block;
+ margin-top: 10pt;
+}
+
+RefSect3 Title {
+ font-size: 14pt;
+}
+
+RefSect3Info {
+ display: block;
+ font-size: small;
+}
+
+RefSynopsisDiv {
+ display: block;
+ margin-top: 15pt;
+}
+
+RefSynopsisDiv Title {
+ display: block;
+ font-size: 18pt;
+}
+
+Replaceable {
+ font-family: Arial;
+ font-style: italic;
+}
+
+Screen {
+ display: block;
+ left-margin: 20pt;
+ bottom-margin: 10pt;
+ whitespace: pre;
+}
+
+ScreenCO {
+ whitespace: pre;
+}
+
+ScreenShot {
+ whitespace: pre;
+}
+
+Sect1 {
+ display: block;
+ top-margin: 16pt;
+}
+
+Sect1 Title {
+ font-family: Arial;
+ font-size: 20pt;
+ font-weight: bold;
+ display: block;
+}
+
+Sect2 {
+ display: block;
+ top-margin: 15pt;
+}
+
+Sect2 Title {
+ font-family: Arial;
+ font-size: 14pt;
+ font-weight: bold;
+ display: block;
+}
+
+Sect3 {
+ display: block;
+ top-margin: 15pt;
+}
+
+Sect3 Title {
+ font-family: Arial;
+ font-size: 14pt;
+ font-weight: bold;
+ display: block;
+}
+
+SegListItem {
+ display: block;
+}
+
+SegmentedList {
+ display: block;
+}
+
+SegmentedList Title {
+ display: block;
+ font-weight: bold;
+}
+
+Sidebar {
+ display: block;
+ margin-top: 15pt;
+ margin-left: 30pt;
+ font-family: Arial;
+ font-size: 9pt;
+}
+
+Step {
+ display: block;
+}
+
+Step Title {
+ display: block;
+ font-style: italic;
+}
+
+Subscript {
+ font-size: 5pt;
+ vertical-align: sub;
+}
+
+Subtitle {
+ font-family: Arial;
+ font-size: 20pt;
+ font-weight: bold;
+ display: block;
+ align: center;
+}
+
+Superscript {
+ font-size: 5pt;
+ vertical-align: super;
+}
+
+Synopsis {
+ display: block;
+ white-space: pre;
+}
+
+SystemItem {
+ font-family: monospace;
+}
+
+Table {
+ display: block;
+ margin-top: 10pt;
+}
+
+Table Title {
+ font-family: Arial;
+ font-size: 10pt;
+ font-style: italic;
+ font-weight: bold;
+}
+
+Term {
+ font-weight: bold;
+}
+
+Title {
+ font-family: Arial;
+ font-size: 20pt;
+ font-weight: bold;
+ display: block;
+ align: center;
+}
+
+TitleAbbrev {
+ font-family: Arial;
+ font-size: 14pt;
+ font-weight: bold;
+ display: block;
+}
+
+ULink {
+ color: blue;
+ text-decoration: underline;
+}
+
+UserInput {
+ font-family: monospace;
+ font-weight: bold;
+}
+
+VariableList Title {
+ font-weight: bold;
+ display: block;
+}
+
+VarListEntry {
+ display: block;
+ margin-top: 10pt;
+}
+
+VarListEntry Term {
+ display: block;
+ font-style: italic;
+}
+
+Warning {
+ prefix-format: "Warning:";
+ font-weight: bold;
+ color: fuchsia;
+}
+
+Year {
+ font-family: serif;
+ font-weight: bold;
+}
diff --git a/content/xml/tests/docbooktest.xml b/content/xml/tests/docbooktest.xml
new file mode 100644
index 00000000000..4423051dad6
--- /dev/null
+++ b/content/xml/tests/docbooktest.xml
@@ -0,0 +1,120 @@
+
+
+
+ SoftQuad
+Inc.
+ Demo Product Documentation
+SoftQuad Inc.
+ Element Overview
+Introduction to Elements
+By far the vast majority of objects (apart from text) that authors
+encounter when traversing a document are Element nodes.
+ Element Interfaces
+ Elements and
+Attributes
+ Introduction to Attributes
+
+Elements may have attributes associated with them; since the Element
+interface inherits from Node, the generic Node interface method
+getAttributes may be used to retrieve the set of all
+attributes for an element.
+There are methods on the Element interface to retrieve either an Attr
+object by name or an attribute value by name. In XML, where an attribute value
+may contain entity references, an Attr object should be retrieved to examine
+the possibly fairly complex sub-tree representing the attribute value. On the
+other hand, in HTML, where all attributes have simple string values, methods to
+directly access an attribute value can safely be used as a convenience.
+
+Before you can access an Attribute, you must first gain access to the
+associated Element.
+ Setting the Attribute
+Values
+Attr objects inherit the Node interface, but since they are not actually
+child nodes of the element they describe, the DOM does not consider them part
+of the document tree. Thus, the Node attributes parentNode, previousSibling,
+and nextSibling have a null value for Attr objects. The DOM takes the view that
+attributes are properties of elements rather than having a separate identity
+from the elements they are associated with; this should make it more efficient
+to implement such features as default attributes associated with all elements
+of a given type. Furthermore, Attr nodes may not be immediate children of a
+DocumentFragment. However, they can be associated with Element nodes contained
+within a DocumentFragment. In short, users and implementors of the DOM need to
+be aware that Attr nodes have some things in common with other objects
+inheriting the Node interface, but they also are quite distinct.
+The attribute's effective value is determined as follows:
+
+If this attribute has been explicitly assigned any value, that value is
+the attribute's effective value
+Otherwise, if there is a declaration for this attribute, and that
+declaration includes a default value, then that default value is the
+attribute's effective value
+Otherwise, the attribute does not exist on this element in the structure
+model until it has been explicitly added.
+In XML, where the value of an attribute can contain entity references,
+the child nodes of the Attr node provide a representation in which entity
+references are not expanded. These child nodes may be either Text or
+EntityReference nodes. Because the attribute type may be unknown, there are no
+tokenized attribute values.
+The following topics describe DOM attributes:
+
+
+Interface
+Attr
+
+
+Interface Element
+
+ DOM Level 1 Core: Element Functions
+ setAttribute
+ setAttribute
+Sets the Attributes on the associated Element object
+Fundamental
+Syntax
+ OMG IDL
+void setAttribute (in
+DOMString name, in DOMString
+value) raises (DOMException);
+ Java
+public void setAttribute (
+String name, String
+value) throws (DOMException);
+ ECMA Script
+
+ setAttribute (name, value
+)
+Parameters
+ name
+
+(IN) The name of the attribute to create or alter.
+ value
+
+(IN) Value to set in string form
+ Exceptions
+
+These are the applicable exceptions.
+
+
+
+INVALID_CHARACTER_ERR
+Raised if the specified name contains an invalid character.
+
+ NO_MODIFICATION_ALLOWED_ERR
+Raised if this node is readonly.
+
+ Remarks
+ setAttribute adds a new attribute. If an attribute
+with that name is already present in the element, its value is changed to be
+that of the value parameter. This value is a simple string, it is not parsed as
+it is being set. So any markup (such as syntax to be recognized as an entity
+reference) is treated as literal text, and needs to be appropriately escaped by
+the implementation when it is written out.
+ In order to assign an attribute value that contains entity references,
+the user must create an Attr node plus any Text and EntityReference nodes,
+build the appropriate subtree, and use setAttributeNode to
+assign it as the value of an attribute.
+
diff --git a/content/xml/tests/simple.xml b/content/xml/tests/simple.xml
new file mode 100644
index 00000000000..d0d70a92630
--- /dev/null
+++ b/content/xml/tests/simple.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ The Book
+
+ Chapter 1.
+ Yada yada yada.
+
+
diff --git a/layout/xml/tests/docbook.css b/layout/xml/tests/docbook.css
new file mode 100644
index 00000000000..292714c3bf1
--- /dev/null
+++ b/layout/xml/tests/docbook.css
@@ -0,0 +1,610 @@
+
+XML {
+ background-color: inherit;
+}
+
+Abbrev {
+ display: block;
+}
+
+Affiliation {
+ font-style: italic;
+}
+
+Appendix Title {
+ font-weight: bold;
+ font-family: Arial;
+ font-size: 24pt;
+ bottom-margin: 10pt;
+ display: block;
+}
+
+Para Author {
+ display: inline;
+}
+
+Author {
+ display: block;
+}
+
+AuthorGroup {
+ font-size: 12pt;
+ top-margin: 25pt;
+ display: block;
+ font-weight: bold;
+}
+
+BiblioDiv Title {
+ font-style: italic;
+}
+
+Blockquote {
+ display: block;
+ margin-top: 3pt;
+ margin-left: 30pt;
+}
+
+Book Title {
+ font-weight: bold;
+ font-family: Arial;
+ font-size: 18pt;
+ bottom-margin: 10pt;
+ display: block;
+}
+
+BookInfo {
+ display: block;
+ margin-bottom: 30pt;
+}
+
+BridgeHead {
+ display: block;
+ font-size: 16pt;
+ font-weight: bold;
+ color: teal;
+}
+
+Caution {
+ prefix-format: "Caution:";
+ font-weight: bold;
+ color: red;
+}
+
+Chapter {
+ display: block;
+ margin-bottom: 25pt;
+}
+
+Chapter Title {
+ font-weight: bold;
+ font-family: Arial;
+ font-size: 20pt;
+ bottom-margin: 10pt;
+ display: block;
+}
+
+CiteTitle {
+ font-style: italic;
+}
+
+CmdSynopsis {
+ display: block;
+}
+
+CO {
+ display: block;
+}
+
+Command {
+ font-style: italic;
+}
+
+Comment {
+ display: block;
+}
+
+ComputerOutput {
+ font-family: monospace;
+}
+
+Copyright {
+ display: block;
+}
+
+Para CorpAuthor {
+ display: inline;
+}
+
+CorpAuthor {
+ display: block;
+}
+
+Email {
+ font-style: italic;
+}
+
+Editor {
+ display: block;
+}
+
+Emphasis {
+ font-style: italic;
+}
+
+ErrorType {
+ font-family: monospace;
+}
+
+Example {
+ display: block;
+ margin-top: 10pt;
+ margin-bottom: 10pt;
+}
+
+Example Title {
+ display: block;
+ font-weight: bold;
+ font-size: 14pt;
+}
+
+Figure Title {
+ font-family: Arial;
+ font-size: 10pt;
+ font-style: italic;
+ font-weight: bold;
+ display: block;
+}
+
+Filename {
+ font-style: italic;
+}
+
+Figure {
+ display: block;
+ margin-top: 10pt;
+}
+
+FirstTerm {
+ font-style: italic;
+}
+
+ForeignPhrase {
+ font-style: italic;
+}
+
+FormalPara {
+ display: block;
+}
+
+FormalPara Title {
+ display: block;
+ font-weight: bold;
+}
+
+FuncSynopsis {
+ display: block;
+}
+
+FuncSynopsisInfo {
+ display: block;
+ white-space: pre;
+}
+
+Function {
+ font-family: monospace;
+ white-space: pre;
+}
+
+Glossary {
+ display: block;
+}
+
+GlossDef {
+ display: block;
+ margin-left: 15pt;
+}
+
+GlossList {
+ display: block;
+}
+
+GlossSee {
+ display: block;
+ margin-left: 15pt;
+}
+
+GlossTerm {
+ display: block;
+ font-weight: bold;
+}
+
+InformalTable {
+ display: block;
+ margin-top: 10pt;
+ margin-bottom: 10pt;
+}
+
+Interface {
+ font-family: Arial;
+}
+
+ISBN {
+ display: block;
+ font-size: 10pt;
+}
+
+ItemizedList {
+ display: block;
+ margin-top: 5pt;
+ margin-left: 20pt;
+}
+
+LineAnnotation {
+ font-style: italic;
+}
+
+Link {
+ color: blue;
+ text-decoration: underline;
+}
+
+ListItem {
+ margin-left: 25pt;
+ display: list-item;
+}
+
+Literal {
+ font-family: monospace;
+}
+
+LiteralLayout {
+ whitespace: pre;
+ display: block;
+}
+
+Member {
+ display: block;
+ margin-left: 15pt;
+}
+
+OLink {
+ display: block;
+ font-size: 12pt;
+}
+
+Option {
+ font-family: monospace;
+}
+
+OrderedList {
+ top-margin: 5pt;
+ left-margin: 20pt;
+ bottom-margin: 10pt;
+ display: block;
+ list-style-type: decimal;
+}
+
+OrderedList Para {
+ display: block;
+ margin-top: 15pt;
+}
+
+Para OtherCredit {
+ display: inline;
+}
+
+OtherCredit {
+ display: block;
+}
+
+Para {
+ display: block;
+ margin-top: 8pt;
+}
+
+Para LiteralLayout {
+ display: block;
+ margin-top: 4pt;
+ margin-left: 10pt;
+ white-space: pre;
+}
+
+Para Screen {
+ top-margin: 7pt;
+ left-margin: 10pt;
+ bottom-margin: 7pt;
+ display: block;
+}
+
+Parameter {
+ font-family: monospace;
+}
+
+Part Title {
+ font-size: 24pt;
+ display: block;
+ font-weight: bold;
+}
+
+Preface {
+ display: block;
+ margin-top: 10pt;
+}
+
+PrintHistory {
+ display: block;
+}
+
+Procedure {
+ display: block;
+}
+
+ProgramListing {
+ display: block;
+ white-space: pre;
+ font-family: monospace;
+}
+
+ProgramListingCO {
+ display: block;
+ white-space: pre;
+ font-family: monospace;
+}
+
+PublisherName {
+ font-family: Times, New, Roman;
+ font-size: 20pt;
+ top-margin: 15pt;
+ bottom-margin: 15pt;
+ display: block;
+}
+
+RefEntry {
+ display: block;
+}
+
+RefEntryTitle {
+ display: block;
+ font-size: 20em;
+ font-weight: bold;
+}
+
+RefName {
+ font-weight: bold;
+}
+
+RefNameDiv {
+ display: block;
+}
+
+RefSect1 {
+ display: block;
+ margin-top: 10pt;
+}
+
+RefSect1 Title {
+ font-size: 14pt;
+}
+
+RefSect1Info {
+ display: block;
+ font-size: small;
+}
+
+RefSect2 {
+ display: block;
+ margin-top: 10pt;
+}
+
+RefSect2 Title {
+ font-size: 14pt;
+}
+
+RefSect2Info {
+ display: block;
+ font-size: small;
+}
+
+RefSect3 {
+ display: block;
+ margin-top: 10pt;
+}
+
+RefSect3 Title {
+ font-size: 14pt;
+}
+
+RefSect3Info {
+ display: block;
+ font-size: small;
+}
+
+RefSynopsisDiv {
+ display: block;
+ margin-top: 15pt;
+}
+
+RefSynopsisDiv Title {
+ display: block;
+ font-size: 18pt;
+}
+
+Replaceable {
+ font-family: Arial;
+ font-style: italic;
+}
+
+Screen {
+ display: block;
+ left-margin: 20pt;
+ bottom-margin: 10pt;
+ whitespace: pre;
+}
+
+ScreenCO {
+ whitespace: pre;
+}
+
+ScreenShot {
+ whitespace: pre;
+}
+
+Sect1 {
+ display: block;
+ top-margin: 16pt;
+}
+
+Sect1 Title {
+ font-family: Arial;
+ font-size: 20pt;
+ font-weight: bold;
+ display: block;
+}
+
+Sect2 {
+ display: block;
+ top-margin: 15pt;
+}
+
+Sect2 Title {
+ font-family: Arial;
+ font-size: 14pt;
+ font-weight: bold;
+ display: block;
+}
+
+Sect3 {
+ display: block;
+ top-margin: 15pt;
+}
+
+Sect3 Title {
+ font-family: Arial;
+ font-size: 14pt;
+ font-weight: bold;
+ display: block;
+}
+
+SegListItem {
+ display: block;
+}
+
+SegmentedList {
+ display: block;
+}
+
+SegmentedList Title {
+ display: block;
+ font-weight: bold;
+}
+
+Sidebar {
+ display: block;
+ margin-top: 15pt;
+ margin-left: 30pt;
+ font-family: Arial;
+ font-size: 9pt;
+}
+
+Step {
+ display: block;
+}
+
+Step Title {
+ display: block;
+ font-style: italic;
+}
+
+Subscript {
+ font-size: 5pt;
+ vertical-align: sub;
+}
+
+Subtitle {
+ font-family: Arial;
+ font-size: 20pt;
+ font-weight: bold;
+ display: block;
+ align: center;
+}
+
+Superscript {
+ font-size: 5pt;
+ vertical-align: super;
+}
+
+Synopsis {
+ display: block;
+ white-space: pre;
+}
+
+SystemItem {
+ font-family: monospace;
+}
+
+Table {
+ display: block;
+ margin-top: 10pt;
+}
+
+Table Title {
+ font-family: Arial;
+ font-size: 10pt;
+ font-style: italic;
+ font-weight: bold;
+}
+
+Term {
+ font-weight: bold;
+}
+
+Title {
+ font-family: Arial;
+ font-size: 20pt;
+ font-weight: bold;
+ display: block;
+ align: center;
+}
+
+TitleAbbrev {
+ font-family: Arial;
+ font-size: 14pt;
+ font-weight: bold;
+ display: block;
+}
+
+ULink {
+ color: blue;
+ text-decoration: underline;
+}
+
+UserInput {
+ font-family: monospace;
+ font-weight: bold;
+}
+
+VariableList Title {
+ font-weight: bold;
+ display: block;
+}
+
+VarListEntry {
+ display: block;
+ margin-top: 10pt;
+}
+
+VarListEntry Term {
+ display: block;
+ font-style: italic;
+}
+
+Warning {
+ prefix-format: "Warning:";
+ font-weight: bold;
+ color: fuchsia;
+}
+
+Year {
+ font-family: serif;
+ font-weight: bold;
+}
diff --git a/layout/xml/tests/docbooktest.xml b/layout/xml/tests/docbooktest.xml
new file mode 100644
index 00000000000..4423051dad6
--- /dev/null
+++ b/layout/xml/tests/docbooktest.xml
@@ -0,0 +1,120 @@
+
+
+
+ SoftQuad
+Inc.
+ Demo Product Documentation
+SoftQuad Inc.
+ Element Overview
+Introduction to Elements
+By far the vast majority of objects (apart from text) that authors
+encounter when traversing a document are Element nodes.
+ Element Interfaces
+ Elements and
+Attributes
+ Introduction to Attributes
+
+Elements may have attributes associated with them; since the Element
+interface inherits from Node, the generic Node interface method
+getAttributes may be used to retrieve the set of all
+attributes for an element.
+There are methods on the Element interface to retrieve either an Attr
+object by name or an attribute value by name. In XML, where an attribute value
+may contain entity references, an Attr object should be retrieved to examine
+the possibly fairly complex sub-tree representing the attribute value. On the
+other hand, in HTML, where all attributes have simple string values, methods to
+directly access an attribute value can safely be used as a convenience.
+
+Before you can access an Attribute, you must first gain access to the
+associated Element.
+ Setting the Attribute
+Values
+Attr objects inherit the Node interface, but since they are not actually
+child nodes of the element they describe, the DOM does not consider them part
+of the document tree. Thus, the Node attributes parentNode, previousSibling,
+and nextSibling have a null value for Attr objects. The DOM takes the view that
+attributes are properties of elements rather than having a separate identity
+from the elements they are associated with; this should make it more efficient
+to implement such features as default attributes associated with all elements
+of a given type. Furthermore, Attr nodes may not be immediate children of a
+DocumentFragment. However, they can be associated with Element nodes contained
+within a DocumentFragment. In short, users and implementors of the DOM need to
+be aware that Attr nodes have some things in common with other objects
+inheriting the Node interface, but they also are quite distinct.
+The attribute's effective value is determined as follows:
+
+If this attribute has been explicitly assigned any value, that value is
+the attribute's effective value
+Otherwise, if there is a declaration for this attribute, and that
+declaration includes a default value, then that default value is the
+attribute's effective value
+Otherwise, the attribute does not exist on this element in the structure
+model until it has been explicitly added.
+In XML, where the value of an attribute can contain entity references,
+the child nodes of the Attr node provide a representation in which entity
+references are not expanded. These child nodes may be either Text or
+EntityReference nodes. Because the attribute type may be unknown, there are no
+tokenized attribute values.
+The following topics describe DOM attributes:
+
+
+Interface
+Attr
+
+
+Interface Element
+
+ DOM Level 1 Core: Element Functions
+ setAttribute
+ setAttribute
+Sets the Attributes on the associated Element object
+Fundamental
+Syntax
+ OMG IDL
+void setAttribute (in
+DOMString name, in DOMString
+value) raises (DOMException);
+ Java
+public void setAttribute (
+String name, String
+value) throws (DOMException);
+ ECMA Script
+
+ setAttribute (name, value
+)
+Parameters
+ name
+
+(IN) The name of the attribute to create or alter.
+ value
+
+(IN) Value to set in string form
+ Exceptions
+
+These are the applicable exceptions.
+
+
+
+INVALID_CHARACTER_ERR
+Raised if the specified name contains an invalid character.
+
+ NO_MODIFICATION_ALLOWED_ERR
+Raised if this node is readonly.
+
+ Remarks
+ setAttribute adds a new attribute. If an attribute
+with that name is already present in the element, its value is changed to be
+that of the value parameter. This value is a simple string, it is not parsed as
+it is being set. So any markup (such as syntax to be recognized as an entity
+reference) is treated as literal text, and needs to be appropriately escaped by
+the implementation when it is written out.
+ In order to assign an attribute value that contains entity references,
+the user must create an Attr node plus any Text and EntityReference nodes,
+build the appropriate subtree, and use setAttributeNode to
+assign it as the value of an attribute.
+
diff --git a/layout/xml/tests/simple.xml b/layout/xml/tests/simple.xml
new file mode 100644
index 00000000000..d0d70a92630
--- /dev/null
+++ b/layout/xml/tests/simple.xml
@@ -0,0 +1,10 @@
+
+
+
+
+ The Book
+
+ Chapter 1.
+ Yada yada yada.
+
+