DocumentFragment is a Parent

Signed-off-by: Florian Thienel <florian@thienel.org>
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);

 

 }