[elbe-devel] [PATCH 1/2] Add support for XML catalog

Philipp Arras philipp.arras at linutronix.de
Tue Jun 6 16:00:25 CEST 2017


From: Benedikt Spranger <b.spranger at linutronix.de>

commit b7afcdda35fe308ba8c1a534ccdab15463822945 "Add a E.L.B.E.
preprocessor command" added a reference to the XML bas schema from W3C.
As a unwanted side effect the XML schema validation need a internet
connection to download the XML base schema from W3C.

Add XML catalog support to register the E.L.B.E. and XML base schema as
XML catalog and make both systemwide visible to XML libraries without
a internet connection.

Signed-off-by: Benedikt Spranger <b.spranger at linutronix.de>
---
 debian/catalog.xml             |   18 +
 debian/control                 |    3 +-
 debian/elbe-common.install     |    2 +-
 debian/elbe-common.xmlcatalogs |    4 +
 debian/rules                   |    4 +
 docs/Makefile                  |    4 +-
 elbepack/dbsfed.xsd            | 2063 ----------------------------------------
 elbepack/validate.py           |    2 +-
 elbepack/xmlpreprocess.py      |    2 +-
 schema/dbsfed.xsd              | 2063 ++++++++++++++++++++++++++++++++++++++++
 schema/xml.xsd                 |  117 +++
 setup.py                       |    4 +-
 12 files changed, 2215 insertions(+), 2071 deletions(-)
 create mode 100644 debian/catalog.xml
 create mode 100644 debian/elbe-common.xmlcatalogs
 delete mode 100644 elbepack/dbsfed.xsd
 create mode 100644 schema/dbsfed.xsd
 create mode 100644 schema/xml.xsd

diff --git a/debian/catalog.xml b/debian/catalog.xml
new file mode 100644
index 0000000..d9f8377
--- /dev/null
+++ b/debian/catalog.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE catalog PUBLIC "-//OASIS//DTD XML Catalogs V1.0//EN"
+  "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
+
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="public">
+  <system systemId="http://www.w3.org/2001/03/xml.xsd"
+	  uri="xml.xsd"/>
+
+  <rewriteSystem systemIdStartString="http://www.w3.org/2001/03/"
+		 rewritePrefix="./"/>
+
+  <system systemId="https://www.linutronix.de/projects/Elbe/dbsfed.xsd"
+	  uri="dbsfed.xsd"/>
+
+  <rewriteSystem systemIdStartString="https://www.linutronix.de/projects/Elbe"
+		 rewritePrefix="./"/>
+
+</catalog>
diff --git a/debian/control b/debian/control
index 891e049..58d2412 100644
--- a/debian/control
+++ b/debian/control
@@ -13,7 +13,8 @@ Build-Depends: dh-python,
   xmlto,
   lintian,
   source-highlight,
-  git
+  git,
+  xml-core
 Standards-Version: 3.9.6
 Homepage: http://elbe-rfs.org
 
