Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2018-02-27 06:50:41 -0500
committerEd Willink2018-05-10 12:14:44 -0400
commit2d047f602ac4a8f6510905b0f3edeaadb0435d44 (patch)
tree4c78cdc26626afea7e01f002c8678e57a59b1101
parentdaf407811799fcd43409498a471334d48675a7d7 (diff)
downloadorg.eclipse.qvtd-2d047f602ac4a8f6510905b0f3edeaadb0435d44.tar.gz
org.eclipse.qvtd-2d047f602ac4a8f6510905b0f3edeaadb0435d44.tar.xz
org.eclipse.qvtd-2d047f602ac4a8f6510905b0f3edeaadb0435d44.zip
[531687] Add XMLmodel
-rw-r--r--plugins/org.eclipse.qvtd.xml/.classpath16
-rw-r--r--plugins/org.eclipse.qvtd.xml/.gitignore2
-rw-r--r--plugins/org.eclipse.qvtd.xml/.project28
-rw-r--r--plugins/org.eclipse.qvtd.xml/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.qvtd.xml/about.html43
-rw-r--r--plugins/org.eclipse.qvtd.xml/build.properties12
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Attribute.java88
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/CDATA.java29
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Characters.java61
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Comment.java61
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/DTD.java115
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Document.java29
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Element.java115
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Entity.java61
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Node.java54
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/PrefixMapping.java88
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/ProcessingInstruction.java88
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelFactory.java135
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelPackage.java1163
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/AttributeImpl.java214
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CDATAImpl.java54
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CharactersImpl.java162
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CommentImpl.java162
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DTDImpl.java282
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DocumentImpl.java49
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ElementImpl.java267
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/EntityImpl.java174
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/NodeImpl.java163
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/PrefixMappingImpl.java228
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ProcessingInstructionImpl.java228
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelFactoryImpl.java206
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelPackageImpl.java573
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelAdapterFactory.java312
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelResourceFactoryImpl.java52
-rw-r--r--plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelSwitch.java342
-rw-r--r--plugins/org.eclipse.qvtd.xml/model/XMLmodel.ecore56
-rw-r--r--plugins/org.eclipse.qvtd.xml/model/XMLmodel.genmodel48
-rw-r--r--plugins/org.eclipse.qvtd.xml/plugin.properties13
-rw-r--r--plugins/org.eclipse.qvtd.xml/plugin.xml23
-rw-r--r--plugins/org.eclipse.qvtd.xml/src/org/eclipse/qvtd/xml/utilities/XMLmodelResourceImpl.java310
40 files changed, 6124 insertions, 0 deletions
diff --git a/plugins/org.eclipse.qvtd.xml/.classpath b/plugins/org.eclipse.qvtd.xml/.classpath
new file mode 100644
index 000000000..2e398fae8
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/.classpath
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+ <attributes>
+ <attribute name="annotationpath" value="/org.eclipse.qvtd.pivot.qvtbase/annotations"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+ <attributes>
+ <attribute name="annotationpath" value="/org.eclipse.qvtd.pivot.qvtbase/annotations"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="src" path="emf-gen"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.qvtd.xml/.gitignore b/plugins/org.eclipse.qvtd.xml/.gitignore
new file mode 100644
index 000000000..09e3bc9b2
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/.gitignore
@@ -0,0 +1,2 @@
+/bin/
+/target/
diff --git a/plugins/org.eclipse.qvtd.xml/.project b/plugins/org.eclipse.qvtd.xml/.project
new file mode 100644
index 000000000..b4b88b7aa
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.qvtd.xml</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.qvtd.xml/META-INF/MANIFEST.MF b/plugins/org.eclipse.qvtd.xml/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..778a7f703
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.qvtd.xml;singleton:=true
+Bundle-Version: 0.15.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.qvtd.xml,
+ org.eclipse.qvtd.xml.impl,
+ org.eclipse.qvtd.xml.util,
+ org.eclipse.qvtd.xml.utilities
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
+ org.eclipse.emf.ecore.xmi;bundle-version="[2.7.0,3.0.0)";visibility:=reexport,
+ org.eclipse.jdt.annotation;bundle-version="[2.0.0,3.0.0)"
+Bundle-ActivationPolicy: lazy
+Automatic-Module-Name: org.eclipse.qvtd.xml
diff --git a/plugins/org.eclipse.qvtd.xml/about.html b/plugins/org.eclipse.qvtd.xml/about.html
new file mode 100644
index 000000000..87b2a5068
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/about.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>About</title>
+</head><body lang="EN-US">
+<h2>About This Content</h2>
+
+<pem>September 21, 2008</em></p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+
+ <h3>Third Party Content</h3>
+ <p>The Content includes items that have been sourced from third parties as set out below. If you
+ did not receive this Content directly from the Eclipse Foundation, the following is provided
+ for informational purposes only, and you should look to the Redistributor's license for
+ terms and conditions of use.</p>
+ <p><em>
+ <br><br>
+ <strong>OMG QVT 1.0 specification (08-04-03)</strong> <br>
+ <ul>
+ <li><a href="http://www.omg.org/spec/QVT/1.0/">QVT 1.0 main page</a></li>
+ <li><a href="http://www.omg.org/docs/formal/08-04-03.pdf">QVT 1.0 specification</a></li>
+ <li><a href="http://www.omg.org/">OMG site</a></li>
+ </ul>
+ <br>
+ </em></p>
+ <p>A detailed list of fixes and clarifications with respect to those specifications may be found in <a href="QVTBaseCompliance.html">QVTBaseCompliance.html</a>.</p>
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.qvtd.xml/build.properties b/plugins/org.eclipse.qvtd.xml/build.properties
new file mode 100644
index 000000000..1154ccbb4
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/build.properties
@@ -0,0 +1,12 @@
+#
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+jars.compile.order = .
+source.. = emf-gen/
+output.. = bin/
+src.includes = about.html
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Attribute.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Attribute.java
new file mode 100644
index 000000000..bd3cec483
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Attribute.java
@@ -0,0 +1,88 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.Attribute#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.Attribute#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getAttribute()
+ * @model
+ * @generated
+ */
+public interface Attribute extends Node {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getAttribute_Name()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Attribute#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getAttribute_Value()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Attribute#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+} // Attribute
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/CDATA.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/CDATA.java
new file mode 100644
index 000000000..57d8dcd6f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/CDATA.java
@@ -0,0 +1,29 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>CDATA</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getCDATA()
+ * @model
+ * @generated
+ */
+public interface CDATA extends Node {
+} // CDATA
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Characters.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Characters.java
new file mode 100644
index 000000000..de6ae7e6f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Characters.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Characters</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.Characters#getData <em>Data</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getCharacters()
+ * @model
+ * @generated
+ */
+public interface Characters extends Node {
+ /**
+ * Returns the value of the '<em><b>Data</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data</em>' attribute.
+ * @see #setData(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getCharacters_Data()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getData();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Characters#getData <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Data</em>' attribute.
+ * @see #getData()
+ * @generated
+ */
+ void setData(String value);
+
+} // Characters
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Comment.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Comment.java
new file mode 100644
index 000000000..e2b2af643
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Comment.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Comment</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.Comment#getData <em>Data</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getComment()
+ * @model
+ * @generated
+ */
+public interface Comment extends Node {
+ /**
+ * Returns the value of the '<em><b>Data</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data</em>' attribute.
+ * @see #setData(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getComment_Data()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getData();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Comment#getData <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Data</em>' attribute.
+ * @see #getData()
+ * @generated
+ */
+ void setData(String value);
+
+} // Comment
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/DTD.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/DTD.java
new file mode 100644
index 000000000..2c3461d81
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/DTD.java
@@ -0,0 +1,115 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>DTD</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.DTD#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.DTD#getPublicId <em>Public Id</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.DTD#getSystemId <em>System Id</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getDTD()
+ * @model
+ * @generated
+ */
+public interface DTD extends Node {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getDTD_Name()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.DTD#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Public Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Public Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Public Id</em>' attribute.
+ * @see #setPublicId(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getDTD_PublicId()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getPublicId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.DTD#getPublicId <em>Public Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Public Id</em>' attribute.
+ * @see #getPublicId()
+ * @generated
+ */
+ void setPublicId(String value);
+
+ /**
+ * Returns the value of the '<em><b>System Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>System Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>System Id</em>' attribute.
+ * @see #setSystemId(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getDTD_SystemId()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getSystemId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.DTD#getSystemId <em>System Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>System Id</em>' attribute.
+ * @see #getSystemId()
+ * @generated
+ */
+ void setSystemId(String value);
+
+} // DTD
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Document.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Document.java
new file mode 100644
index 000000000..2f17b988a
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Document.java
@@ -0,0 +1,29 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getDocument()
+ * @model
+ * @generated
+ */
+public interface Document extends Node {
+} // Document
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Element.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Element.java
new file mode 100644
index 000000000..2e21b8d64
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Element.java
@@ -0,0 +1,115 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.Element#getLocalName <em>Local Name</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.Element#getQName <em>QName</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.Element#getUri <em>Uri</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getElement()
+ * @model
+ * @generated
+ */
+public interface Element extends Node {
+ /**
+ * Returns the value of the '<em><b>Local Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Local Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Local Name</em>' attribute.
+ * @see #setLocalName(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getElement_LocalName()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getLocalName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Element#getLocalName <em>Local Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Local Name</em>' attribute.
+ * @see #getLocalName()
+ * @generated
+ */
+ void setLocalName(String value);
+
+ /**
+ * Returns the value of the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>QName</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>QName</em>' attribute.
+ * @see #setQName(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getElement_QName()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getQName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Element#getQName <em>QName</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>QName</em>' attribute.
+ * @see #getQName()
+ * @generated
+ */
+ void setQName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Uri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Uri</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Uri</em>' attribute.
+ * @see #setUri(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getElement_Uri()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getUri();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Element#getUri <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Uri</em>' attribute.
+ * @see #getUri()
+ * @generated
+ */
+ void setUri(String value);
+
+} // Element
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Entity.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Entity.java
new file mode 100644
index 000000000..44fc63b86
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Entity.java
@@ -0,0 +1,61 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.Entity#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getEntity()
+ * @model
+ * @generated
+ */
+public interface Entity extends Node {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getEntity_Name()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.Entity#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Entity
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Node.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Node.java
new file mode 100644
index 000000000..81aff96a4
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/Node.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.Node#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getNode()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Node extends EObject {
+ /**
+ * Returns the value of the '<em><b>Children</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.xml.Node}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Children</em>' containment reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Children</em>' containment reference list.
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getNode_Children()
+ * @model containment="true"
+ * @generated
+ */
+ EList<Node> getChildren();
+
+} // Node
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/PrefixMapping.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/PrefixMapping.java
new file mode 100644
index 000000000..cb70f6198
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/PrefixMapping.java
@@ -0,0 +1,88 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Prefix Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.PrefixMapping#getPrefix <em>Prefix</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.PrefixMapping#getUri <em>Uri</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getPrefixMapping()
+ * @model
+ * @generated
+ */
+public interface PrefixMapping extends Node {
+ /**
+ * Returns the value of the '<em><b>Prefix</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Prefix</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Prefix</em>' attribute.
+ * @see #setPrefix(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getPrefixMapping_Prefix()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getPrefix();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.PrefixMapping#getPrefix <em>Prefix</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Prefix</em>' attribute.
+ * @see #getPrefix()
+ * @generated
+ */
+ void setPrefix(String value);
+
+ /**
+ * Returns the value of the '<em><b>Uri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Uri</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Uri</em>' attribute.
+ * @see #setUri(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getPrefixMapping_Uri()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getUri();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.PrefixMapping#getUri <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Uri</em>' attribute.
+ * @see #getUri()
+ * @generated
+ */
+ void setUri(String value);
+
+} // PrefixMapping
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/ProcessingInstruction.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/ProcessingInstruction.java
new file mode 100644
index 000000000..b265ec231
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/ProcessingInstruction.java
@@ -0,0 +1,88 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Processing Instruction</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.ProcessingInstruction#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.ProcessingInstruction#getData <em>Data</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getProcessingInstruction()
+ * @model
+ * @generated
+ */
+public interface ProcessingInstruction extends Node {
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target</em>' attribute.
+ * @see #setTarget(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getProcessingInstruction_Target()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.ProcessingInstruction#getTarget <em>Target</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target</em>' attribute.
+ * @see #getTarget()
+ * @generated
+ */
+ void setTarget(String value);
+
+ /**
+ * Returns the value of the '<em><b>Data</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Data</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Data</em>' attribute.
+ * @see #setData(String)
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#getProcessingInstruction_Data()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ String getData();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xml.ProcessingInstruction#getData <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Data</em>' attribute.
+ * @see #getData()
+ * @generated
+ */
+ void setData(String value);
+
+} // ProcessingInstruction
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelFactory.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelFactory.java
new file mode 100644
index 000000000..eac54319f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelFactory.java
@@ -0,0 +1,135 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage
+ * @generated
+ */
+public interface XMLmodelFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ XMLmodelFactory eINSTANCE = org.eclipse.qvtd.xml.impl.XMLmodelFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Attribute</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Attribute</em>'.
+ * @generated
+ */
+ Attribute createAttribute();
+
+ /**
+ * Returns a new object of class '<em>CDATA</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>CDATA</em>'.
+ * @generated
+ */
+ CDATA createCDATA();
+
+ /**
+ * Returns a new object of class '<em>Characters</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Characters</em>'.
+ * @generated
+ */
+ Characters createCharacters();
+
+ /**
+ * Returns a new object of class '<em>Comment</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Comment</em>'.
+ * @generated
+ */
+ Comment createComment();
+
+ /**
+ * Returns a new object of class '<em>DTD</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>DTD</em>'.
+ * @generated
+ */
+ DTD createDTD();
+
+ /**
+ * Returns a new object of class '<em>Document</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Document</em>'.
+ * @generated
+ */
+ Document createDocument();
+
+ /**
+ * Returns a new object of class '<em>Element</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Element</em>'.
+ * @generated
+ */
+ Element createElement();
+
+ /**
+ * Returns a new object of class '<em>Entity</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Entity</em>'.
+ * @generated
+ */
+ Entity createEntity();
+
+ /**
+ * Returns a new object of class '<em>Prefix Mapping</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Prefix Mapping</em>'.
+ * @generated
+ */
+ PrefixMapping createPrefixMapping();
+
+ /**
+ * Returns a new object of class '<em>Processing Instruction</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Processing Instruction</em>'.
+ * @generated
+ */
+ ProcessingInstruction createProcessingInstruction();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ XMLmodelPackage getXMLmodelPackage();
+
+} //XMLmodelFactory
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelPackage.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelPackage.java
new file mode 100644
index 000000000..926ed8421
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/XMLmodelPackage.java
@@ -0,0 +1,1163 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.XMLmodelFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface XMLmodelPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "xml";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/qvt/2015/XML";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "sax";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ XMLmodelPackage eINSTANCE = org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.NodeImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getNode()
+ * @generated
+ */
+ int NODE = 8;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__CHILDREN = 0;
+
+ /**
+ * The number of structural features of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.AttributeImpl <em>Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.AttributeImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getAttribute()
+ * @generated
+ */
+ int ATTRIBUTE = 0;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__NAME = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE__VALUE = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE_FEATURE_COUNT = NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Attribute</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ATTRIBUTE_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.CDATAImpl <em>CDATA</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.CDATAImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getCDATA()
+ * @generated
+ */
+ int CDATA = 1;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CDATA__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The number of structural features of the '<em>CDATA</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CDATA_FEATURE_COUNT = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>CDATA</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CDATA_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.CharactersImpl <em>Characters</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.CharactersImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getCharacters()
+ * @generated
+ */
+ int CHARACTERS = 2;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHARACTERS__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Data</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHARACTERS__DATA = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Characters</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHARACTERS_FEATURE_COUNT = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Characters</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CHARACTERS_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.CommentImpl <em>Comment</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.CommentImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getComment()
+ * @generated
+ */
+ int COMMENT = 3;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMENT__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Data</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMENT__DATA = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Comment</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMENT_FEATURE_COUNT = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Comment</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMENT_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.DTDImpl <em>DTD</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.DTDImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getDTD()
+ * @generated
+ */
+ int DTD = 4;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DTD__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DTD__NAME = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Public Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DTD__PUBLIC_ID = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>System Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DTD__SYSTEM_ID = NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>DTD</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DTD_FEATURE_COUNT = NODE_FEATURE_COUNT + 3;
+
+ /**
+ * The number of operations of the '<em>DTD</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DTD_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.DocumentImpl <em>Document</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.DocumentImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getDocument()
+ * @generated
+ */
+ int DOCUMENT = 5;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The number of structural features of the '<em>Document</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_FEATURE_COUNT = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Document</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.ElementImpl <em>Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.ElementImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getElement()
+ * @generated
+ */
+ int ELEMENT = 6;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Local Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT__LOCAL_NAME = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>QName</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT__QNAME = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Uri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT__URI = NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_FEATURE_COUNT = NODE_FEATURE_COUNT + 3;
+
+ /**
+ * The number of operations of the '<em>Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.EntityImpl <em>Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.EntityImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getEntity()
+ * @generated
+ */
+ int ENTITY = 7;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY__NAME = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY_FEATURE_COUNT = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of operations of the '<em>Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.PrefixMappingImpl <em>Prefix Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.PrefixMappingImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getPrefixMapping()
+ * @generated
+ */
+ int PREFIX_MAPPING = 9;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREFIX_MAPPING__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Prefix</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREFIX_MAPPING__PREFIX = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Uri</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREFIX_MAPPING__URI = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Prefix Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREFIX_MAPPING_FEATURE_COUNT = NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Prefix Mapping</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PREFIX_MAPPING_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xml.impl.ProcessingInstructionImpl <em>Processing Instruction</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.ProcessingInstructionImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getProcessingInstruction()
+ * @generated
+ */
+ int PROCESSING_INSTRUCTION = 10;
+
+ /**
+ * The feature id for the '<em><b>Children</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESSING_INSTRUCTION__CHILDREN = NODE__CHILDREN;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESSING_INSTRUCTION__TARGET = NODE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Data</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESSING_INSTRUCTION__DATA = NODE_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Processing Instruction</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESSING_INSTRUCTION_FEATURE_COUNT = NODE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Processing Instruction</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESSING_INSTRUCTION_OPERATION_COUNT = NODE_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Attribute <em>Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Attribute</em>'.
+ * @see org.eclipse.qvtd.xml.Attribute
+ * @generated
+ */
+ EClass getAttribute();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Attribute#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.qvtd.xml.Attribute#getName()
+ * @see #getAttribute()
+ * @generated
+ */
+ EAttribute getAttribute_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Attribute#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see org.eclipse.qvtd.xml.Attribute#getValue()
+ * @see #getAttribute()
+ * @generated
+ */
+ EAttribute getAttribute_Value();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.CDATA <em>CDATA</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>CDATA</em>'.
+ * @see org.eclipse.qvtd.xml.CDATA
+ * @generated
+ */
+ EClass getCDATA();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Characters <em>Characters</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Characters</em>'.
+ * @see org.eclipse.qvtd.xml.Characters
+ * @generated
+ */
+ EClass getCharacters();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Characters#getData <em>Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Data</em>'.
+ * @see org.eclipse.qvtd.xml.Characters#getData()
+ * @see #getCharacters()
+ * @generated
+ */
+ EAttribute getCharacters_Data();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Comment <em>Comment</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Comment</em>'.
+ * @see org.eclipse.qvtd.xml.Comment
+ * @generated
+ */
+ EClass getComment();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Comment#getData <em>Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Data</em>'.
+ * @see org.eclipse.qvtd.xml.Comment#getData()
+ * @see #getComment()
+ * @generated
+ */
+ EAttribute getComment_Data();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.DTD <em>DTD</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>DTD</em>'.
+ * @see org.eclipse.qvtd.xml.DTD
+ * @generated
+ */
+ EClass getDTD();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.DTD#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.qvtd.xml.DTD#getName()
+ * @see #getDTD()
+ * @generated
+ */
+ EAttribute getDTD_Name();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.DTD#getPublicId <em>Public Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Public Id</em>'.
+ * @see org.eclipse.qvtd.xml.DTD#getPublicId()
+ * @see #getDTD()
+ * @generated
+ */
+ EAttribute getDTD_PublicId();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.DTD#getSystemId <em>System Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>System Id</em>'.
+ * @see org.eclipse.qvtd.xml.DTD#getSystemId()
+ * @see #getDTD()
+ * @generated
+ */
+ EAttribute getDTD_SystemId();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Document <em>Document</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document</em>'.
+ * @see org.eclipse.qvtd.xml.Document
+ * @generated
+ */
+ EClass getDocument();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Element <em>Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Element</em>'.
+ * @see org.eclipse.qvtd.xml.Element
+ * @generated
+ */
+ EClass getElement();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Element#getLocalName <em>Local Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Local Name</em>'.
+ * @see org.eclipse.qvtd.xml.Element#getLocalName()
+ * @see #getElement()
+ * @generated
+ */
+ EAttribute getElement_LocalName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Element#getQName <em>QName</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>QName</em>'.
+ * @see org.eclipse.qvtd.xml.Element#getQName()
+ * @see #getElement()
+ * @generated
+ */
+ EAttribute getElement_QName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Element#getUri <em>Uri</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Uri</em>'.
+ * @see org.eclipse.qvtd.xml.Element#getUri()
+ * @see #getElement()
+ * @generated
+ */
+ EAttribute getElement_Uri();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Entity <em>Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Entity</em>'.
+ * @see org.eclipse.qvtd.xml.Entity
+ * @generated
+ */
+ EClass getEntity();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.Entity#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.qvtd.xml.Entity#getName()
+ * @see #getEntity()
+ * @generated
+ */
+ EAttribute getEntity_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node</em>'.
+ * @see org.eclipse.qvtd.xml.Node
+ * @generated
+ */
+ EClass getNode();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.xml.Node#getChildren <em>Children</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Children</em>'.
+ * @see org.eclipse.qvtd.xml.Node#getChildren()
+ * @see #getNode()
+ * @generated
+ */
+ EReference getNode_Children();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.PrefixMapping <em>Prefix Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Prefix Mapping</em>'.
+ * @see org.eclipse.qvtd.xml.PrefixMapping
+ * @generated
+ */
+ EClass getPrefixMapping();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.PrefixMapping#getPrefix <em>Prefix</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Prefix</em>'.
+ * @see org.eclipse.qvtd.xml.PrefixMapping#getPrefix()
+ * @see #getPrefixMapping()
+ * @generated
+ */
+ EAttribute getPrefixMapping_Prefix();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.PrefixMapping#getUri <em>Uri</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Uri</em>'.
+ * @see org.eclipse.qvtd.xml.PrefixMapping#getUri()
+ * @see #getPrefixMapping()
+ * @generated
+ */
+ EAttribute getPrefixMapping_Uri();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xml.ProcessingInstruction <em>Processing Instruction</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Processing Instruction</em>'.
+ * @see org.eclipse.qvtd.xml.ProcessingInstruction
+ * @generated
+ */
+ EClass getProcessingInstruction();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.ProcessingInstruction#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Target</em>'.
+ * @see org.eclipse.qvtd.xml.ProcessingInstruction#getTarget()
+ * @see #getProcessingInstruction()
+ * @generated
+ */
+ EAttribute getProcessingInstruction_Target();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xml.ProcessingInstruction#getData <em>Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Data</em>'.
+ * @see org.eclipse.qvtd.xml.ProcessingInstruction#getData()
+ * @see #getProcessingInstruction()
+ * @generated
+ */
+ EAttribute getProcessingInstruction_Data();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ XMLmodelFactory getXMLmodelFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.AttributeImpl <em>Attribute</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.AttributeImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getAttribute()
+ * @generated
+ */
+ EClass ATTRIBUTE = eINSTANCE.getAttribute();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ATTRIBUTE__NAME = eINSTANCE.getAttribute_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ATTRIBUTE__VALUE = eINSTANCE.getAttribute_Value();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.CDATAImpl <em>CDATA</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.CDATAImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getCDATA()
+ * @generated
+ */
+ EClass CDATA = eINSTANCE.getCDATA();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.CharactersImpl <em>Characters</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.CharactersImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getCharacters()
+ * @generated
+ */
+ EClass CHARACTERS = eINSTANCE.getCharacters();
+
+ /**
+ * The meta object literal for the '<em><b>Data</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CHARACTERS__DATA = eINSTANCE.getCharacters_Data();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.CommentImpl <em>Comment</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.CommentImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getComment()
+ * @generated
+ */
+ EClass COMMENT = eINSTANCE.getComment();
+
+ /**
+ * The meta object literal for the '<em><b>Data</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute COMMENT__DATA = eINSTANCE.getComment_Data();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.DTDImpl <em>DTD</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.DTDImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getDTD()
+ * @generated
+ */
+ EClass DTD = eINSTANCE.getDTD();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DTD__NAME = eINSTANCE.getDTD_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Public Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DTD__PUBLIC_ID = eINSTANCE.getDTD_PublicId();
+
+ /**
+ * The meta object literal for the '<em><b>System Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DTD__SYSTEM_ID = eINSTANCE.getDTD_SystemId();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.DocumentImpl <em>Document</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.DocumentImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getDocument()
+ * @generated
+ */
+ EClass DOCUMENT = eINSTANCE.getDocument();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.ElementImpl <em>Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.ElementImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getElement()
+ * @generated
+ */
+ EClass ELEMENT = eINSTANCE.getElement();
+
+ /**
+ * The meta object literal for the '<em><b>Local Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELEMENT__LOCAL_NAME = eINSTANCE.getElement_LocalName();
+
+ /**
+ * The meta object literal for the '<em><b>QName</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELEMENT__QNAME = eINSTANCE.getElement_QName();
+
+ /**
+ * The meta object literal for the '<em><b>Uri</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ELEMENT__URI = eINSTANCE.getElement_Uri();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.EntityImpl <em>Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.EntityImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getEntity()
+ * @generated
+ */
+ EClass ENTITY = eINSTANCE.getEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ENTITY__NAME = eINSTANCE.getEntity_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.NodeImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getNode()
+ * @generated
+ */
+ EClass NODE = eINSTANCE.getNode();
+
+ /**
+ * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE__CHILDREN = eINSTANCE.getNode_Children();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.PrefixMappingImpl <em>Prefix Mapping</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.PrefixMappingImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getPrefixMapping()
+ * @generated
+ */
+ EClass PREFIX_MAPPING = eINSTANCE.getPrefixMapping();
+
+ /**
+ * The meta object literal for the '<em><b>Prefix</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PREFIX_MAPPING__PREFIX = eINSTANCE.getPrefixMapping_Prefix();
+
+ /**
+ * The meta object literal for the '<em><b>Uri</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PREFIX_MAPPING__URI = eINSTANCE.getPrefixMapping_Uri();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xml.impl.ProcessingInstructionImpl <em>Processing Instruction</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.impl.ProcessingInstructionImpl
+ * @see org.eclipse.qvtd.xml.impl.XMLmodelPackageImpl#getProcessingInstruction()
+ * @generated
+ */
+ EClass PROCESSING_INSTRUCTION = eINSTANCE.getProcessingInstruction();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROCESSING_INSTRUCTION__TARGET = eINSTANCE.getProcessingInstruction_Target();
+
+ /**
+ * The meta object literal for the '<em><b>Data</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PROCESSING_INSTRUCTION__DATA = eINSTANCE.getProcessingInstruction_Data();
+
+ }
+
+} //XMLmodelPackage
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/AttributeImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/AttributeImpl.java
new file mode 100644
index 000000000..c1306c65d
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/AttributeImpl.java
@@ -0,0 +1,214 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.Attribute;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.AttributeImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.AttributeImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AttributeImpl extends NodeImpl implements Attribute {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AttributeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.ATTRIBUTE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.ATTRIBUTE__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.ATTRIBUTE__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.ATTRIBUTE__NAME:
+ return getName();
+ case XMLmodelPackage.ATTRIBUTE__VALUE:
+ return getValue();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.ATTRIBUTE__NAME:
+ setName((String)newValue);
+ return;
+ case XMLmodelPackage.ATTRIBUTE__VALUE:
+ setValue((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.ATTRIBUTE__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case XMLmodelPackage.ATTRIBUTE__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.ATTRIBUTE__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case XMLmodelPackage.ATTRIBUTE__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String toString() {
+ return name + "=\"" + value + "\"";
+ }
+} //AttributeImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CDATAImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CDATAImpl.java
new file mode 100644
index 000000000..883f23aef
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CDATAImpl.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.qvtd.xml.CDATA;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>CDATA</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CDATAImpl extends NodeImpl implements CDATA {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CDATAImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.CDATA;
+ }
+
+ @Override
+ public String toString() {
+ return "CDATA ...";
+ }
+
+} //CDATAImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CharactersImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CharactersImpl.java
new file mode 100644
index 000000000..00e967405
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CharactersImpl.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.Characters;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Characters</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.CharactersImpl#getData <em>Data</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CharactersImpl extends NodeImpl implements Characters {
+ /**
+ * The default value of the '{@link #getData() <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getData()
+ * @generated
+ * @ordered
+ */
+ protected static final String DATA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getData() <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getData()
+ * @generated
+ * @ordered
+ */
+ protected String data = DATA_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CharactersImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.CHARACTERS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getData() {
+ return data;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setData(String newData) {
+ String oldData = data;
+ data = newData;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.CHARACTERS__DATA, oldData, data));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.CHARACTERS__DATA:
+ return getData();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.CHARACTERS__DATA:
+ setData((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.CHARACTERS__DATA:
+ setData(DATA_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.CHARACTERS__DATA:
+ return DATA_EDEFAULT == null ? data != null : !DATA_EDEFAULT.equals(data);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String toString() {
+ return data;
+ }
+} //CharactersImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CommentImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CommentImpl.java
new file mode 100644
index 000000000..5150153d7
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/CommentImpl.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.Comment;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Comment</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.CommentImpl#getData <em>Data</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CommentImpl extends NodeImpl implements Comment {
+ /**
+ * The default value of the '{@link #getData() <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getData()
+ * @generated
+ * @ordered
+ */
+ protected static final String DATA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getData() <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getData()
+ * @generated
+ * @ordered
+ */
+ protected String data = DATA_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CommentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.COMMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getData() {
+ return data;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setData(String newData) {
+ String oldData = data;
+ data = newData;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.COMMENT__DATA, oldData, data));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.COMMENT__DATA:
+ return getData();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.COMMENT__DATA:
+ setData((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.COMMENT__DATA:
+ setData(DATA_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.COMMENT__DATA:
+ return DATA_EDEFAULT == null ? data != null : !DATA_EDEFAULT.equals(data);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String toString() {
+ return "<!--" + data + "-->";
+ }
+} //CommentImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DTDImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DTDImpl.java
new file mode 100644
index 000000000..e286e4ae5
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DTDImpl.java
@@ -0,0 +1,282 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.DTD;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>DTD</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.DTDImpl#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.DTDImpl#getPublicId <em>Public Id</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.DTDImpl#getSystemId <em>System Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DTDImpl extends NodeImpl implements DTD {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPublicId() <em>Public Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPublicId()
+ * @generated
+ * @ordered
+ */
+ protected static final String PUBLIC_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPublicId() <em>Public Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPublicId()
+ * @generated
+ * @ordered
+ */
+ protected String publicId = PUBLIC_ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getSystemId() <em>System Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSystemId()
+ * @generated
+ * @ordered
+ */
+ protected static final String SYSTEM_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getSystemId() <em>System Id</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSystemId()
+ * @generated
+ * @ordered
+ */
+ protected String systemId = SYSTEM_ID_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DTDImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.DTD;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.DTD__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPublicId() {
+ return publicId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPublicId(String newPublicId) {
+ String oldPublicId = publicId;
+ publicId = newPublicId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.DTD__PUBLIC_ID, oldPublicId, publicId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getSystemId() {
+ return systemId;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSystemId(String newSystemId) {
+ String oldSystemId = systemId;
+ systemId = newSystemId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.DTD__SYSTEM_ID, oldSystemId, systemId));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.DTD__NAME:
+ return getName();
+ case XMLmodelPackage.DTD__PUBLIC_ID:
+ return getPublicId();
+ case XMLmodelPackage.DTD__SYSTEM_ID:
+ return getSystemId();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.DTD__NAME:
+ setName((String)newValue);
+ return;
+ case XMLmodelPackage.DTD__PUBLIC_ID:
+ setPublicId((String)newValue);
+ return;
+ case XMLmodelPackage.DTD__SYSTEM_ID:
+ setSystemId((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.DTD__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case XMLmodelPackage.DTD__PUBLIC_ID:
+ setPublicId(PUBLIC_ID_EDEFAULT);
+ return;
+ case XMLmodelPackage.DTD__SYSTEM_ID:
+ setSystemId(SYSTEM_ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.DTD__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case XMLmodelPackage.DTD__PUBLIC_ID:
+ return PUBLIC_ID_EDEFAULT == null ? publicId != null : !PUBLIC_ID_EDEFAULT.equals(publicId);
+ case XMLmodelPackage.DTD__SYSTEM_ID:
+ return SYSTEM_ID_EDEFAULT == null ? systemId != null : !SYSTEM_ID_EDEFAULT.equals(systemId);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(", publicId: ");
+ result.append(publicId);
+ result.append(", systemId: ");
+ result.append(systemId);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DTDImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DocumentImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DocumentImpl.java
new file mode 100644
index 000000000..1cfc9356c
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/DocumentImpl.java
@@ -0,0 +1,49 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.qvtd.xml.Document;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DocumentImpl extends NodeImpl implements Document {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DocumentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.DOCUMENT;
+ }
+
+} //DocumentImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ElementImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ElementImpl.java
new file mode 100644
index 000000000..e1b50559a
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ElementImpl.java
@@ -0,0 +1,267 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.Element;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.ElementImpl#getLocalName <em>Local Name</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.ElementImpl#getQName <em>QName</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.ElementImpl#getUri <em>Uri</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ElementImpl extends NodeImpl implements Element {
+ /**
+ * The default value of the '{@link #getLocalName() <em>Local Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocalName()
+ * @generated
+ * @ordered
+ */
+ protected static final String LOCAL_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLocalName() <em>Local Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLocalName()
+ * @generated
+ * @ordered
+ */
+ protected String localName = LOCAL_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getQName() <em>QName</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQName()
+ * @generated
+ * @ordered
+ */
+ protected static final String QNAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getQName() <em>QName</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getQName()
+ * @generated
+ * @ordered
+ */
+ protected String qName = QNAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getUri() <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUri()
+ * @generated
+ * @ordered
+ */
+ protected static final String URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUri() <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUri()
+ * @generated
+ * @ordered
+ */
+ protected String uri = URI_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLocalName() {
+ return localName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLocalName(String newLocalName) {
+ String oldLocalName = localName;
+ localName = newLocalName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.ELEMENT__LOCAL_NAME, oldLocalName, localName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getQName() {
+ return qName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setQName(String newQName) {
+ String oldQName = qName;
+ qName = newQName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.ELEMENT__QNAME, oldQName, qName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getUri() {
+ return uri;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUri(String newUri) {
+ String oldUri = uri;
+ uri = newUri;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.ELEMENT__URI, oldUri, uri));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.ELEMENT__LOCAL_NAME:
+ return getLocalName();
+ case XMLmodelPackage.ELEMENT__QNAME:
+ return getQName();
+ case XMLmodelPackage.ELEMENT__URI:
+ return getUri();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.ELEMENT__LOCAL_NAME:
+ setLocalName((String)newValue);
+ return;
+ case XMLmodelPackage.ELEMENT__QNAME:
+ setQName((String)newValue);
+ return;
+ case XMLmodelPackage.ELEMENT__URI:
+ setUri((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.ELEMENT__LOCAL_NAME:
+ setLocalName(LOCAL_NAME_EDEFAULT);
+ return;
+ case XMLmodelPackage.ELEMENT__QNAME:
+ setQName(QNAME_EDEFAULT);
+ return;
+ case XMLmodelPackage.ELEMENT__URI:
+ setUri(URI_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.ELEMENT__LOCAL_NAME:
+ return LOCAL_NAME_EDEFAULT == null ? localName != null : !LOCAL_NAME_EDEFAULT.equals(localName);
+ case XMLmodelPackage.ELEMENT__QNAME:
+ return QNAME_EDEFAULT == null ? qName != null : !QNAME_EDEFAULT.equals(qName);
+ case XMLmodelPackage.ELEMENT__URI:
+ return URI_EDEFAULT == null ? uri != null : !URI_EDEFAULT.equals(uri);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ @Override
+ public String toString() {
+ return "<" + qName + " ... />";
+ }
+
+} //ElementImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/EntityImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/EntityImpl.java
new file mode 100644
index 000000000..0571d38d5
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/EntityImpl.java
@@ -0,0 +1,174 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.Entity;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.EntityImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EntityImpl extends NodeImpl implements Entity {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EntityImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.ENTITY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.ENTITY__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.ENTITY__NAME:
+ return getName();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.ENTITY__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.ENTITY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.ENTITY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //EntityImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/NodeImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/NodeImpl.java
new file mode 100644
index 000000000..b1d2853bc
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/NodeImpl.java
@@ -0,0 +1,163 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.xml.Node;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.NodeImpl#getChildren <em>Children</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class NodeImpl extends MinimalEObjectImpl.Container implements Node {
+ /**
+ * The cached value of the '{@link #getChildren() <em>Children</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getChildren()
+ * @generated
+ * @ordered
+ */
+ protected EList<Node> children;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.NODE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Node> getChildren() {
+ if (children == null) {
+ children = new EObjectContainmentEList<Node>(Node.class, this, XMLmodelPackage.NODE__CHILDREN);
+ }
+ return children;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case XMLmodelPackage.NODE__CHILDREN:
+ return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.NODE__CHILDREN:
+ return getChildren();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.NODE__CHILDREN:
+ getChildren().clear();
+ getChildren().addAll((Collection<? extends Node>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.NODE__CHILDREN:
+ getChildren().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.NODE__CHILDREN:
+ return children != null && !children.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //NodeImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/PrefixMappingImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/PrefixMappingImpl.java
new file mode 100644
index 000000000..295a87a66
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/PrefixMappingImpl.java
@@ -0,0 +1,228 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.PrefixMapping;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Prefix Mapping</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.PrefixMappingImpl#getPrefix <em>Prefix</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.PrefixMappingImpl#getUri <em>Uri</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PrefixMappingImpl extends NodeImpl implements PrefixMapping {
+ /**
+ * The default value of the '{@link #getPrefix() <em>Prefix</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrefix()
+ * @generated
+ * @ordered
+ */
+ protected static final String PREFIX_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPrefix() <em>Prefix</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPrefix()
+ * @generated
+ * @ordered
+ */
+ protected String prefix = PREFIX_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getUri() <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUri()
+ * @generated
+ * @ordered
+ */
+ protected static final String URI_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUri() <em>Uri</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUri()
+ * @generated
+ * @ordered
+ */
+ protected String uri = URI_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PrefixMappingImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.PREFIX_MAPPING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPrefix() {
+ return prefix;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPrefix(String newPrefix) {
+ String oldPrefix = prefix;
+ prefix = newPrefix;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.PREFIX_MAPPING__PREFIX, oldPrefix, prefix));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getUri() {
+ return uri;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUri(String newUri) {
+ String oldUri = uri;
+ uri = newUri;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.PREFIX_MAPPING__URI, oldUri, uri));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.PREFIX_MAPPING__PREFIX:
+ return getPrefix();
+ case XMLmodelPackage.PREFIX_MAPPING__URI:
+ return getUri();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.PREFIX_MAPPING__PREFIX:
+ setPrefix((String)newValue);
+ return;
+ case XMLmodelPackage.PREFIX_MAPPING__URI:
+ setUri((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.PREFIX_MAPPING__PREFIX:
+ setPrefix(PREFIX_EDEFAULT);
+ return;
+ case XMLmodelPackage.PREFIX_MAPPING__URI:
+ setUri(URI_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.PREFIX_MAPPING__PREFIX:
+ return PREFIX_EDEFAULT == null ? prefix != null : !PREFIX_EDEFAULT.equals(prefix);
+ case XMLmodelPackage.PREFIX_MAPPING__URI:
+ return URI_EDEFAULT == null ? uri != null : !URI_EDEFAULT.equals(uri);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (prefix: ");
+ result.append(prefix);
+ result.append(", uri: ");
+ result.append(uri);
+ result.append(')');
+ return result.toString();
+ }
+
+} //PrefixMappingImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ProcessingInstructionImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ProcessingInstructionImpl.java
new file mode 100644
index 000000000..654147c52
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/ProcessingInstructionImpl.java
@@ -0,0 +1,228 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xml.ProcessingInstruction;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Processing Instruction</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xml.impl.ProcessingInstructionImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xml.impl.ProcessingInstructionImpl#getData <em>Data</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ProcessingInstructionImpl extends NodeImpl implements ProcessingInstruction {
+ /**
+ * The default value of the '{@link #getTarget() <em>Target</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected static final String TARGET_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected String target = TARGET_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getData() <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getData()
+ * @generated
+ * @ordered
+ */
+ protected static final String DATA_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getData() <em>Data</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getData()
+ * @generated
+ * @ordered
+ */
+ protected String data = DATA_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ProcessingInstructionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return XMLmodelPackage.Literals.PROCESSING_INSTRUCTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(String newTarget) {
+ String oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.PROCESSING_INSTRUCTION__TARGET, oldTarget, target));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getData() {
+ return data;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setData(String newData) {
+ String oldData = data;
+ data = newData;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, XMLmodelPackage.PROCESSING_INSTRUCTION__DATA, oldData, data));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__TARGET:
+ return getTarget();
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__DATA:
+ return getData();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__TARGET:
+ setTarget((String)newValue);
+ return;
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__DATA:
+ setData((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__TARGET:
+ setTarget(TARGET_EDEFAULT);
+ return;
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__DATA:
+ setData(DATA_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__TARGET:
+ return TARGET_EDEFAULT == null ? target != null : !TARGET_EDEFAULT.equals(target);
+ case XMLmodelPackage.PROCESSING_INSTRUCTION__DATA:
+ return DATA_EDEFAULT == null ? data != null : !DATA_EDEFAULT.equals(data);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (target: ");
+ result.append(target);
+ result.append(", data: ");
+ result.append(data);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ProcessingInstructionImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelFactoryImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelFactoryImpl.java
new file mode 100644
index 000000000..662d0882c
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelFactoryImpl.java
@@ -0,0 +1,206 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.qvtd.xml.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XMLmodelFactoryImpl extends EFactoryImpl implements XMLmodelFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static XMLmodelFactory init() {
+ try {
+ XMLmodelFactory theXMLmodelFactory = (XMLmodelFactory)EPackage.Registry.INSTANCE.getEFactory(XMLmodelPackage.eNS_URI);
+ if (theXMLmodelFactory != null) {
+ return theXMLmodelFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new XMLmodelFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLmodelFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case XMLmodelPackage.ATTRIBUTE: return createAttribute();
+ case XMLmodelPackage.CDATA: return createCDATA();
+ case XMLmodelPackage.CHARACTERS: return createCharacters();
+ case XMLmodelPackage.COMMENT: return createComment();
+ case XMLmodelPackage.DTD: return createDTD();
+ case XMLmodelPackage.DOCUMENT: return createDocument();
+ case XMLmodelPackage.ELEMENT: return createElement();
+ case XMLmodelPackage.ENTITY: return createEntity();
+ case XMLmodelPackage.PREFIX_MAPPING: return createPrefixMapping();
+ case XMLmodelPackage.PROCESSING_INSTRUCTION: return createProcessingInstruction();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Attribute createAttribute() {
+ AttributeImpl attribute = new AttributeImpl();
+ return attribute;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CDATA createCDATA() {
+ CDATAImpl cdata = new CDATAImpl();
+ return cdata;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Characters createCharacters() {
+ CharactersImpl characters = new CharactersImpl();
+ return characters;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Comment createComment() {
+ CommentImpl comment = new CommentImpl();
+ return comment;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DTD createDTD() {
+ DTDImpl dtd = new DTDImpl();
+ return dtd;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Document createDocument() {
+ DocumentImpl document = new DocumentImpl();
+ return document;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element createElement() {
+ ElementImpl element = new ElementImpl();
+ return element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Entity createEntity() {
+ EntityImpl entity = new EntityImpl();
+ return entity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrefixMapping createPrefixMapping() {
+ PrefixMappingImpl prefixMapping = new PrefixMappingImpl();
+ return prefixMapping;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ProcessingInstruction createProcessingInstruction() {
+ ProcessingInstructionImpl processingInstruction = new ProcessingInstructionImpl();
+ return processingInstruction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLmodelPackage getXMLmodelPackage() {
+ return (XMLmodelPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static XMLmodelPackage getPackage() {
+ return XMLmodelPackage.eINSTANCE;
+ }
+
+} //XMLmodelFactoryImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelPackageImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelPackageImpl.java
new file mode 100644
index 000000000..1ad9bfe42
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/impl/XMLmodelPackageImpl.java
@@ -0,0 +1,573 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.qvtd.xml.Attribute;
+import org.eclipse.qvtd.xml.Characters;
+import org.eclipse.qvtd.xml.Comment;
+import org.eclipse.qvtd.xml.Document;
+import org.eclipse.qvtd.xml.Element;
+import org.eclipse.qvtd.xml.Entity;
+import org.eclipse.qvtd.xml.Node;
+import org.eclipse.qvtd.xml.PrefixMapping;
+import org.eclipse.qvtd.xml.ProcessingInstruction;
+import org.eclipse.qvtd.xml.XMLmodelFactory;
+import org.eclipse.qvtd.xml.XMLmodelPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class XMLmodelPackageImpl extends EPackageImpl implements XMLmodelPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass attributeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cdataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass charactersEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass commentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dtdEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass documentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass elementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass entityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass prefixMappingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass processingInstructionEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private XMLmodelPackageImpl() {
+ super(eNS_URI, XMLmodelFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link XMLmodelPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static XMLmodelPackage init() {
+ if (isInited) return (XMLmodelPackage)EPackage.Registry.INSTANCE.getEPackage(XMLmodelPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredXMLmodelPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ XMLmodelPackageImpl theXMLmodelPackage = registeredXMLmodelPackage instanceof XMLmodelPackageImpl ? (XMLmodelPackageImpl)registeredXMLmodelPackage : new XMLmodelPackageImpl();
+
+ isInited = true;
+
+ // Create package meta-data objects
+ theXMLmodelPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theXMLmodelPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theXMLmodelPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(XMLmodelPackage.eNS_URI, theXMLmodelPackage);
+ return theXMLmodelPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAttribute() {
+ return attributeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAttribute_Name() {
+ return (EAttribute)attributeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getAttribute_Value() {
+ return (EAttribute)attributeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCDATA() {
+ return cdataEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCharacters() {
+ return charactersEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCharacters_Data() {
+ return (EAttribute)charactersEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getComment() {
+ return commentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getComment_Data() {
+ return (EAttribute)commentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDTD() {
+ return dtdEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDTD_Name() {
+ return (EAttribute)dtdEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDTD_PublicId() {
+ return (EAttribute)dtdEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getDTD_SystemId() {
+ return (EAttribute)dtdEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDocument() {
+ return documentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getElement() {
+ return elementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElement_LocalName() {
+ return (EAttribute)elementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElement_QName() {
+ return (EAttribute)elementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getElement_Uri() {
+ return (EAttribute)elementEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEntity() {
+ return entityEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getEntity_Name() {
+ return (EAttribute)entityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNode() {
+ return nodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode_Children() {
+ return (EReference)nodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPrefixMapping() {
+ return prefixMappingEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPrefixMapping_Prefix() {
+ return (EAttribute)prefixMappingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPrefixMapping_Uri() {
+ return (EAttribute)prefixMappingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getProcessingInstruction() {
+ return processingInstructionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getProcessingInstruction_Target() {
+ return (EAttribute)processingInstructionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getProcessingInstruction_Data() {
+ return (EAttribute)processingInstructionEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLmodelFactory getXMLmodelFactory() {
+ return (XMLmodelFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ attributeEClass = createEClass(ATTRIBUTE);
+ createEAttribute(attributeEClass, ATTRIBUTE__NAME);
+ createEAttribute(attributeEClass, ATTRIBUTE__VALUE);
+
+ cdataEClass = createEClass(CDATA);
+
+ charactersEClass = createEClass(CHARACTERS);
+ createEAttribute(charactersEClass, CHARACTERS__DATA);
+
+ commentEClass = createEClass(COMMENT);
+ createEAttribute(commentEClass, COMMENT__DATA);
+
+ dtdEClass = createEClass(DTD);
+ createEAttribute(dtdEClass, DTD__NAME);
+ createEAttribute(dtdEClass, DTD__PUBLIC_ID);
+ createEAttribute(dtdEClass, DTD__SYSTEM_ID);
+
+ documentEClass = createEClass(DOCUMENT);
+
+ elementEClass = createEClass(ELEMENT);
+ createEAttribute(elementEClass, ELEMENT__LOCAL_NAME);
+ createEAttribute(elementEClass, ELEMENT__QNAME);
+ createEAttribute(elementEClass, ELEMENT__URI);
+
+ entityEClass = createEClass(ENTITY);
+ createEAttribute(entityEClass, ENTITY__NAME);
+
+ nodeEClass = createEClass(NODE);
+ createEReference(nodeEClass, NODE__CHILDREN);
+
+ prefixMappingEClass = createEClass(PREFIX_MAPPING);
+ createEAttribute(prefixMappingEClass, PREFIX_MAPPING__PREFIX);
+ createEAttribute(prefixMappingEClass, PREFIX_MAPPING__URI);
+
+ processingInstructionEClass = createEClass(PROCESSING_INSTRUCTION);
+ createEAttribute(processingInstructionEClass, PROCESSING_INSTRUCTION__TARGET);
+ createEAttribute(processingInstructionEClass, PROCESSING_INSTRUCTION__DATA);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ attributeEClass.getESuperTypes().add(this.getNode());
+ cdataEClass.getESuperTypes().add(this.getNode());
+ charactersEClass.getESuperTypes().add(this.getNode());
+ commentEClass.getESuperTypes().add(this.getNode());
+ dtdEClass.getESuperTypes().add(this.getNode());
+ documentEClass.getESuperTypes().add(this.getNode());
+ elementEClass.getESuperTypes().add(this.getNode());
+ entityEClass.getESuperTypes().add(this.getNode());
+ prefixMappingEClass.getESuperTypes().add(this.getNode());
+ processingInstructionEClass.getESuperTypes().add(this.getNode());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(attributeEClass, Attribute.class, "Attribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getAttribute_Name(), ecorePackage.getEString(), "name", null, 1, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getAttribute_Value(), ecorePackage.getEString(), "value", null, 1, 1, Attribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cdataEClass, org.eclipse.qvtd.xml.CDATA.class, "CDATA", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(charactersEClass, Characters.class, "Characters", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCharacters_Data(), ecorePackage.getEString(), "data", null, 1, 1, Characters.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(commentEClass, Comment.class, "Comment", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getComment_Data(), ecorePackage.getEString(), "data", null, 1, 1, Comment.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(dtdEClass, org.eclipse.qvtd.xml.DTD.class, "DTD", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDTD_Name(), ecorePackage.getEString(), "name", null, 1, 1, org.eclipse.qvtd.xml.DTD.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getDTD_PublicId(), ecorePackage.getEString(), "publicId", null, 1, 1, org.eclipse.qvtd.xml.DTD.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getDTD_SystemId(), ecorePackage.getEString(), "systemId", null, 1, 1, org.eclipse.qvtd.xml.DTD.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(documentEClass, Document.class, "Document", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(elementEClass, Element.class, "Element", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getElement_LocalName(), ecorePackage.getEString(), "localName", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getElement_QName(), ecorePackage.getEString(), "qName", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getElement_Uri(), ecorePackage.getEString(), "uri", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(entityEClass, Entity.class, "Entity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getEntity_Name(), ecorePackage.getEString(), "name", null, 1, 1, Entity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(nodeEClass, Node.class, "Node", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getNode_Children(), this.getNode(), null, "children", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(prefixMappingEClass, PrefixMapping.class, "PrefixMapping", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getPrefixMapping_Prefix(), ecorePackage.getEString(), "prefix", null, 1, 1, PrefixMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPrefixMapping_Uri(), ecorePackage.getEString(), "uri", null, 1, 1, PrefixMapping.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(processingInstructionEClass, ProcessingInstruction.class, "ProcessingInstruction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getProcessingInstruction_Target(), ecorePackage.getEString(), "target", null, 1, 1, ProcessingInstruction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getProcessingInstruction_Data(), ecorePackage.getEString(), "data", null, 1, 1, ProcessingInstruction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //XMLmodelPackageImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelAdapterFactory.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelAdapterFactory.java
new file mode 100644
index 000000000..5e76d4e38
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelAdapterFactory.java
@@ -0,0 +1,312 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.qvtd.xml.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage
+ * @generated
+ */
+public class XMLmodelAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static XMLmodelPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLmodelAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = XMLmodelPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected XMLmodelSwitch<Adapter> modelSwitch =
+ new XMLmodelSwitch<Adapter>() {
+ @Override
+ public Adapter caseAttribute(Attribute object) {
+ return createAttributeAdapter();
+ }
+ @Override
+ public Adapter caseCDATA(CDATA object) {
+ return createCDATAAdapter();
+ }
+ @Override
+ public Adapter caseCharacters(Characters object) {
+ return createCharactersAdapter();
+ }
+ @Override
+ public Adapter caseComment(Comment object) {
+ return createCommentAdapter();
+ }
+ @Override
+ public Adapter caseDTD(DTD object) {
+ return createDTDAdapter();
+ }
+ @Override
+ public Adapter caseDocument(Document object) {
+ return createDocumentAdapter();
+ }
+ @Override
+ public Adapter caseElement(Element object) {
+ return createElementAdapter();
+ }
+ @Override
+ public Adapter caseEntity(Entity object) {
+ return createEntityAdapter();
+ }
+ @Override
+ public Adapter caseNode(Node object) {
+ return createNodeAdapter();
+ }
+ @Override
+ public Adapter casePrefixMapping(PrefixMapping object) {
+ return createPrefixMappingAdapter();
+ }
+ @Override
+ public Adapter caseProcessingInstruction(ProcessingInstruction object) {
+ return createProcessingInstructionAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Attribute <em>Attribute</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Attribute
+ * @generated
+ */
+ public Adapter createAttributeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.CDATA <em>CDATA</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.CDATA
+ * @generated
+ */
+ public Adapter createCDATAAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Characters <em>Characters</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Characters
+ * @generated
+ */
+ public Adapter createCharactersAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Comment <em>Comment</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Comment
+ * @generated
+ */
+ public Adapter createCommentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.DTD <em>DTD</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.DTD
+ * @generated
+ */
+ public Adapter createDTDAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Document <em>Document</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Document
+ * @generated
+ */
+ public Adapter createDocumentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Element <em>Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Element
+ * @generated
+ */
+ public Adapter createElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Entity <em>Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Entity
+ * @generated
+ */
+ public Adapter createEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.Node
+ * @generated
+ */
+ public Adapter createNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.PrefixMapping <em>Prefix Mapping</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.PrefixMapping
+ * @generated
+ */
+ public Adapter createPrefixMappingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xml.ProcessingInstruction <em>Processing Instruction</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.qvtd.xml.ProcessingInstruction
+ * @generated
+ */
+ public Adapter createProcessingInstructionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //XMLmodelAdapterFactory
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelResourceFactoryImpl.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelResourceFactoryImpl.java
new file mode 100644
index 000000000..cc344e235
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelResourceFactoryImpl.java
@@ -0,0 +1,52 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.util;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+import org.eclipse.qvtd.xml.utilities.XMLmodelResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.util.XMLmodelResourceImpl
+ * @generated
+ */
+public class XMLmodelResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLmodelResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ Resource result = new XMLmodelResourceImpl(uri);
+ return result;
+ }
+
+} //XMLmodelResourceFactoryImpl
diff --git a/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelSwitch.java b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelSwitch.java
new file mode 100644
index 000000000..ae435ca86
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/emf-gen/org/eclipse/qvtd/xml/util/XMLmodelSwitch.java
@@ -0,0 +1,342 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.qvtd.xml.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xml.XMLmodelPackage
+ * @generated
+ */
+public class XMLmodelSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static XMLmodelPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public XMLmodelSwitch() {
+ if (modelPackage == null) {
+ modelPackage = XMLmodelPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case XMLmodelPackage.ATTRIBUTE: {
+ Attribute attribute = (Attribute)theEObject;
+ T result = caseAttribute(attribute);
+ if (result == null) result = caseNode(attribute);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.CDATA: {
+ CDATA cdata = (CDATA)theEObject;
+ T result = caseCDATA(cdata);
+ if (result == null) result = caseNode(cdata);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.CHARACTERS: {
+ Characters characters = (Characters)theEObject;
+ T result = caseCharacters(characters);
+ if (result == null) result = caseNode(characters);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.COMMENT: {
+ Comment comment = (Comment)theEObject;
+ T result = caseComment(comment);
+ if (result == null) result = caseNode(comment);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.DTD: {
+ DTD dtd = (DTD)theEObject;
+ T result = caseDTD(dtd);
+ if (result == null) result = caseNode(dtd);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.DOCUMENT: {
+ Document document = (Document)theEObject;
+ T result = caseDocument(document);
+ if (result == null) result = caseNode(document);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.ELEMENT: {
+ Element element = (Element)theEObject;
+ T result = caseElement(element);
+ if (result == null) result = caseNode(element);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.ENTITY: {
+ Entity entity = (Entity)theEObject;
+ T result = caseEntity(entity);
+ if (result == null) result = caseNode(entity);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.NODE: {
+ Node node = (Node)theEObject;
+ T result = caseNode(node);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.PREFIX_MAPPING: {
+ PrefixMapping prefixMapping = (PrefixMapping)theEObject;
+ T result = casePrefixMapping(prefixMapping);
+ if (result == null) result = caseNode(prefixMapping);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case XMLmodelPackage.PROCESSING_INSTRUCTION: {
+ ProcessingInstruction processingInstruction = (ProcessingInstruction)theEObject;
+ T result = caseProcessingInstruction(processingInstruction);
+ if (result == null) result = caseNode(processingInstruction);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Attribute</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Attribute</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAttribute(Attribute object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>CDATA</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>CDATA</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCDATA(CDATA object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Characters</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Characters</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCharacters(Characters object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comment</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comment</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseComment(Comment object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>DTD</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>DTD</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDTD(DTD object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Document</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Document</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDocument(Document object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElement(Element object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Entity</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Entity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEntity(Entity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Node</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNode(Node object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Prefix Mapping</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Prefix Mapping</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePrefixMapping(PrefixMapping object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Processing Instruction</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Processing Instruction</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProcessingInstruction(ProcessingInstruction object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //XMLmodelSwitch
diff --git a/plugins/org.eclipse.qvtd.xml/model/XMLmodel.ecore b/plugins/org.eclipse.qvtd.xml/model/XMLmodel.ecore
new file mode 100644
index 000000000..59c6f04df
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/model/XMLmodel.ecore
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="xml" nsURI="http://www.eclipse.org/qvt/2015/XML" nsPrefix="sax">
+ <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CDATA" eSuperTypes="#//Node"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Characters" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DTD" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="publicId" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="systemId" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Document" eSuperTypes="#//Node"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="localName" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="qName" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uri" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Entity" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
+ eType="#//Node" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrefixMapping" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="prefix" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="uri" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProcessingInstruction" eSuperTypes="#//Node">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="target" ordered="false"
+ lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" ordered="false" lowerBound="1"
+ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.qvtd.xml/model/XMLmodel.genmodel b/plugins/org.eclipse.qvtd.xml/model/XMLmodel.genmodel
new file mode 100644
index 000000000..4d1db0c2f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/model/XMLmodel.genmodel
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="&lt;copyright>&#xA;&#xA;Copyright (c) 2018 Willink Transformations and others.&#xA;All rights reserved. This program and the accompanying materials&#xA;are made available under the terms of the Eclipse Public License v1.0&#xA;which accompanies this distribution, and is available at&#xA;http://www.eclipse.org/legal/epl-v10.html&#xA;&#xA;Contributors:&#xA; E.D.Willink - Initial API and implementation&#xA;&#xA;&lt;/copyright>"
+ modelDirectory="/org.eclipse.qvtd.xml/emf-gen" modelPluginID="org.eclipse.qvtd.xml"
+ modelName="XMLmodel" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+ operationReflection="true" importOrganizing="true">
+ <foreignModel>XMLmodel.ecore</foreignModel>
+ <genPackages prefix="XMLmodel" basePackage="org.eclipse.qvtd" resource="XMI" disposableProviderFactory="true"
+ generateExampleClass="false" ecorePackage="XMLmodel.ecore#/">
+ <genClasses ecoreClass="XMLmodel.ecore#//Attribute">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Attribute/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Attribute/value"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//CDATA"/>
+ <genClasses image="false" ecoreClass="XMLmodel.ecore#//Characters">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Characters/data"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//Comment">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Comment/data"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//DTD">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//DTD/name"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//DTD/publicId"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//DTD/systemId"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//Document"/>
+ <genClasses ecoreClass="XMLmodel.ecore#//Element">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Element/localName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Element/qName"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Element/uri"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//Entity">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//Entity/name"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="XMLmodel.ecore#//Node">
+ <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference XMLmodel.ecore#//Node/children"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//PrefixMapping">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//PrefixMapping/prefix"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//PrefixMapping/uri"/>
+ </genClasses>
+ <genClasses ecoreClass="XMLmodel.ecore#//ProcessingInstruction">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//ProcessingInstruction/target"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute XMLmodel.ecore#//ProcessingInstruction/data"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.qvtd.xml/plugin.properties b/plugins/org.eclipse.qvtd.xml/plugin.properties
new file mode 100644
index 000000000..78c895915
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/plugin.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2018 Willink Transformations and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# E.D.Willink - initial API and implementation
+###############################################################################
+
+pluginName = QVT model of XML SAX parser (Incubation)
+providerName = Eclipse QVTd
diff --git a/plugins/org.eclipse.qvtd.xml/plugin.xml b/plugins/org.eclipse.qvtd.xml/plugin.xml
new file mode 100644
index 000000000..f04b5db52
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/plugin.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated XMLmodel -->
+ <package
+ uri="http://www.eclipse.org/qvt/2015/XML"
+ class="org.eclipse.qvtd.xml.XMLmodelPackage"
+ genModel="model/XMLmodel.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.extension_parser">
+ <!-- @generated XMLmodel -->
+ <parser
+ type="xmlmodel"
+ class="org.eclipse.qvtd.xml.util.XMLmodelResourceFactoryImpl"/>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.qvtd.xml/src/org/eclipse/qvtd/xml/utilities/XMLmodelResourceImpl.java b/plugins/org.eclipse.qvtd.xml/src/org/eclipse/qvtd/xml/utilities/XMLmodelResourceImpl.java
new file mode 100644
index 000000000..0924ff56f
--- /dev/null
+++ b/plugins/org.eclipse.qvtd.xml/src/org/eclipse/qvtd/xml/utilities/XMLmodelResourceImpl.java
@@ -0,0 +1,310 @@
+/**
+ * <copyright>
+ *
+ * Copyright (c) 2018 Willink Transformations and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * E.D.Willink - Initial API and implementation
+ *
+ * </copyright>
+ */
+package org.eclipse.qvtd.xml.utilities;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.xmi.XMLHelper;
+import org.eclipse.emf.ecore.xmi.XMLLoad;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.XMLSave;
+import org.eclipse.emf.ecore.xmi.impl.XMILoadImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMISaveImpl;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.qvtd.xml.Attribute;
+import org.eclipse.qvtd.xml.CDATA;
+import org.eclipse.qvtd.xml.Characters;
+import org.eclipse.qvtd.xml.Comment;
+import org.eclipse.qvtd.xml.DTD;
+import org.eclipse.qvtd.xml.Document;
+import org.eclipse.qvtd.xml.Element;
+import org.eclipse.qvtd.xml.Entity;
+import org.eclipse.qvtd.xml.Node;
+import org.eclipse.qvtd.xml.PrefixMapping;
+import org.eclipse.qvtd.xml.ProcessingInstruction;
+import org.eclipse.qvtd.xml.XMLmodelFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.ext.LexicalHandler;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ * XMLmodelResourceImpl loads an XML Resource creating a model that conforms to http://www.eclipse.org/qvt/2015/XML.
+ * It therefore comprioses a hierrachy of Nodes such s Element, Attribute, Comment corresponding to SAX parser call-backs.
+ *
+ * This allows the XML technology space to be manipulated using Model techology space tooling.
+ */
+public class XMLmodelResourceImpl extends XMIResourceImpl
+{
+ public static class XMLmodelLoadImpl extends XMILoadImpl
+ {
+ private SAXParser makeParser = null;
+
+ public XMLmodelLoadImpl(XMLHelper helper) {
+ super(helper);
+ }
+
+ @Override
+ protected DefaultHandler makeDefaultHandler() {
+ XMLmodelHandler handler = new XMLmodelHandler(resource, helper, options);
+ try {
+ makeParser.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
+ } catch (SAXException e) {
+ // Never happens, but we can survive without a lexical-handler
+ }
+ return handler;
+ }
+
+ @Override
+ protected SAXParser makeParser() throws ParserConfigurationException, SAXException {
+ makeParser = super.makeParser();
+ return makeParser;
+ }
+ }
+
+ public static class XMLmodelHandler extends DefaultHandler implements LexicalHandler
+ {
+ private XMLResource xmlResource;
+ private Document document = null;
+ private @NonNull Stack<@NonNull Node> nodeStack = new Stack<>();
+
+ public XMLmodelHandler(XMLResource xmlResource, XMLHelper helper, Map<?, ?> options) {
+ this.xmlResource = xmlResource;
+ }
+
+ protected void addNode(Node node) {
+ if (nodeStack.isEmpty()) {
+ document.getChildren().add(node);
+ }
+ else {
+ nodeStack.peek().getChildren().add(node);
+ }
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length) {
+ Characters characters = XMLmodelFactory.eINSTANCE.createCharacters();
+ String characterText = new String(ch, start, length);
+ // if (!characterText.trim().isEmpty()) {
+ characters.setData(characterText);
+ // }
+ addNode(characters);
+ }
+
+ @Override
+ public void comment(char[] ch, int start, int length) {
+ Comment comment = XMLmodelFactory.eINSTANCE.createComment();
+ comment.setData(new String(ch, start, length));
+ addNode(comment);
+ }
+
+ @Override
+ public void endCDATA() {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void endDTD() {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void endDocument() {
+ xmlResource.getContents().add(document);
+ document = null;
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String name) {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void endEntity(String name) {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void endPrefixMapping(String prefix) {
+ nodeStack.pop();
+ }
+
+ @Override
+ public void processingInstruction(String target, String data) {
+ ProcessingInstruction processingInstruction = XMLmodelFactory.eINSTANCE.createProcessingInstruction();
+ processingInstruction.setTarget(target);
+ processingInstruction.setData(data);
+ addNode(processingInstruction);
+ }
+
+ @Override
+ public void startCDATA() {
+ CDATA cdata = XMLmodelFactory.eINSTANCE.createCDATA();
+ addNode(cdata);
+ nodeStack.push(cdata);
+ }
+
+ @Override
+ public void startDTD(String name, String publicId, String systemId) {
+ DTD dtd = XMLmodelFactory.eINSTANCE.createDTD();
+ dtd.setName(name);
+ dtd.setPublicId(publicId);
+ dtd.setSystemId(systemId);
+ addNode(dtd);
+ nodeStack.push(dtd);
+ }
+
+ @Override
+ public void startDocument() {
+ document = XMLmodelFactory.eINSTANCE.createDocument();
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
+ Element element = XMLmodelFactory.eINSTANCE.createElement();
+ element.setUri(uri);
+ element.setLocalName(localName);
+ element.setQName(qName);
+ for (int index = 0; index < attributes.getLength(); index++) {
+ Attribute attribute = XMLmodelFactory.eINSTANCE.createAttribute();
+ attribute.setName(attributes.getQName(index));
+ attribute.setValue(attributes.getValue(index));
+ element.getChildren().add(attribute);
+ }
+ addNode(element);
+ nodeStack.push(element);
+ }
+
+ @Override
+ public void startEntity(String name) {
+ Entity entity = XMLmodelFactory.eINSTANCE.createEntity();
+ entity.setName(name);
+ addNode(entity);
+ nodeStack.push(entity);
+ }
+
+ @Override
+ public void startPrefixMapping(String prefix, String uri) {
+ PrefixMapping prefixMapping = XMLmodelFactory.eINSTANCE.createPrefixMapping();
+ prefixMapping.setPrefix(prefix);
+ prefixMapping.setUri(uri);
+ addNode(prefixMapping);
+ nodeStack.push(prefixMapping);
+ }
+ }
+
+ public static class XMLmodelSave extends XMISaveImpl
+ {
+ public XMLmodelSave(XMLHelper helper) {
+ super(helper);
+ }
+
+ @Override
+ public void traverse(List<? extends EObject> contents) {
+ doc.add("<?xml version=\"" + xmlVersion + "\" encoding=\"" + encoding + "\"?>");
+ doc.addLine();
+ doc.setMixed(true);
+ traverseElements(contents);
+ }
+
+ protected void traverseElements(List<? extends EObject> contents) {
+ for (EObject eObject : contents) {
+ if (eObject instanceof Document) {
+ traverseElements(((Document)eObject).getChildren());
+ }
+ else if (eObject instanceof Element) {
+ Element element = (Element)eObject;
+ doc.startElement(element.getQName());
+ List<Node> children = element.getChildren();
+ if ((children.size() == 1) && (children.get(0) instanceof Characters)) {
+ Characters characters = (Characters)children.get(0);
+ String data = characters.getData();
+ doc.endContentElement(escape.convert(data));
+ }
+ else {
+ traverseElements(children);
+ doc.endElement();
+ }
+ }
+ else if (eObject instanceof Attribute) {
+ Attribute attribute = (Attribute)eObject;
+ doc.startAttribute(attribute.getName());
+ doc.addAttributeContent(escape.convert(attribute.getValue()));
+ doc.endAttribute();
+ }
+ else if (eObject instanceof Comment) {
+ Comment comment = (Comment)eObject;
+ doc.addComment(comment.getData());
+ doc.addLine();
+ }
+ else if (eObject instanceof Characters) {
+ Characters characters = (Characters)eObject;
+ @SuppressWarnings("unused") String data = characters.getData();
+ // doc.add(data);
+ }
+ else if (eObject instanceof CDATA) {
+ CDATA cdata = (CDATA)eObject;
+ doc.addCDATA(getCharacters(cdata));
+ }
+ else if (eObject instanceof ProcessingInstruction) {
+ ProcessingInstruction processingInstruction = (ProcessingInstruction)eObject;
+ doc.addProcessingInstruction(processingInstruction.getTarget(), processingInstruction.getData());
+ }
+ }
+ }
+
+ private String getCharacters(Node node) {
+ StringBuilder s = new StringBuilder();
+ for (@NonNull Node child : node.getChildren()) {
+ if (child instanceof Characters) {
+ s.append(((Characters)child).getData());
+ }
+ }
+ return s.toString();
+ }
+ }
+
+ public XMLmodelResourceImpl(URI uri) {
+ super(uri);
+ }
+
+ @Override
+ protected XMLLoad createXMLLoad() {
+ return new XMLmodelLoadImpl(createXMLHelper());
+ }
+
+ @Override
+ protected XMLLoad createXMLLoad(Map<?, ?> options) {
+ return createXMLLoad();
+ }
+
+ @Override
+ protected XMLSave createXMLSave() {
+ return new XMLmodelSave(createXMLHelper());
+ }
+
+ @Override
+ protected XMLSave createXMLSave(Map<?, ?> options) {
+ return createXMLSave();
+ }
+}

Back to the top