diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/BaseNodeVisitor.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/BaseNodeVisitor.java
index ae0d4d9..fd893ce 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/BaseNodeVisitor.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/BaseNodeVisitor.java
@@ -18,11 +18,15 @@
  */
 public class BaseNodeVisitor implements INodeVisitor {
 
-	public void visit(final Element element) {
+	public void visit(final Document document) {
 		// ignore
 	}
 
-	public void visit(final Document document) {
+	public void visit(final DocumentFragment fragment) {
+		// ignore
+	}
+
+	public void visit(final Element element) {
 		// ignore
 	}
 
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/DocumentFragment.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/DocumentFragment.java
index ba1feec..71e3ccf 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/DocumentFragment.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/DocumentFragment.java
@@ -19,10 +19,7 @@
 /**
  * Represents a fragment of an XML document.
  */
-public class DocumentFragment {
-
-	private final Content content;
-	private final List<Node> nodes;
+public class DocumentFragment extends Parent {
 
 	/**
 	 * @param content
@@ -31,21 +28,19 @@
 	 *            Elements that make up this fragment.
 	 */
 	public DocumentFragment(final Content content, final List<Node> nodes) {
-		this.content = content;
-		this.nodes = nodes;
-	}
-
-	public Content getContent() {
-		return content;
+		associate(content, 0, content.length() - 1);
+		for (final Node node : nodes) {
+			addChild(node);
+		}
 	}
 
 	public int getLength() {
-		return content.length();
+		return getContent().length();
 	}
 
 	public List<Element> getElements() {
 		final List<Element> elements = new ArrayList<Element>();
-		for (final Node node : nodes) {
+		for (final Node node : getNodes()) {
 			node.accept(new BaseNodeVisitor() {
 				@Override
 				public void visit(final Element element) {
@@ -71,7 +66,17 @@
 	}
 
 	public List<Node> getNodes() {
-		return Document.createNodeList(getContent(), 0, getContent().length(), getElements());
+		return getChildNodes();
+	}
+
+	@Override
+	public String getBaseURI() {
+		return null;
+	}
+
+	@Override
+	public void accept(final INodeVisitor visitor) {
+		visitor.visit(this);
 	}
 
 }
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/INodeVisitor.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/INodeVisitor.java
index 84ea9db..43fad01 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/INodeVisitor.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/INodeVisitor.java
@@ -19,10 +19,12 @@
  */
 public interface INodeVisitor {
 
-	void visit(Element element);
-
 	void visit(Document document);
 
+	void visit(DocumentFragment fragment);
+
+	void visit(Element element);
+
 	void visit(Text text);
 
 }