diff --git a/debian/elbe-common.install b/debian/elbe-common.install
index 19d6b7a..77a729b 100644
--- a/debian/elbe-common.install
+++ b/debian/elbe-common.install
@@ -9,7 +9,6 @@
 ./usr/lib/python2.*/*-packages/elbepack/commands/__init__.py
 ./usr/lib/python2.*/*-packages/elbepack/aptprogress.py
 ./usr/lib/python2.*/*-packages/elbepack/config.py
-./usr/lib/python2.*/*-packages/elbepack/dbsfed.xsd
 ./usr/lib/python2.*/*-packages/elbepack/default-preseed.xml
 ./usr/lib/python2.*/*-packages/elbepack/directories.py
 ./usr/lib/python2.*/*-packages/elbepack/dosunix.py
@@ -32,3 +31,4 @@
 ./usr/lib/python2.*/*-packages/elbepack/virtapt.py
 ./usr/lib/python2.*/*-packages/elbepack/xmldefaults.py
 ./usr/share/man/man1/elbe.1
+schema/*xsd	usr/share/xml/elbe-common/
diff --git a/debian/elbe-common.xmlcatalogs b/debian/elbe-common.xmlcatalogs
new file mode 100644
index 0000000..b398c40
--- /dev/null
+++ b/debian/elbe-common.xmlcatalogs
@@ -0,0 +1,4 @@
+local;debian/catalog.xml;/usr/share/xml/elbe-common/catalog.xml
+root-and-package;public;https://www.linutronix.de/projects/Elbe;/usr/share/xml/elbe-common/catalog.xml
+root-and-package;system;https://www.linutronix.de/projects/Elbe/dbsfed.xsd;/usr/share/xml/elbe-common/catalog.xml
+root-and-package;public;http://www.w3.org/XML/1998/namespace;/usr/share/xml/elbe-common/catalog.xml
diff --git a/debian/rules b/debian/rules
index 25ad63e..1d14258 100755
--- a/debian/rules
+++ b/debian/rules
@@ -16,5 +16,9 @@ override_dh_systemd_start:
 override_dh_systemd_stop:
 	dh_systemd_stop --no-package=elbe
 
+override_dh_install:
+	dh_install
+	dh_installxmlcatalogs
+
 %:
 	dh --with systemd --buildsystem=python_distutils --with python2 $@
diff --git a/docs/Makefile b/docs/Makefile
index 0813692..ce5247d 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -142,8 +142,8 @@ elbeoverview-en-ie.html: elbeoverview-en.txt elbe-process.png emu-process.png
 	sed -i "1s/^/************************\n/" $*.rst
 	$(ASCIIDOC) -b html5 -a icons -a toc2 -a theme=flask -o elbeoverview-en.html elbeoverview-en.txt
 
-elbe-schema-reference.txt: ../elbepack/dbsfed.xsd ../elbepack/xsdtoasciidoc.mako
-	../elbe xsdtoasciidoc --output elbe-schema-reference.txt ../elbepack/dbsfed.xsd
+elbe-schema-reference.txt: ../schema/dbsfed.xsd ../elbepack/xsdtoasciidoc.mako
+	../elbe xsdtoasciidoc --output elbe-schema-reference.txt ../schema/dbsfed.xsd
 	$(ASCIIDOC) -a toc2 $(ASCIIDOC_EXTRA) $(ASCIIDOC_DATA_URI) -b xhtml11 elbe-schema-reference.txt
 
 elbe-schema-reference.html: %.html : %.txt
diff --git a/elbepack/dbsfed.xsd b/elbepack/dbsfed.xsd
deleted file mode 100644
index aae68ac..0000000
--- a/elbepack/dbsfed.xsd
+++ /dev/null
@@ -1,2063 +0,0 @@
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
-        xmlns:rfs="https://www.linutronix.de/projects/Elbe"
-        xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
-        targetNamespace="https://www.linutronix.de/projects/Elbe"
-        elementFormDefault="unqualified"
-        attributeFormDefault="unqualified">
-
-  <import namespace="http://www.w3.org/XML/1998/namespace"
-	  schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
-
-  <element name="RootFileSystem" type="rfs:RootFileSystemType">
-    <annotation>
-      <documentation>
-        describes one elbe project. An elbe project contains the creation of a
-        build environemt and the definition of a elbe target rootfilesystem.
-      </documentation>
-    </annotation>
-   </element>
-
-  <complexType name="RootFileSystemType">
-    <annotation>
-      <documentation>
-      includes all subelements to define the elbe project
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="initvm" type="rfs:initvm" minOccurs="0">
-        <annotation>
-          <documentation>
-            Configurations that are used for creating the initvm
-            e.g. the definition of the used debian mirrors, suite and buildtype
-          </documentation>
-        </annotation>
-      </element>
-      <element name="project" type="rfs:project" minOccurs="0">
-        <annotation>
-          <documentation>
-            Configurations that are used for creating the buildenvironment and
-            the target rootfilesystem. e.g. the definition of the used debian
-            mirrors.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="target" type="rfs:target" minOccurs="0">
-        <annotation>
-          <documentation>
-            Configurations that are used to create the target rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="archive" type="base64Binary" minOccurs="0">
-        <annotation>
-          <documentation>
-            tar.bz2 file that contains configuration files for the target
-            rootfilesystem. To alter this node use 'elbe chg_archive' and
-            to get the content of this node 'elbe get_archive'.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="debootstrappkgs" type="rfs:fullpkg-list" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            List of packages installed right after debootstrap
-          </documentation>
-        </annotation>
-      </element>
-      <element name="initvmpkgs" type="rfs:fullpkg-list" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            List of packages installed right after debootstrap
-          </documentation>
-        </annotation>
-      </element>
-      <element name="initvm_sources_list" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            apt sources list.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="initvm_apt_prefs" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            apt preferences list
-          </documentation>
-        </annotation>
-      </element>
-      <element name="fullpkgs" type="rfs:fullpkg-list" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            List of packages with their versions installed on the RFS
-          </documentation>
-        </annotation>
-      </element>
-      <element name="sources_list" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            apt sources list.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="apt_prefs" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            apt preferences list
-          </documentation>
-        </annotation>
-      </element>
-      <element name="elbe_version" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            Elbe Version that was used in the last build of this file.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute name="created" type="dateTime">
-      <annotation>
-        <documentation>
-          timestamp of creation of the xml file
-        </documentation>
-      </annotation>
-    </attribute>
-    <attribute name="revision" type="rfs:revisionNr" use="required">
-      <annotation>
-        <documentation>
-          revision of the xml file (needs to match revision of the schema)
-        </documentation>
-      </annotation>
-    </attribute>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <simpleType name="revisionNr">
-    <annotation>
-      <documentation>
-      is used to decide if your elbe version is compatible
-      with the given xml file
-      </documentation>
-    </annotation>
-    <restriction base="integer">
-      <minInclusive value="6" />
-      <maxInclusive value="6" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="binary-url">
-    <annotation>
-      <documentation>
-        e.g. "http://myhost/debian /" or "http://debian.org/debian main"
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="pin" type="string" use="optional">
-          <annotation>
-            <documentation>
-              Pin-Priority of packages from this source.
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="package" type="string" use="optional">
-          <annotation>
-            <documentation>
-              Packages that should be pinned.
-            </documentation>
-          </annotation>
-        </attribute>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="url">
-    <annotation>
-      <documentation>
-      links to one additional debian mirror
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="binary" type="rfs:binary-url" minOccurs="0">
-        <annotation>
-          <documentation>
-            e.g. "http://myhost/debian /" or "http://debian.org/debian main"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="source" type="string" minOccurs="0">
-        <annotation>
-          <documentation>
-            e.g. "http://myhost/sources /" or "http://debian.org/debian main"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="key" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-	    URL of the Public Key used to sign this Repository e.g "http://myhost/key.pub" or "http://debian.linutronix.de/elbe/elbe-repo.pub"
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="url-list">
-    <annotation>
-      <documentation>
-      links to additional debian mirrors
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="url" type="rfs:url" minOccurs="0" maxOccurs="10">
-        <annotation>
-          <documentation>
-            describes an additional debian mirror
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="mirror">
-    <annotation>
-      <documentation>
-      specify main and additional debian mirrors
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="primary_host" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            IP address or hostname of the primary debian mirror
-            e.g. "debian.org" without a protocol or any slash
-          </documentation>
-        </annotation>
-      </element>
-      <element name="primary_path" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            base path to the debian mirror on the given host
-            e.g. "/debian"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="primary_proto" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            protocol to access the primary debian mirror
-            e.g. "http" or "ftp"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="primary_proxy" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            proxy to access the debian mirror
-            e.g. "http://me:mypass@myproxy:8080"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="cdrom" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            iso image of a cdrom/dvd with debian packages.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="url-list" type="rfs:url-list" minOccurs="0">
-        <annotation>
-          <documentation>
-            additional debian repositories, e.g. for own debian packages
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="initvm">
-    <annotation>
-      <documentation>
-        describes settings that apply to the creation of the initvm
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="buildtype" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            Default buildtype like armel, ppc, and in the future armel-virtio
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mirror" type="rfs:mirror">
-        <annotation>
-          <documentation>
-            used debian mirrors
-          </documentation>
-        </annotation>
-      </element>
-      <element name="noauth" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            allow installation of unsigned debian packages
-          </documentation>
-        </annotation>
-      </element>
-      <element name="preference" type="rfs:preference" minOccurs="0">
-        <annotation>
-          <documentation>
-            used for pinning of all packages
-            TODO: example?
-          </documentation>
-        </annotation>
-      </element>
-      <element name="suite" type="rfs:string">
-        <annotation>
-          <documentation>
-            name of the debian suite that should be used to generate the initvm.
-            e.g. "lenny", "squeeze", "sid", ..
-          </documentation>
-        </annotation>
-      </element>
-      <element name="pkg-list" type="rfs:pkg-list" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            additional packages that are installed into the initvm.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="preseed" type="rfs:preseed" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            Custom preseeding Values for apt
-          </documentation>
-        </annotation>
-      </element>
-      <element name="size" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            size of the virtual harddisk used to run the build environment
-          </documentation>
-        </annotation>
-      </element>
-      <element name="img" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            hd image backend format: raw, qcow, vmdk, ...
-          </documentation>
-        </annotation>
-      </element>
-      <element name="portforwarding" type="rfs:portforwarding" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            network ports of the buildenvironment that are forwarded to the
-            host machine
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="project">
-    <annotation>
-      <documentation>
-        describes elbe project settings that apply to the creation of the target
-        rootfilesystem and include the definition of the build environment
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            name of the project this rootfilesystem is associated with
-          </documentation>
-        </annotation>
-      </element>
-      <element name="version" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            version of the rootfilesystem definition
-          </documentation>
-        </annotation>
-      </element>
-      <element name="description" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            human readable description of the project
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildtype" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            Default buildtype like armel, ppc, and in the future armel-virtio
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mirror" type="rfs:mirror">
-        <annotation>
-          <documentation>
-            used debian mirrors
-          </documentation>
-        </annotation>
-      </element>
-      <element name="noauth" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            allow installation of unsigned debian packages
-          </documentation>
-        </annotation>
-      </element>
-      <element name="preference" type="rfs:preference" minOccurs="0">
-        <annotation>
-          <documentation>
-            used for pinning of all packages
-            TODO: example?
-          </documentation>
-        </annotation>
-      </element>
-      <element name="raw-preference" type="rfs:raw-preference" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            gets dedented and striped and is then written to /etc/apt/preferences
-            TODO: example?
-          </documentation>
-        </annotation>
-      </element>
-      <element name="suite" type="rfs:string">
-        <annotation>
-          <documentation>
-            name of the debian suite that should be used to generate the
-            buildenvironment and the rootfilesystem.
-            e.g. "lenny", "squeeze", "sid", ..
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildimage" type="rfs:buildimage" minOccurs="0">
-        <annotation>
-          <documentation>
-            reference to the buildimage which is used to generate the
-            rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="preseed" type="rfs:preseed" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            Custom preseeding Values for apt
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="preference">
-    <annotation>
-      <documentation>
-        describes a global pinning of debian packages
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="pin" type="string" use="required">
-          <annotation>
-            <documentation>
-              TODO: format???
-            </documentation>
-          </annotation>
-        </attribute>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="raw-preference">
-    <annotation>
-      <documentation>
-        content is directly written to /etc/apt/preferences.
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string" />
-    </simpleContent>
-  </complexType>
-
-  <complexType name="buildimage">
-    <annotation>
-      <documentation>
-        definition of the build environment
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="arch" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            architecture of the target system. e.g. "amd64", "armel", "ppc", ..
-          </documentation>
-        </annotation>
-      </element>
-      <element name="size" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            size of the virtual harddisk used to run the build environment
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mem" type="rfs:memory" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            amount of memory mapped into the virtual build environment
-          </documentation>
-        </annotation>
-      </element>
-      <element name="interpreter" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            virtual machine interpreter, e.g. "kvm", "qemu-system-arm", ...
-          </documentation>
-        </annotation>
-      </element>
-      <element name="interpreterversion" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            virtual machine interpreter version, e.g. "2.8.0", "1.4.7", ...
-          </documentation>
-        </annotation>
-      </element>
-      <element name="kinitrd" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            pkg name of the initrd/kernel package.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="console" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            serial console of the virtual machine, e.g. "ttyAMA0,115200n1"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="machine" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            virtual platform to host the build environment,
-            e.g. "versatilepb"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="NIC" type="rfs:NIC" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            network interface emulation
-          </documentation>
-        </annotation>
-      </element>
-      <element name="portforwarding" type="rfs:portforwarding" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            network ports of the buildenvironment that are forwarded to the
-            host machine
-          </documentation>
-        </annotation>
-      </element>
-      <element name="pkgversionlist" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            create /etc/elbe_pkglist on the target RFS. It includes all packages
-            that include files that are used in the target. The list also
-            contains the versions of the used packages.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="pkg-list" type="rfs:pkg-list" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            additional packages that are only installed into the
-            build environment; not into the target root filesystem.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="memory">
-    <annotation>
-      <documentation>
-        Helper around memory_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:memory_restriction">
-	<attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-  
-  <simpleType name="memory_restriction">
-    <annotation>
-      <documentation>
-        at least 128 MB of memory are needed to run the debian-installer
-      </documentation>
-    </annotation>
-    <restriction base="integer">
-      <minInclusive value="128" />
-    </restriction>
-  </simpleType>
-  
-  <complexType name="NIC">
-     <annotation>
-       <documentation>
-         describes a virtual network interface
-       </documentation>
-     </annotation>
-    <sequence>
-      <element name="model" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            hardware emulation of the network interface; e.g. "e1000"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="MAC" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-             mac address of the virtual network interface
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="fw_proto">
-    <annotation>
-      <documentation>
-        Helper around fw_proto_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:fw_proto_restriction">
-	<attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-  
-  <simpleType name="fw_proto_restriction">
-    <annotation>
-      <documentation>
-         only tcp and udp are allowed protocols for forwarding
-      </documentation>
-    </annotation>
-    <restriction base="string">
-      <enumeration value="tcp" />
-      <enumeration value="udp" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="forward">
-    <annotation>
-      <documentation>
-         forward a network port from the build environment to the host machine
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="proto" type="rfs:fw_proto" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            network protocol to forward either "udp" or "tcp"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildenv" type="integer" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            port on the buildenvironment, e.g. "22" for ssh
-          </documentation>
-        </annotation>
-      </element>
-      <element name="host" type="integer" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            port on the host machine, e.g. "10022"
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="portforwarding" >
-    <annotation>
-      <documentation>
-         forward network ports from the build environment to the host machine
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="forward" type="rfs:forward" minOccurs="1" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            describes a single port forward
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="target">
-    <annotation>
-      <documentation>
-         configuration of the target rootfilesystem
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="hostname" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            hostname of the system
-          </documentation>
-        </annotation>
-      </element>
-      <element name="domain" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            domainname of the network the target system is part of
-          </documentation>
-        </annotation>
-      </element>
-      <element name="passwd" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            root password
-          </documentation>
-        </annotation>
-      </element>
-      <element name="console" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            serial console for getty
-          </documentation>
-        </annotation>
-      </element>
-      <element name="package" type="rfs:package" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            package rootfilesystem as a tarball, cpio or a squashfs image
-          </documentation>
-        </annotation>
-      </element>
-      <element name="images" type="rfs:images" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            generate (flashable) images of the rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="fstab" type="rfs:fstab" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            specify which resources should be mounted
-          </documentation>
-        </annotation>
-      </element>
-      <element name="tighten" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            don't install any dependencies; just the content of the given debian
-            packages
-          </documentation>
-        </annotation>
-      </element>
-      <element name="diet" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            use reverse dependencies of the given debian packages to determine
-            the rootfilesystem content; this is useful to get rid of dpkg/apt.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="setsel" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            Elbe uses +dpkg --set-selections+ to install packages in the target.
-            The rootfs still needs dpkg, and all dependencies need to be
-            specified in the pkg-list.
-            The target will contain all postinst generated scripts.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="norecommend" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            Turn off the installation of recommended Packages.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="finetuning" type="rfs:finetuning" minOccurs="0">
-        <annotation>
-          <documentation>
-            apply the given commands to the target rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="pbuilder" type="rfs:pbuilder" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            build and optionaly install debianized sources
-          </documentation>
-        </annotation>
-      </element>
-      <element name="pkg-list" type="rfs:pkg-list">
-        <annotation>
-          <documentation>
-            install the given packages into the rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="pkg-blacklist" type="rfs:blacklist" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            avoid installation of packages into sysroot or target
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="ubi_type">
-    <annotation>
-      <documentation>
-        Helper around ubi_type_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:ubi_type_restriction">
-        <attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <simpleType name="ubi_type_restriction">
-    <annotation>
-      <documentation>
-        a ubi volume can be either static or dynamic
-      </documentation>
-    </annotation>
-    <restriction base="string">
-      <enumeration value="static" />
-      <enumeration value="dynamic" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="ubi">
-    <annotation>
-      <documentation>
-        describes a ubi volume
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="type" type="rfs:ubi_type" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            type of the ubi volume; either "static" or "dynamic"
-          </documentation>
-        </annotation>
-      </element>
-      <element name="label" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            human readable name of the ubi volume (also used for mount by label)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="id" type="integer" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            id of the ubi volume
-          </documentation>
-        </annotation>
-      </element>
-      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            size of the ubi volume
-          </documentation>
-        </annotation>
-      </element>
-      <element name="binary" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            path and filename of a binary image which will be used as a source
-            for this volume; this can be used for example to store the linux
-            kernel in a static ubi volume
-          </documentation>
-        </annotation>
-      </element>
-      <element name="empty" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-           if binary is used or a label was given that is also available in
-           the fstab this tag can be used to force the creation of an empty
-           ubi volume.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="ubivg">
-    <annotation>
-      <documentation>
-        container for all ubi volumes of a mtd device
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="label" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             human readable name; used to generate filename for the flashable
-             image file
-          </documentation>
-        </annotation>
-      </element>
-      <element name="miniosize" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             flash parameter minimal i/o size
-          </documentation>
-        </annotation>
-      </element>
-      <element name="maxlogicaleraseblockcount" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             flash parameter maximum logical erase block count
-          </documentation>
-        </annotation>
-      </element>
-      <element name="logicaleraseblocksize" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             flash parameter logical erase block size
-          </documentation>
-        </annotation>
-      </element>
-      <element name="physicaleraseblocksize" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             flash parameter physical erase block size
-          </documentation>
-        </annotation>
-      </element>
-      <element name="subpagesize" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-             flash parameter subpagesize
-          </documentation>
-        </annotation>
-      </element>
-      <sequence>
-        <element name="ubi" type="rfs:ubi" minOccurs="1" maxOccurs="unbounded">
-          <annotation>
-            <documentation>
-               list of ubi volumes
-            </documentation>
-          </annotation>
-        </element>
-      </sequence>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="mtd">
-    <annotation>
-      <documentation>
-         describes a mtd device
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             human readable name of the mtd device
-          </documentation>
-        </annotation>
-      </element>
-      <element name="nr" type="integer" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             number of the mtd device
-          </documentation>
-        </annotation>
-      </element>
-      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-             size of the mtd device
-          </documentation>
-        </annotation>
-      </element>
-      <element name="binary" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            path and filename of a binary image which will be used as a source
-            for this mtd device; this can be used for example to store the
-            bootloader in the beginning of the flash (mtd0)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="ubivg" type="rfs:ubivg" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-             if the mtd will be used to store ubi volumes, this container is
-             used to define them
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="gpthd">
-    <annotation>
-      <documentation>
-         describes a harddisk
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            human readable name of the harddisk, this will be used as name for
-            the image file
-          </documentation>
-        </annotation>
-      </element>
-      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            size of the harddisk
-          </documentation>
-        </annotation>
-      </element>
-      <element name="grub-install" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            human readable name of the harddisk, this will be used as name for
-            the image file
-          </documentation>
-        </annotation>
-      </element>
-      <element name="partition" type="rfs:partition" minOccurs="0" maxOccurs="128">
-        <annotation>
-          <documentation>
-            Partition Entries of this harddisk
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="binaryblob">
-    <annotation>
-      <documentation>
-        a binary that is dd'ed to the specified offset
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="offset" type="int" use="optional">
-          <annotation>
-            <documentation>
-              byteoffset from the beginning of the image
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="blocksize" type="int" use="optional">
-          <annotation>
-            <documentation>
-              blocksize in bytes for the bytewise copy (default 1)
-            </documentation>
-          </annotation>
-        </attribute>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="msdoshd">
-    <annotation>
-      <documentation>
-         describes a harddisk
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            human readable name of the harddisk, this will be used as name for
-            the image file
-          </documentation>
-        </annotation>
-      </element>
-      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            size of the harddisk
-          </documentation>
-        </annotation>
-      </element>
-      <element name="grub-install" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            human readable name of the harddisk, this will be used as name for
-            the image file
-          </documentation>
-        </annotation>
-      </element>
-      <element name="binary" type="rfs:binaryblob" minOccurs="0">
-        <annotation>
-          <documentation>
-            binary blob that is dd'ed to the specified offset
-          </documentation>
-        </annotation>
-      </element>
-      <element name="partition" type="rfs:partition" minOccurs="0" maxOccurs="4">
-        <annotation>
-          <documentation>
-            Partition Entries of this harddisk (max: 4)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="extended" type="rfs:extended" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            Extended Partition Entries of this harddisk (max: 1)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="partition" type="rfs:partition" minOccurs="0" maxOccurs="3">
-        <annotation>
-          <documentation>
-            Partition Entries of this harddisk (max: 3)
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="images">
-    <annotation>
-      <documentation>
-         container for all storage devices of the target
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="mtd" type="rfs:mtd" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            container for all mtd devices of the target
-          </documentation>
-        </annotation>
-      </element>
-      <element name="msdoshd" type="rfs:msdoshd" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            container for Harddisks with msdos Partitionlabel.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="gpthd" type="rfs:gpthd" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            container for Harddisks with GPT Partitionlabel
-          </documentation>
-        </annotation>
-      </element>
-      <element name="passno" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            passno order for fsck
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="fs">
-    <annotation>
-      <documentation>
-         description of a linux filesystem
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="type" type="rfs:fs_type" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            filesystemtype, e.g. "ext3", "ubifs", ...
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mkfs" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            options passed to the mkfs command
-          </documentation>
-        </annotation>
-      </element>
-      <element name="tune2fs" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            options passed to the tune2fs command
-          </documentation>
-        </annotation>
-      </element>
-      <element name="passno" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            passno order for fsck
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="bylabel">
-    <annotation>
-      <documentation>
-         mount storage by the label of the partition or volume
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="label" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            label of the partition/volume to mount
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mountpoint" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            path in the rootfilesystem where the partition/volume is mounted
-          </documentation>
-        </annotation>
-      </element>
-      <element name="fs" type="rfs:fs" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            filesystem of the partition/volume to mount
-          </documentation>
-        </annotation>
-      </element>
-      <element name="options" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            options passed to the mount command
-          </documentation>
-        </annotation>
-      </element>
-      <element name="nofstab" type="rfs:empty" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-		  This mountpoint shall not be inserted into fstab.
-		  Useful for redundant filesystems, where two entries
-		  with identical mountpoint would end up in the fstab.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="bydev">
-    <annotation>
-      <documentation>
-         mount virtual filesystems or other storage devices device-node
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="source" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            either a device-node or "none" for virtual filesystems
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mountpoint" type="rfs:string" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            path in the rootfilesystem where the device or virtual filesystem
-            is mounted
-          </documentation>
-        </annotation>
-      </element>
-      <element name="fs" type="rfs:fs" minOccurs="1" maxOccurs="1">
-        <annotation>
-          <documentation>
-            filesystem of the device or the virtual filesystem name
-          </documentation>
-        </annotation>
-      </element>
-      <element name="options" type="rfs:string" minOccurs="0" maxOccurs="1">
-        <annotation>
-          <documentation>
-            options passed to the mount command
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="fstab">
-    <annotation>
-      <documentation>
-         container for mounts
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="bylabel" type="rfs:bylabel" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            describes a mount by a volume or partition label
-          </documentation>
-        </annotation>
-      </element>
-      <element name="bydev" type="rfs:bydev" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            describes a mount based on a device node or a mount of a virtual
-            filesystem like debugfs or tmpfs
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="package">
-    <annotation>
-      <documentation>
-         list of packages, each contains the hole rootfilesystem
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="tar" type="rfs:tar" minOccurs="0">
-        <annotation>
-          <documentation>
-             tar package of the rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="cpio" type="rfs:cpio" minOccurs="0">
-        <annotation>
-          <documentation>
-             cpio package of the rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="squashfs" type="rfs:squashfs" minOccurs="0">
-        <annotation>
-          <documentation>
-             squashfs image of the rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="tar">
-    <annotation>
-      <documentation>
-         describes a tar package
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-             filename of the tar package
-          </documentation>
-        </annotation>
-      </element>
-      <element name="options" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-             options passed to the tar command
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="cpio">
-    <annotation>
-      <documentation>
-         describes a cpio package
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-             filename of the cpio package 
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="squashfs">
-    <annotation>
-      <documentation>
-         describes a squashfs image
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="name" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-             filename of the squashfs image
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="partition">
-    <annotation>
-      <documentation>
-         describes a partition of a harddisk
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="size" type="rfs:part_size">
-        <annotation>
-          <documentation>
-             size of the partition
-          </documentation>
-        </annotation>
-      </element>
-      <element name="label" type="rfs:string" minOccurs="1">
-        <annotation>
-          <documentation>
-             human readable label of the partition used for mount by label and
-             as filename for the flashable image
-          </documentation>
-        </annotation>
-      </element>
-      <element name="bootable" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-             Whether this partition is marked bootable.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="biosgrub" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-             Whether this partition is marked as biosgrub partition.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="extended">
-    <annotation>
-      <documentation>
-         describes a extended partition of a harddisk
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="size" type="rfs:part_size">
-        <annotation>
-          <documentation>
-             size of the partition
-          </documentation>
-        </annotation>
-      </element>
-      <element name="logical" type="rfs:partition" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-             logical partition of this extended partition
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="part_size">
-    <annotation>
-      <documentation>
-        Helper around part_size_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:part_size_restriction">
-	<attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-  
-  <simpleType name="part_size_restriction">
-    <annotation>
-      <documentation>
-         format of the partition size
-      </documentation>
-    </annotation>
-    <restriction base="string">
-      <pattern value="(\d+(k|M|G|kB|MB|GB|kiB|MiB|GiB)?|remain)" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="part_nr">
-    <annotation>
-      <documentation>
-        Helper around part_nr_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:part_nr_restriction">
-	<attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-  
-  <simpleType name="part_nr_restriction">
-    <annotation>
-      <documentation>
-         allow maximum 4 primary partitions
-      </documentation>
-    </annotation>
-    <restriction base="integer">
-      <minInclusive value="1" />
-      <maxInclusive value="4" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="part_type">
-    <annotation>
-      <documentation>
-        Helper around part_type_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:part_type_restriction">
-	<attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-  
-  <simpleType name="part_type_restriction">
-    <annotation>
-      <documentation>
-         list of supported partition types
-      </documentation>
-    </annotation>
-    <restriction base="string">
-      <enumeration value="linux" />
-      <enumeration value="swap" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="fs_type">
-    <annotation>
-      <documentation>
-        Helper around fs_type_restriction to allow XML base attribute
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:fs_type_restriction">
-	<attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-  
-  <simpleType name="fs_type_restriction">
-    <annotation>
-      <documentation>
-         list of supported filesystems
-      </documentation>
-    </annotation>
-    <restriction base="string">
-      <enumeration value="ext2" />
-      <enumeration value="ext3" />
-      <enumeration value="ext4" />
-      <enumeration value="xfs" />
-      <enumeration value="ubifs" />
-      <enumeration value="tmpfs" />
-      <enumeration value="debugfs" />
-      <enumeration value="configfs" />
-      <enumeration value="devpts" />
-      <enumeration value="proc" />
-      <enumeration value="sysfs" />
-      <enumeration value="vfat" />
-      <enumeration value="btrfs" />
-    </restriction>
-  </simpleType>
-
-  <complexType name="finetuning">
-    <annotation>
-      <documentation>
-         container for finetuning commands; these commands are executed in the
-         root of the target filesystem after the target filesystem was created
-      </documentation>
-    </annotation>
-    <sequence>
-      <group ref="rfs:action" minOccurs="0" maxOccurs="unbounded" />
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <group name="action">
-    <annotation>
-      <documentation>
-        definition of finetuning commands
-      </documentation>
-    </annotation>
-    <choice>
-      <element name="addgroup" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            add a group by name
-          </documentation>
-        </annotation>
-      </element>
-      <element name="adduser" type="rfs:adduser" minOccurs="0">
-        <annotation>
-          <documentation>
-            add a user account by login name
-          </documentation>
-        </annotation>
-      </element>
-      <element name="rm" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            remove a file or directory (recursive)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="cp" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            copy a file or directory (recursive)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="ln" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            create a symbolic link
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildenv_cp" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            copy a file or directory (recursive)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="b2t_cp" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            copy a file or directory (recursive)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="t2b_cp" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            copy a file or directory (recursive)
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mv" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            move a file or directory
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildenv_mv" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            move a file or directory
-          </documentation>
-        </annotation>
-      </element>
-      <element name="t2p_mv" type="rfs:cpmv" minOccurs="0">
-        <annotation>
-          <documentation>
-            move a file from the target to the project directory
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mkdir" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            create a directory
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildenv_mkdir" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            create a directory
-          </documentation>
-        </annotation>
-      </element>
-      <element name="mknod" type="rfs:mknod" minOccurs="0">
-        <annotation>
-          <documentation>
-            move a file or directory
-          </documentation>
-        </annotation>
-      </element>
-      <element name="purge" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            purge a debian package out of the rootfilesystem
-          </documentation>
-        </annotation>
-      </element>
-      <element name="raw_cmd" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            execute the defined command
-          </documentation>
-        </annotation>
-      </element>
-      <element name="command" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            execute the defined command in /bin/sh
-          </documentation>
-        </annotation>
-      </element>
-      <element name="buildenv_command" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            execute the defined command
-          </documentation>
-        </annotation>
-      </element>
-      <element name="updated" type="rfs:string" minOccurs="0">
-        <annotation>
-          <documentation>
-            include the base debian repository in the target rfs to enable
-            downgrades via elbe-updated
-          </documentation>
-        </annotation>
-      </element>
-    </choice>
-  </group>
-
-  <complexType name="adduser">
-    <annotation>
-      <documentation>
-        describes an additional user account, the following parameters are
-        available: 'shell' - the login shell for the user, 'passwd' - the
-        password for the user and 'groups' - a comma separated list of groups
-        the user is member of. The value of the tag describes the login name
-        for the account.
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="shell" type="string" use="required" />
-        <attribute name="passwd" type="string" use="required" />
-        <attribute name="groups" type="string" use="optional" />
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="cpmv">
-    <annotation>
-      <documentation>
-        describes a copy or move of an element in the rootfilesystem
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="path" type="string" use="required" />
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="rm">
-    <annotation>
-      <documentation>
-	      describes a removal of a pattern from the rootfilesystem.
-	      Including an exclude pattern
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="string">
-        <attribute name="exclude" type="string" use="optional" />
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="mknod">
-    <annotation>
-      <documentation>
-        describes a mknod operaition in finetuning
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="opts" type="string" use="required" />
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="git_src">
-    <annotation>
-      <documentation>
-        URI of the git repository, e.g. "git://myhost/myrepo.git"
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="revision" type="string" use="optional" />
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="svn_src">
-    <annotation>
-      <documentation>
-        URI of the svn repository, e.g. "svn://myhost/myrepo/tags/my_tag"
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="revision" type="string" use="optional" />
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="pkg">
-    <annotation>
-      <documentation>
-        describes a debian binary package
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="pin" type="string" use="optional">
-          <annotation>
-            <documentation>
-              prefer the defined version of the debian package
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="version" type="string" use="optional">
-          <annotation>
-            <documentation>
-              version of the package
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="auto" type="boolean" use="optional">
-          <annotation>
-            <documentation>
-              installed automatically as a dependency
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="md5" type="string" use="optional">
-          <annotation>
-            <documentation>
-              md5 sum of the package.
-            </documentation>
-          </annotation>
-        </attribute>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="pbuilder">
-    <annotation>
-      <documentation>
-        reference to debian source packages
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="git" type="rfs:git_src" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            reference to a git tree hosting a debian source package. The source
-            will be build with a pbuilder before the image generation. Use the
-            'install' attribute to specify which binary packages should be
-            installed in the target image.
-          </documentation>
-        </annotation>
-      </element>
-      <element name="svn" type="rfs:svn_src" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            reference to a svn repository hosting a debian source package. The
-            source will be build with a pbuilder before the image generation.
-            Use the 'install' attribute to specify which binary packages should
-            be installed in the target image.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="pkg-list">
-    <annotation>
-      <documentation>
-        container of debian packages
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="pkg" type="rfs:pkg" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            reference to a binary debian package which will be installed from
-            the given mirrors into the target rootfilesystem.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="blacklist">
-    <annotation>
-      <documentation>
-        blacklists of debian packages
-      </documentation>
-    </annotation>
-    <sequence>
-        <element name="sysroot" type="rfs:pkg-list" minOccurs="0" maxOccurs="unbounded">
-          <annotation>
-            <documentation>
-              avoid installing the specified packages into the sysroot
-            </documentation>
-          </annotation>
-        </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="fullpkg-list">
-    <annotation>
-      <documentation>
-        List of packages to be validated against the installed list.
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="pkg" type="rfs:pkg" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            Reference to a binary debian package which is supposed to be installed.
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="conf">
-    <annotation>
-      <documentation>
-        describes a preseeding entry
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="rfs:string">
-        <attribute name="owner" type="string" use="required">
-          <annotation>
-            <documentation>
-              owner package of the config entry
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="key" type="string" use="required">
-          <annotation>
-            <documentation>
-              key name of the entry
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="type" type="string" use="required">
-          <annotation>
-            <documentation>
-              type of the config entry
-            </documentation>
-          </annotation>
-        </attribute>
-        <attribute name="value" type="string" use="required">
-          <annotation>
-            <documentation>
-              value of the config entry
-            </documentation>
-          </annotation>
-        </attribute>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-  <complexType name="preseed">
-    <annotation>
-      <documentation>
-        container of config entries
-      </documentation>
-    </annotation>
-    <sequence>
-      <element name="conf" type="rfs:conf" minOccurs="0" maxOccurs="unbounded">
-        <annotation>
-          <documentation>
-            A config entry
-          </documentation>
-        </annotation>
-      </element>
-    </sequence>
-    <attribute ref="xml:base"/>
-  </complexType>
-
-  <complexType name="empty">
-    <annotation>
-      <documentation>
-        This element just acts like a flag. It might be there, or not.
-      </documentation>
-    </annotation>
-  </complexType>
-
-  <complexType name="string">
-    <annotation>
-      <documentation>
-        E.L.B.E. standard string. Allow XML base attribute.
-      </documentation>
-    </annotation>
-    <simpleContent>
-      <extension base="string">
-         <attribute ref="xml:base"/>
-      </extension>
-    </simpleContent>
-  </complexType>
-
-</schema>
diff --git a/elbepack/validate.py b/elbepack/validate.py
index 348a568..cb7c4eb 100644
--- a/elbepack/validate.py
+++ b/elbepack/validate.py
@@ -23,7 +23,7 @@ from lxml import etree
 from lxml.etree import XMLParser,parse
 
 def validate_xml(fname):
-    schema_file = os.path.join( elbepack.__path__[0], "dbsfed.xsd" )
+    schema_file = "https://www.linutronix.de/projects/Elbe/dbsfed.xsd"
     parser = XMLParser(huge_tree=True)
     schema_tree = etree.parse(schema_file)
     schema = etree.XMLSchema(schema_tree)
diff --git a/elbepack/xmlpreprocess.py b/elbepack/xmlpreprocess.py
index 4fa4cfd..2952510 100644
--- a/elbepack/xmlpreprocess.py
+++ b/elbepack/xmlpreprocess.py
@@ -27,7 +27,7 @@ class XMLPreprocessError(Exception):
         Exception.__init__(self, message)
 
 def xmlpreprocess(fname, output):
-    schema_file = os.path.join(elbepack.__path__[0], "dbsfed.xsd")
+    schema_file = "https://www.linutronix.de/projects/Elbe/dbsfed.xsd"
     parser = XMLParser(huge_tree=True)
     schema_tree = etree.parse(schema_file)
     schema = etree.XMLSchema(schema_tree)
diff --git a/schema/dbsfed.xsd b/schema/dbsfed.xsd
new file mode 100644
index 0000000..aae68ac
--- /dev/null
+++ b/schema/dbsfed.xsd
@@ -0,0 +1,2063 @@
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:rfs="https://www.linutronix.de/projects/Elbe"
+        xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+        targetNamespace="https://www.linutronix.de/projects/Elbe"
+        elementFormDefault="unqualified"
+        attributeFormDefault="unqualified">
+
+  <import namespace="http://www.w3.org/XML/1998/namespace"
+	  schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+  <element name="RootFileSystem" type="rfs:RootFileSystemType">
+    <annotation>
+      <documentation>
+        describes one elbe project. An elbe project contains the creation of a
+        build environemt and the definition of a elbe target rootfilesystem.
+      </documentation>
+    </annotation>
+   </element>
+
+  <complexType name="RootFileSystemType">
+    <annotation>
+      <documentation>
+      includes all subelements to define the elbe project
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="initvm" type="rfs:initvm" minOccurs="0">
+        <annotation>
+          <documentation>
+            Configurations that are used for creating the initvm
+            e.g. the definition of the used debian mirrors, suite and buildtype
+          </documentation>
+        </annotation>
+      </element>
+      <element name="project" type="rfs:project" minOccurs="0">
+        <annotation>
+          <documentation>
+            Configurations that are used for creating the buildenvironment and
+            the target rootfilesystem. e.g. the definition of the used debian
+            mirrors.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="target" type="rfs:target" minOccurs="0">
+        <annotation>
+          <documentation>
+            Configurations that are used to create the target rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="archive" type="base64Binary" minOccurs="0">
+        <annotation>
+          <documentation>
+            tar.bz2 file that contains configuration files for the target
+            rootfilesystem. To alter this node use 'elbe chg_archive' and
+            to get the content of this node 'elbe get_archive'.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="debootstrappkgs" type="rfs:fullpkg-list" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            List of packages installed right after debootstrap
+          </documentation>
+        </annotation>
+      </element>
+      <element name="initvmpkgs" type="rfs:fullpkg-list" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            List of packages installed right after debootstrap
+          </documentation>
+        </annotation>
+      </element>
+      <element name="initvm_sources_list" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            apt sources list.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="initvm_apt_prefs" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            apt preferences list
+          </documentation>
+        </annotation>
+      </element>
+      <element name="fullpkgs" type="rfs:fullpkg-list" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            List of packages with their versions installed on the RFS
+          </documentation>
+        </annotation>
+      </element>
+      <element name="sources_list" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            apt sources list.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="apt_prefs" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            apt preferences list
+          </documentation>
+        </annotation>
+      </element>
+      <element name="elbe_version" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            Elbe Version that was used in the last build of this file.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute name="created" type="dateTime">
+      <annotation>
+        <documentation>
+          timestamp of creation of the xml file
+        </documentation>
+      </annotation>
+    </attribute>
+    <attribute name="revision" type="rfs:revisionNr" use="required">
+      <annotation>
+        <documentation>
+          revision of the xml file (needs to match revision of the schema)
+        </documentation>
+      </annotation>
+    </attribute>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <simpleType name="revisionNr">
+    <annotation>
+      <documentation>
+      is used to decide if your elbe version is compatible
+      with the given xml file
+      </documentation>
+    </annotation>
+    <restriction base="integer">
+      <minInclusive value="6" />
+      <maxInclusive value="6" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="binary-url">
+    <annotation>
+      <documentation>
+        e.g. "http://myhost/debian /" or "http://debian.org/debian main"
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="pin" type="string" use="optional">
+          <annotation>
+            <documentation>
+              Pin-Priority of packages from this source.
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="package" type="string" use="optional">
+          <annotation>
+            <documentation>
+              Packages that should be pinned.
+            </documentation>
+          </annotation>
+        </attribute>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="url">
+    <annotation>
+      <documentation>
+      links to one additional debian mirror
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="binary" type="rfs:binary-url" minOccurs="0">
+        <annotation>
+          <documentation>
+            e.g. "http://myhost/debian /" or "http://debian.org/debian main"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="source" type="string" minOccurs="0">
+        <annotation>
+          <documentation>
+            e.g. "http://myhost/sources /" or "http://debian.org/debian main"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="key" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+	    URL of the Public Key used to sign this Repository e.g "http://myhost/key.pub" or "http://debian.linutronix.de/elbe/elbe-repo.pub"
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="url-list">
+    <annotation>
+      <documentation>
+      links to additional debian mirrors
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="url" type="rfs:url" minOccurs="0" maxOccurs="10">
+        <annotation>
+          <documentation>
+            describes an additional debian mirror
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="mirror">
+    <annotation>
+      <documentation>
+      specify main and additional debian mirrors
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="primary_host" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            IP address or hostname of the primary debian mirror
+            e.g. "debian.org" without a protocol or any slash
+          </documentation>
+        </annotation>
+      </element>
+      <element name="primary_path" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            base path to the debian mirror on the given host
+            e.g. "/debian"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="primary_proto" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            protocol to access the primary debian mirror
+            e.g. "http" or "ftp"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="primary_proxy" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            proxy to access the debian mirror
+            e.g. "http://me:mypass@myproxy:8080"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="cdrom" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            iso image of a cdrom/dvd with debian packages.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="url-list" type="rfs:url-list" minOccurs="0">
+        <annotation>
+          <documentation>
+            additional debian repositories, e.g. for own debian packages
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="initvm">
+    <annotation>
+      <documentation>
+        describes settings that apply to the creation of the initvm
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="buildtype" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            Default buildtype like armel, ppc, and in the future armel-virtio
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mirror" type="rfs:mirror">
+        <annotation>
+          <documentation>
+            used debian mirrors
+          </documentation>
+        </annotation>
+      </element>
+      <element name="noauth" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            allow installation of unsigned debian packages
+          </documentation>
+        </annotation>
+      </element>
+      <element name="preference" type="rfs:preference" minOccurs="0">
+        <annotation>
+          <documentation>
+            used for pinning of all packages
+            TODO: example?
+          </documentation>
+        </annotation>
+      </element>
+      <element name="suite" type="rfs:string">
+        <annotation>
+          <documentation>
+            name of the debian suite that should be used to generate the initvm.
+            e.g. "lenny", "squeeze", "sid", ..
+          </documentation>
+        </annotation>
+      </element>
+      <element name="pkg-list" type="rfs:pkg-list" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            additional packages that are installed into the initvm.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="preseed" type="rfs:preseed" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            Custom preseeding Values for apt
+          </documentation>
+        </annotation>
+      </element>
+      <element name="size" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            size of the virtual harddisk used to run the build environment
+          </documentation>
+        </annotation>
+      </element>
+      <element name="img" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            hd image backend format: raw, qcow, vmdk, ...
+          </documentation>
+        </annotation>
+      </element>
+      <element name="portforwarding" type="rfs:portforwarding" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            network ports of the buildenvironment that are forwarded to the
+            host machine
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="project">
+    <annotation>
+      <documentation>
+        describes elbe project settings that apply to the creation of the target
+        rootfilesystem and include the definition of the build environment
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            name of the project this rootfilesystem is associated with
+          </documentation>
+        </annotation>
+      </element>
+      <element name="version" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            version of the rootfilesystem definition
+          </documentation>
+        </annotation>
+      </element>
+      <element name="description" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            human readable description of the project
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildtype" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            Default buildtype like armel, ppc, and in the future armel-virtio
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mirror" type="rfs:mirror">
+        <annotation>
+          <documentation>
+            used debian mirrors
+          </documentation>
+        </annotation>
+      </element>
+      <element name="noauth" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            allow installation of unsigned debian packages
+          </documentation>
+        </annotation>
+      </element>
+      <element name="preference" type="rfs:preference" minOccurs="0">
+        <annotation>
+          <documentation>
+            used for pinning of all packages
+            TODO: example?
+          </documentation>
+        </annotation>
+      </element>
+      <element name="raw-preference" type="rfs:raw-preference" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            gets dedented and striped and is then written to /etc/apt/preferences
+            TODO: example?
+          </documentation>
+        </annotation>
+      </element>
+      <element name="suite" type="rfs:string">
+        <annotation>
+          <documentation>
+            name of the debian suite that should be used to generate the
+            buildenvironment and the rootfilesystem.
+            e.g. "lenny", "squeeze", "sid", ..
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildimage" type="rfs:buildimage" minOccurs="0">
+        <annotation>
+          <documentation>
+            reference to the buildimage which is used to generate the
+            rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="preseed" type="rfs:preseed" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            Custom preseeding Values for apt
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="preference">
+    <annotation>
+      <documentation>
+        describes a global pinning of debian packages
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="pin" type="string" use="required">
+          <annotation>
+            <documentation>
+              TODO: format???
+            </documentation>
+          </annotation>
+        </attribute>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="raw-preference">
+    <annotation>
+      <documentation>
+        content is directly written to /etc/apt/preferences.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string" />
+    </simpleContent>
+  </complexType>
+
+  <complexType name="buildimage">
+    <annotation>
+      <documentation>
+        definition of the build environment
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="arch" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            architecture of the target system. e.g. "amd64", "armel", "ppc", ..
+          </documentation>
+        </annotation>
+      </element>
+      <element name="size" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            size of the virtual harddisk used to run the build environment
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mem" type="rfs:memory" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            amount of memory mapped into the virtual build environment
+          </documentation>
+        </annotation>
+      </element>
+      <element name="interpreter" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            virtual machine interpreter, e.g. "kvm", "qemu-system-arm", ...
+          </documentation>
+        </annotation>
+      </element>
+      <element name="interpreterversion" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            virtual machine interpreter version, e.g. "2.8.0", "1.4.7", ...
+          </documentation>
+        </annotation>
+      </element>
+      <element name="kinitrd" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            pkg name of the initrd/kernel package.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="console" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            serial console of the virtual machine, e.g. "ttyAMA0,115200n1"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="machine" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            virtual platform to host the build environment,
+            e.g. "versatilepb"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="NIC" type="rfs:NIC" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            network interface emulation
+          </documentation>
+        </annotation>
+      </element>
+      <element name="portforwarding" type="rfs:portforwarding" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            network ports of the buildenvironment that are forwarded to the
+            host machine
+          </documentation>
+        </annotation>
+      </element>
+      <element name="pkgversionlist" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            create /etc/elbe_pkglist on the target RFS. It includes all packages
+            that include files that are used in the target. The list also
+            contains the versions of the used packages.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="pkg-list" type="rfs:pkg-list" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            additional packages that are only installed into the
+            build environment; not into the target root filesystem.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="memory">
+    <annotation>
+      <documentation>
+        Helper around memory_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:memory_restriction">
+	<attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <simpleType name="memory_restriction">
+    <annotation>
+      <documentation>
+        at least 128 MB of memory are needed to run the debian-installer
+      </documentation>
+    </annotation>
+    <restriction base="integer">
+      <minInclusive value="128" />
+    </restriction>
+  </simpleType>
+  
+  <complexType name="NIC">
+     <annotation>
+       <documentation>
+         describes a virtual network interface
+       </documentation>
+     </annotation>
+    <sequence>
+      <element name="model" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            hardware emulation of the network interface; e.g. "e1000"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="MAC" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+             mac address of the virtual network interface
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="fw_proto">
+    <annotation>
+      <documentation>
+        Helper around fw_proto_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:fw_proto_restriction">
+	<attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <simpleType name="fw_proto_restriction">
+    <annotation>
+      <documentation>
+         only tcp and udp are allowed protocols for forwarding
+      </documentation>
+    </annotation>
+    <restriction base="string">
+      <enumeration value="tcp" />
+      <enumeration value="udp" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="forward">
+    <annotation>
+      <documentation>
+         forward a network port from the build environment to the host machine
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="proto" type="rfs:fw_proto" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            network protocol to forward either "udp" or "tcp"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildenv" type="integer" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            port on the buildenvironment, e.g. "22" for ssh
+          </documentation>
+        </annotation>
+      </element>
+      <element name="host" type="integer" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            port on the host machine, e.g. "10022"
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="portforwarding" >
+    <annotation>
+      <documentation>
+         forward network ports from the build environment to the host machine
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="forward" type="rfs:forward" minOccurs="1" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            describes a single port forward
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="target">
+    <annotation>
+      <documentation>
+         configuration of the target rootfilesystem
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="hostname" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            hostname of the system
+          </documentation>
+        </annotation>
+      </element>
+      <element name="domain" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            domainname of the network the target system is part of
+          </documentation>
+        </annotation>
+      </element>
+      <element name="passwd" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            root password
+          </documentation>
+        </annotation>
+      </element>
+      <element name="console" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            serial console for getty
+          </documentation>
+        </annotation>
+      </element>
+      <element name="package" type="rfs:package" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            package rootfilesystem as a tarball, cpio or a squashfs image
+          </documentation>
+        </annotation>
+      </element>
+      <element name="images" type="rfs:images" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            generate (flashable) images of the rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="fstab" type="rfs:fstab" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            specify which resources should be mounted
+          </documentation>
+        </annotation>
+      </element>
+      <element name="tighten" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            don't install any dependencies; just the content of the given debian
+            packages
+          </documentation>
+        </annotation>
+      </element>
+      <element name="diet" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            use reverse dependencies of the given debian packages to determine
+            the rootfilesystem content; this is useful to get rid of dpkg/apt.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="setsel" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            Elbe uses +dpkg --set-selections+ to install packages in the target.
+            The rootfs still needs dpkg, and all dependencies need to be
+            specified in the pkg-list.
+            The target will contain all postinst generated scripts.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="norecommend" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            Turn off the installation of recommended Packages.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="finetuning" type="rfs:finetuning" minOccurs="0">
+        <annotation>
+          <documentation>
+            apply the given commands to the target rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="pbuilder" type="rfs:pbuilder" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            build and optionaly install debianized sources
+          </documentation>
+        </annotation>
+      </element>
+      <element name="pkg-list" type="rfs:pkg-list">
+        <annotation>
+          <documentation>
+            install the given packages into the rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="pkg-blacklist" type="rfs:blacklist" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            avoid installation of packages into sysroot or target
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="ubi_type">
+    <annotation>
+      <documentation>
+        Helper around ubi_type_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:ubi_type_restriction">
+        <attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <simpleType name="ubi_type_restriction">
+    <annotation>
+      <documentation>
+        a ubi volume can be either static or dynamic
+      </documentation>
+    </annotation>
+    <restriction base="string">
+      <enumeration value="static" />
+      <enumeration value="dynamic" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="ubi">
+    <annotation>
+      <documentation>
+        describes a ubi volume
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="type" type="rfs:ubi_type" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            type of the ubi volume; either "static" or "dynamic"
+          </documentation>
+        </annotation>
+      </element>
+      <element name="label" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            human readable name of the ubi volume (also used for mount by label)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="id" type="integer" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            id of the ubi volume
+          </documentation>
+        </annotation>
+      </element>
+      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            size of the ubi volume
+          </documentation>
+        </annotation>
+      </element>
+      <element name="binary" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            path and filename of a binary image which will be used as a source
+            for this volume; this can be used for example to store the linux
+            kernel in a static ubi volume
+          </documentation>
+        </annotation>
+      </element>
+      <element name="empty" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+           if binary is used or a label was given that is also available in
+           the fstab this tag can be used to force the creation of an empty
+           ubi volume.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="ubivg">
+    <annotation>
+      <documentation>
+        container for all ubi volumes of a mtd device
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="label" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             human readable name; used to generate filename for the flashable
+             image file
+          </documentation>
+        </annotation>
+      </element>
+      <element name="miniosize" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             flash parameter minimal i/o size
+          </documentation>
+        </annotation>
+      </element>
+      <element name="maxlogicaleraseblockcount" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             flash parameter maximum logical erase block count
+          </documentation>
+        </annotation>
+      </element>
+      <element name="logicaleraseblocksize" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             flash parameter logical erase block size
+          </documentation>
+        </annotation>
+      </element>
+      <element name="physicaleraseblocksize" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             flash parameter physical erase block size
+          </documentation>
+        </annotation>
+      </element>
+      <element name="subpagesize" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+             flash parameter subpagesize
+          </documentation>
+        </annotation>
+      </element>
+      <sequence>
+        <element name="ubi" type="rfs:ubi" minOccurs="1" maxOccurs="unbounded">
+          <annotation>
+            <documentation>
+               list of ubi volumes
+            </documentation>
+          </annotation>
+        </element>
+      </sequence>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="mtd">
+    <annotation>
+      <documentation>
+         describes a mtd device
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             human readable name of the mtd device
+          </documentation>
+        </annotation>
+      </element>
+      <element name="nr" type="integer" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             number of the mtd device
+          </documentation>
+        </annotation>
+      </element>
+      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+             size of the mtd device
+          </documentation>
+        </annotation>
+      </element>
+      <element name="binary" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            path and filename of a binary image which will be used as a source
+            for this mtd device; this can be used for example to store the
+            bootloader in the beginning of the flash (mtd0)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="ubivg" type="rfs:ubivg" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+             if the mtd will be used to store ubi volumes, this container is
+             used to define them
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="gpthd">
+    <annotation>
+      <documentation>
+         describes a harddisk
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            human readable name of the harddisk, this will be used as name for
+            the image file
+          </documentation>
+        </annotation>
+      </element>
+      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            size of the harddisk
+          </documentation>
+        </annotation>
+      </element>
+      <element name="grub-install" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            human readable name of the harddisk, this will be used as name for
+            the image file
+          </documentation>
+        </annotation>
+      </element>
+      <element name="partition" type="rfs:partition" minOccurs="0" maxOccurs="128">
+        <annotation>
+          <documentation>
+            Partition Entries of this harddisk
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="binaryblob">
+    <annotation>
+      <documentation>
+        a binary that is dd'ed to the specified offset
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="offset" type="int" use="optional">
+          <annotation>
+            <documentation>
+              byteoffset from the beginning of the image
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="blocksize" type="int" use="optional">
+          <annotation>
+            <documentation>
+              blocksize in bytes for the bytewise copy (default 1)
+            </documentation>
+          </annotation>
+        </attribute>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="msdoshd">
+    <annotation>
+      <documentation>
+         describes a harddisk
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            human readable name of the harddisk, this will be used as name for
+            the image file
+          </documentation>
+        </annotation>
+      </element>
+      <element name="size" type="rfs:part_size" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            size of the harddisk
+          </documentation>
+        </annotation>
+      </element>
+      <element name="grub-install" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            human readable name of the harddisk, this will be used as name for
+            the image file
+          </documentation>
+        </annotation>
+      </element>
+      <element name="binary" type="rfs:binaryblob" minOccurs="0">
+        <annotation>
+          <documentation>
+            binary blob that is dd'ed to the specified offset
+          </documentation>
+        </annotation>
+      </element>
+      <element name="partition" type="rfs:partition" minOccurs="0" maxOccurs="4">
+        <annotation>
+          <documentation>
+            Partition Entries of this harddisk (max: 4)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="extended" type="rfs:extended" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            Extended Partition Entries of this harddisk (max: 1)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="partition" type="rfs:partition" minOccurs="0" maxOccurs="3">
+        <annotation>
+          <documentation>
+            Partition Entries of this harddisk (max: 3)
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="images">
+    <annotation>
+      <documentation>
+         container for all storage devices of the target
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="mtd" type="rfs:mtd" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            container for all mtd devices of the target
+          </documentation>
+        </annotation>
+      </element>
+      <element name="msdoshd" type="rfs:msdoshd" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            container for Harddisks with msdos Partitionlabel.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="gpthd" type="rfs:gpthd" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            container for Harddisks with GPT Partitionlabel
+          </documentation>
+        </annotation>
+      </element>
+      <element name="passno" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            passno order for fsck
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="fs">
+    <annotation>
+      <documentation>
+         description of a linux filesystem
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="type" type="rfs:fs_type" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            filesystemtype, e.g. "ext3", "ubifs", ...
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mkfs" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            options passed to the mkfs command
+          </documentation>
+        </annotation>
+      </element>
+      <element name="tune2fs" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            options passed to the tune2fs command
+          </documentation>
+        </annotation>
+      </element>
+      <element name="passno" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            passno order for fsck
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="bylabel">
+    <annotation>
+      <documentation>
+         mount storage by the label of the partition or volume
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="label" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            label of the partition/volume to mount
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mountpoint" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            path in the rootfilesystem where the partition/volume is mounted
+          </documentation>
+        </annotation>
+      </element>
+      <element name="fs" type="rfs:fs" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            filesystem of the partition/volume to mount
+          </documentation>
+        </annotation>
+      </element>
+      <element name="options" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            options passed to the mount command
+          </documentation>
+        </annotation>
+      </element>
+      <element name="nofstab" type="rfs:empty" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+		  This mountpoint shall not be inserted into fstab.
+		  Useful for redundant filesystems, where two entries
+		  with identical mountpoint would end up in the fstab.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="bydev">
+    <annotation>
+      <documentation>
+         mount virtual filesystems or other storage devices device-node
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="source" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            either a device-node or "none" for virtual filesystems
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mountpoint" type="rfs:string" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            path in the rootfilesystem where the device or virtual filesystem
+            is mounted
+          </documentation>
+        </annotation>
+      </element>
+      <element name="fs" type="rfs:fs" minOccurs="1" maxOccurs="1">
+        <annotation>
+          <documentation>
+            filesystem of the device or the virtual filesystem name
+          </documentation>
+        </annotation>
+      </element>
+      <element name="options" type="rfs:string" minOccurs="0" maxOccurs="1">
+        <annotation>
+          <documentation>
+            options passed to the mount command
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="fstab">
+    <annotation>
+      <documentation>
+         container for mounts
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="bylabel" type="rfs:bylabel" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            describes a mount by a volume or partition label
+          </documentation>
+        </annotation>
+      </element>
+      <element name="bydev" type="rfs:bydev" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            describes a mount based on a device node or a mount of a virtual
+            filesystem like debugfs or tmpfs
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="package">
+    <annotation>
+      <documentation>
+         list of packages, each contains the hole rootfilesystem
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="tar" type="rfs:tar" minOccurs="0">
+        <annotation>
+          <documentation>
+             tar package of the rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="cpio" type="rfs:cpio" minOccurs="0">
+        <annotation>
+          <documentation>
+             cpio package of the rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="squashfs" type="rfs:squashfs" minOccurs="0">
+        <annotation>
+          <documentation>
+             squashfs image of the rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="tar">
+    <annotation>
+      <documentation>
+         describes a tar package
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+             filename of the tar package
+          </documentation>
+        </annotation>
+      </element>
+      <element name="options" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+             options passed to the tar command
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="cpio">
+    <annotation>
+      <documentation>
+         describes a cpio package
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+             filename of the cpio package 
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="squashfs">
+    <annotation>
+      <documentation>
+         describes a squashfs image
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="name" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+             filename of the squashfs image
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="partition">
+    <annotation>
+      <documentation>
+         describes a partition of a harddisk
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="size" type="rfs:part_size">
+        <annotation>
+          <documentation>
+             size of the partition
+          </documentation>
+        </annotation>
+      </element>
+      <element name="label" type="rfs:string" minOccurs="1">
+        <annotation>
+          <documentation>
+             human readable label of the partition used for mount by label and
+             as filename for the flashable image
+          </documentation>
+        </annotation>
+      </element>
+      <element name="bootable" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+             Whether this partition is marked bootable.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="biosgrub" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+             Whether this partition is marked as biosgrub partition.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="extended">
+    <annotation>
+      <documentation>
+         describes a extended partition of a harddisk
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="size" type="rfs:part_size">
+        <annotation>
+          <documentation>
+             size of the partition
+          </documentation>
+        </annotation>
+      </element>
+      <element name="logical" type="rfs:partition" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+             logical partition of this extended partition
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="part_size">
+    <annotation>
+      <documentation>
+        Helper around part_size_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:part_size_restriction">
+	<attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <simpleType name="part_size_restriction">
+    <annotation>
+      <documentation>
+         format of the partition size
+      </documentation>
+    </annotation>
+    <restriction base="string">
+      <pattern value="(\d+(k|M|G|kB|MB|GB|kiB|MiB|GiB)?|remain)" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="part_nr">
+    <annotation>
+      <documentation>
+        Helper around part_nr_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:part_nr_restriction">
+	<attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <simpleType name="part_nr_restriction">
+    <annotation>
+      <documentation>
+         allow maximum 4 primary partitions
+      </documentation>
+    </annotation>
+    <restriction base="integer">
+      <minInclusive value="1" />
+      <maxInclusive value="4" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="part_type">
+    <annotation>
+      <documentation>
+        Helper around part_type_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:part_type_restriction">
+	<attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <simpleType name="part_type_restriction">
+    <annotation>
+      <documentation>
+         list of supported partition types
+      </documentation>
+    </annotation>
+    <restriction base="string">
+      <enumeration value="linux" />
+      <enumeration value="swap" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="fs_type">
+    <annotation>
+      <documentation>
+        Helper around fs_type_restriction to allow XML base attribute
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:fs_type_restriction">
+	<attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+  
+  <simpleType name="fs_type_restriction">
+    <annotation>
+      <documentation>
+         list of supported filesystems
+      </documentation>
+    </annotation>
+    <restriction base="string">
+      <enumeration value="ext2" />
+      <enumeration value="ext3" />
+      <enumeration value="ext4" />
+      <enumeration value="xfs" />
+      <enumeration value="ubifs" />
+      <enumeration value="tmpfs" />
+      <enumeration value="debugfs" />
+      <enumeration value="configfs" />
+      <enumeration value="devpts" />
+      <enumeration value="proc" />
+      <enumeration value="sysfs" />
+      <enumeration value="vfat" />
+      <enumeration value="btrfs" />
+    </restriction>
+  </simpleType>
+
+  <complexType name="finetuning">
+    <annotation>
+      <documentation>
+         container for finetuning commands; these commands are executed in the
+         root of the target filesystem after the target filesystem was created
+      </documentation>
+    </annotation>
+    <sequence>
+      <group ref="rfs:action" minOccurs="0" maxOccurs="unbounded" />
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <group name="action">
+    <annotation>
+      <documentation>
+        definition of finetuning commands
+      </documentation>
+    </annotation>
+    <choice>
+      <element name="addgroup" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            add a group by name
+          </documentation>
+        </annotation>
+      </element>
+      <element name="adduser" type="rfs:adduser" minOccurs="0">
+        <annotation>
+          <documentation>
+            add a user account by login name
+          </documentation>
+        </annotation>
+      </element>
+      <element name="rm" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            remove a file or directory (recursive)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="cp" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            copy a file or directory (recursive)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="ln" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            create a symbolic link
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildenv_cp" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            copy a file or directory (recursive)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="b2t_cp" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            copy a file or directory (recursive)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="t2b_cp" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            copy a file or directory (recursive)
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mv" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            move a file or directory
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildenv_mv" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            move a file or directory
+          </documentation>
+        </annotation>
+      </element>
+      <element name="t2p_mv" type="rfs:cpmv" minOccurs="0">
+        <annotation>
+          <documentation>
+            move a file from the target to the project directory
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mkdir" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            create a directory
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildenv_mkdir" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            create a directory
+          </documentation>
+        </annotation>
+      </element>
+      <element name="mknod" type="rfs:mknod" minOccurs="0">
+        <annotation>
+          <documentation>
+            move a file or directory
+          </documentation>
+        </annotation>
+      </element>
+      <element name="purge" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            purge a debian package out of the rootfilesystem
+          </documentation>
+        </annotation>
+      </element>
+      <element name="raw_cmd" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            execute the defined command
+          </documentation>
+        </annotation>
+      </element>
+      <element name="command" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            execute the defined command in /bin/sh
+          </documentation>
+        </annotation>
+      </element>
+      <element name="buildenv_command" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            execute the defined command
+          </documentation>
+        </annotation>
+      </element>
+      <element name="updated" type="rfs:string" minOccurs="0">
+        <annotation>
+          <documentation>
+            include the base debian repository in the target rfs to enable
+            downgrades via elbe-updated
+          </documentation>
+        </annotation>
+      </element>
+    </choice>
+  </group>
+
+  <complexType name="adduser">
+    <annotation>
+      <documentation>
+        describes an additional user account, the following parameters are
+        available: 'shell' - the login shell for the user, 'passwd' - the
+        password for the user and 'groups' - a comma separated list of groups
+        the user is member of. The value of the tag describes the login name
+        for the account.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="shell" type="string" use="required" />
+        <attribute name="passwd" type="string" use="required" />
+        <attribute name="groups" type="string" use="optional" />
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="cpmv">
+    <annotation>
+      <documentation>
+        describes a copy or move of an element in the rootfilesystem
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="path" type="string" use="required" />
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="rm">
+    <annotation>
+      <documentation>
+	      describes a removal of a pattern from the rootfilesystem.
+	      Including an exclude pattern
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+        <attribute name="exclude" type="string" use="optional" />
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="mknod">
+    <annotation>
+      <documentation>
+        describes a mknod operaition in finetuning
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="opts" type="string" use="required" />
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="git_src">
+    <annotation>
+      <documentation>
+        URI of the git repository, e.g. "git://myhost/myrepo.git"
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="revision" type="string" use="optional" />
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="svn_src">
+    <annotation>
+      <documentation>
+        URI of the svn repository, e.g. "svn://myhost/myrepo/tags/my_tag"
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="revision" type="string" use="optional" />
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="pkg">
+    <annotation>
+      <documentation>
+        describes a debian binary package
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="pin" type="string" use="optional">
+          <annotation>
+            <documentation>
+              prefer the defined version of the debian package
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="version" type="string" use="optional">
+          <annotation>
+            <documentation>
+              version of the package
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="auto" type="boolean" use="optional">
+          <annotation>
+            <documentation>
+              installed automatically as a dependency
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="md5" type="string" use="optional">
+          <annotation>
+            <documentation>
+              md5 sum of the package.
+            </documentation>
+          </annotation>
+        </attribute>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="pbuilder">
+    <annotation>
+      <documentation>
+        reference to debian source packages
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="git" type="rfs:git_src" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            reference to a git tree hosting a debian source package. The source
+            will be build with a pbuilder before the image generation. Use the
+            'install' attribute to specify which binary packages should be
+            installed in the target image.
+          </documentation>
+        </annotation>
+      </element>
+      <element name="svn" type="rfs:svn_src" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            reference to a svn repository hosting a debian source package. The
+            source will be build with a pbuilder before the image generation.
+            Use the 'install' attribute to specify which binary packages should
+            be installed in the target image.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="pkg-list">
+    <annotation>
+      <documentation>
+        container of debian packages
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="pkg" type="rfs:pkg" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            reference to a binary debian package which will be installed from
+            the given mirrors into the target rootfilesystem.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="blacklist">
+    <annotation>
+      <documentation>
+        blacklists of debian packages
+      </documentation>
+    </annotation>
+    <sequence>
+        <element name="sysroot" type="rfs:pkg-list" minOccurs="0" maxOccurs="unbounded">
+          <annotation>
+            <documentation>
+              avoid installing the specified packages into the sysroot
+            </documentation>
+          </annotation>
+        </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="fullpkg-list">
+    <annotation>
+      <documentation>
+        List of packages to be validated against the installed list.
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="pkg" type="rfs:pkg" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            Reference to a binary debian package which is supposed to be installed.
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="conf">
+    <annotation>
+      <documentation>
+        describes a preseeding entry
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="rfs:string">
+        <attribute name="owner" type="string" use="required">
+          <annotation>
+            <documentation>
+              owner package of the config entry
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="key" type="string" use="required">
+          <annotation>
+            <documentation>
+              key name of the entry
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="type" type="string" use="required">
+          <annotation>
+            <documentation>
+              type of the config entry
+            </documentation>
+          </annotation>
+        </attribute>
+        <attribute name="value" type="string" use="required">
+          <annotation>
+            <documentation>
+              value of the config entry
+            </documentation>
+          </annotation>
+        </attribute>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+  <complexType name="preseed">
+    <annotation>
+      <documentation>
+        container of config entries
+      </documentation>
+    </annotation>
+    <sequence>
+      <element name="conf" type="rfs:conf" minOccurs="0" maxOccurs="unbounded">
+        <annotation>
+          <documentation>
+            A config entry
+          </documentation>
+        </annotation>
+      </element>
+    </sequence>
+    <attribute ref="xml:base"/>
+  </complexType>
+
+  <complexType name="empty">
+    <annotation>
+      <documentation>
+        This element just acts like a flag. It might be there, or not.
+      </documentation>
+    </annotation>
+  </complexType>
+
+  <complexType name="string">
+    <annotation>
+      <documentation>
+        E.L.B.E. standard string. Allow XML base attribute.
+      </documentation>
+    </annotation>
+    <simpleContent>
+      <extension base="string">
+         <attribute ref="xml:base"/>
+      </extension>
+    </simpleContent>
+  </complexType>
+
+</schema>
diff --git a/schema/xml.xsd b/schema/xml.xsd
new file mode 100644
index 0000000..d662b42
--- /dev/null
+++ b/schema/xml.xsd
@@ -0,0 +1,117 @@
+<?xml version='1.0'?>
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" >
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   See http://www.w3.org/XML/1998/namespace.html and
+   http://www.w3.org/TR/REC-xml for information about this namespace.
+
+    This schema document describes the XML namespace, in a form
+    suitable for import by other schema documents.  
+
+    Note that local names in this namespace are intended to be defined
+    only by the World Wide Web Consortium or its subgroups.  The
+    following names are currently defined in this namespace and should
+    not be used with conflicting semantics by any Working Group,
+    specification, or document instance:
+
+    base (as an attribute name): denotes an attribute whose value
+         provides a URI to be used as the base for interpreting any
+         relative URIs in the scope of the element on which it
+         appears; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML Base specification.
+
+    lang (as an attribute name): denotes an attribute whose value
+         is a language code for the natural language of the content of
+         any element; its value is inherited.  This name is reserved
+         by virtue of its definition in the XML specification.
+  
+    space (as an attribute name): denotes an attribute whose
+         value is a keyword indicating what whitespace processing
+         discipline is intended for the content of the element; its
+         value is inherited.  This name is reserved by virtue of its
+         definition in the XML specification.
+
+    Father (in any context at all): denotes Jon Bosak, the chair of 
+         the original XML Working Group.  This name is reserved by 
+         the following decision of the W3C XML Plenary and 
+         XML Coordination groups:
+
+             In appreciation for his vision, leadership and dedication
+             the W3C XML Plenary on this 10th day of February, 2000
+             reserves for Jon Bosak in perpetuity the XML name
+             xml:Father
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>This schema defines attributes and an attribute group
+        suitable for use by
+        schemas wishing to allow xml:base, xml:lang or xml:space attributes
+        on elements they define.
+
+        To enable this, such a schema must import this schema
+        for the XML namespace, e.g. as follows:
+        <schema . . .>
+         . . .
+         <import namespace="http://www.w3.org/XML/1998/namespace"
+                    schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+
+        Subsequently, qualified reference to any of the attributes
+        or the group defined below will have the desired effect, e.g.
+
+        <type . . .>
+         . . .
+         <attributeGroup ref="xml:specialAttrs"/>
+ 
+         will define a type which will schema-validate an instance
+         element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>In keeping with the XML Schema WG's standard versioning
+   policy, this schema document will persist at
+   http://www.w3.org/2001/03/xml.xsd.
+   At the date of issue it can also be found at
+   http://www.w3.org/2001/xml.xsd.
+   The schema document at that URI may however change in the future,
+   in order to remain compatible with the latest version of XML Schema
+   itself.  In other words, if the XML Schema namespace changes, the version
+   of this document at
+   http://www.w3.org/2001/xml.xsd will change
+   accordingly; the version at
+   http://www.w3.org/2001/03/xml.xsd will not change.
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang" type="xs:language">
+  <xs:annotation>
+   <xs:documentation>In due course, we should install the relevant ISO 2- and 3-letter
+         codes as the enumerated possible values . . .</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="space" default="preserve">
+  <xs:simpleType>
+   <xs:restriction base="xs:NCName">
+    <xs:enumeration value="default"/>
+    <xs:enumeration value="preserve"/>
+   </xs:restriction>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+  <xs:annotation>
+   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+                     information about this attribute.</xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+  <xs:attribute ref="xml:base"/>
+  <xs:attribute ref="xml:lang"/>
+  <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/setup.py b/setup.py
index fdcbe25..8a2dac1 100644
--- a/setup.py
+++ b/setup.py
@@ -55,9 +55,9 @@ setup(name='elbe',
                                    "init/*.mako", \
                                    "init/*.xml", \
                                    "*.pub", \
-                                   "dbsfed.xsd", \
                                    "default-preseed.xml", \
-                                   "xsdtoasciidoc.mako"] },
+                                   "xsdtoasciidoc.mako"],
+                          'schema': ["dbsfed.xsd", "xml.xsd"]},
       scripts=['elbe'],
       cmdclass={"install": my_install},
       data_files= [
-- 
2.1.4





More information about the elbe-devel mailing list