From f61b736be1dc28e3ef1370ffc6fa990774cdc6c3 Mon Sep 17 00:00:00 2001
From: "Dr. Martin Goik" <goik@hdm-stuttgart.de>
Date: Fri, 14 Dec 2018 12:23:55 +0100
Subject: [PATCH] Better XML schema unit test support

---
 Klausuren/Sda1/2015summer/Exam/pom.xml        |   21 +-
 .../Exam/src/main/resources/XMLSchema.xsd     | 2471 +++++++++++++++++
 .../Exam/src/main/resources/xml.xsd           |  286 ++
 .../{Exam_solve => Solve}/.gitignore          |    0
 .../{Exam_solve => Solve}/Doc/scriptXsd.xhtml |    0
 .../Doc/scriptsJdbc.xhtml                     |    0
 .../Doc/scriptsSchemaSql.xhtml                |    0
 .../Schema/sampledata.xml                     |    0
 .../{Exam_solve => Solve}/Schema/scripts.sql  |    0
 .../{Exam_solve => Solve}/Schema/scripts.xsd  |    0
 .../SchemaTest/invalidHasReference.xml        |    0
 .../SchemaTest/invalidIdNoSpace.xml           |    0
 .../SchemaTest/invalidMultipleReference.xml   |    0
 .../SchemaTest/invalidSingleReference.xml     |    0
 .../SchemaTest/invalidUniqueId.xml            |    0
 .../SchemaTest/invalidUniqueLanguage.xml      |    0
 .../invalidUniqueMultipleLanguageRef_err.xml  |    0
 .../SchemaTest/preconditionHasReference.xml   |    0
 .../SchemaTest/preconditionIdNoSpace.xml      |    0
 .../preconditionMultipleReference.xml         |    0
 .../preconditionSingleReference.xml           |    0
 .../SchemaTest/preconditionUniqueId.xml       |    0
 .../SchemaTest/preconditionUniqueLanguage.xml |    0
 .../preconditionUniqueMultipleLanguageRef.xml |    0
 .../SchemaTest/validFull.xml                  |    0
 .../2015summer/{Exam_solve => Solve}/pom.xml  |   19 +-
 .../mi/sda1/scripts/DbHandler.java            |    0
 .../mi/sda1/scripts/Transform.java            |    0
 .../mi/sda1/scripts/Xml2Rdbms.java            |    0
 .../Solve/src/main/resources/XMLSchema.xsd    | 2471 +++++++++++++++++
 .../src/main/resources/log4j2.xml             |    0
 .../Solve/src/main/resources/xml.xsd          |  286 ++
 .../mi/sda1/scripts/SchemaTest.java           |    0
 Klausuren/Sda1/2015winter/Exam/pom.xml        |   19 +-
 .../Exam/src/main/resources/XMLSchema.xsd     | 2471 +++++++++++++++++
 .../Exam/src/main/resources/xml.xsd           |  286 ++
 .../mi/sda1/exam/xsd/SchemaTest.java          |   88 +-
 .../mi/sda1/exam/xsd/ShowReachedPoints.java   |   19 +
 .../mi/sda1/exam/xsd/SchemaTest.java          |   25 -
 .../2015winter/{Solution => Solve}/.gitignore |    0
 .../{Solution => Solve}/Doc/a.xhtml           |    0
 .../{Solution => Solve}/Doc/b.xhtml           |    0
 .../{Solution => Solve}/Doc/c.xhtml           |    0
 .../{Solution => Solve}/Schema/dictionary.xsd |    0
 .../{Solution => Solve}/Schema/sampledata.xml |    0
 .../Schema/sampledata_target.xhtml            |    0
 .../{Solution => Solve}/Schema/schema.sql     |    0
 .../SchemaTest/doubleSynonymSection_err.xml   |    0
 .../duplicateTranslationSection_err.xml       |    0
 .../{Solution => Solve}/SchemaTest/empty.xml  |    0
 .../SchemaTest/fromType_err.xml               |    0
 .../SchemaTest/language_err.xml               |    0
 .../SchemaTest/missingTranslation_err.xml     |    0
 .../SchemaTest/noTranslationDuplicate.xml     |    0
 .../SchemaTest/noTranslationDuplicate_err.xml |    0
 .../SchemaTest/synonym.xml                    |    0
 .../SchemaTest/synonymDuplicate_err.xml       |    0
 .../SchemaTest/synonymRef_err.xml             |    0
 .../SchemaTest/toType_err.xml                 |    0
 .../SchemaTest/translation.xml                |    0
 .../SchemaTest/translationMinimal.xml         |    0
 .../SchemaTest/translationMinimal_err.xml     |    0
 .../SchemaTest/twoEntries.xml                 |    0
 .../SchemaTest/twoEntriesDuplicate_err.xml    |    0
 .../{Solution => Solve}/SchemaTest/type.xml   |    0
 .../dictionary-result.html                    |    0
 .../{Solution => Solve}/dictionary.xspec      |    0
 .../{Solution => Solve}/dictionary2html.xsl   |    0
 .../2015winter/{Solution => Solve}/pom.xml    |   19 +-
 .../mi/sda1/exam/rdbms/DbHandler.java         |    0
 .../sda1/exam/rdbms/DbhandlerManualTest.java  |    0
 .../mi/sda1/exam/rdbms/Xml2Rdbms.java         |    0
 .../Solve/src/main/resources/XMLSchema.xsd    | 2471 +++++++++++++++++
 .../src/main/resources/log4j2.xml             |    0
 .../Solve/src/main/resources/xml.xsd          |  286 ++
 .../mi/sda1/exam/xsd/SchemaTest.java          |   86 +
 .../mi/sda1/exam/xsd/ShowReachedPoints.java   |   19 +
 .../2015winter/{Solution => Solve}/todo.txt   |    0
 Klausuren/Sda1/2016Summer/Exam/.gitignore     |    1 +
 .../Sda1/2016Summer/Exam/Schema/movie.xsd     |    2 +-
 Klausuren/Sda1/2016Summer/Exam/pom.xml        |   44 +-
 .../Exam/src/main/resources/XMLSchema.xsd     | 2471 +++++++++++++++++
 .../Exam/src/main/resources/xml.xsd           |  286 ++
 .../mi/sda1/exam/ShowReachedPoints.java       |   20 +
 .../movie_by_actor/ShowReachedPoints.java     |   15 -
 .../mi/sda1/exam/xsd/SchemaTest.java          |  106 +-
 Klausuren/Sda1/2016Summer/Solution/pom.xml    |  100 -
 .../movie_by_actor/ShowReachedPoints.java     |   15 -
 .../mi/sda1/exam/xsd/SchemaTest.java          |   26 -
 .../2016Summer/{Solution => Solve}/.gitignore |    1 +
 .../{Solution => Solve}/Doc/movie2html.xhtml  |    0
 .../{Solution => Solve}/Doc/movieSql.xhtml    |    0
 .../{Solution => Solve}/Doc/movieXsd.xhtml    |    0
 .../{Solution => Solve}/Schema/movie.sql      |    0
 .../{Solution => Solve}/Schema/movie.xsd      |    4 +-
 .../{Solution => Solve}/Schema/sampledata.xml |    0
 .../Schema/sampledata.xml.highlight.html      |    0
 .../SchemaTest/100valid_minimum.xml           |    0
 .../SchemaTest/110invalid_duplicates.xml      |    0
 .../SchemaTest/200valid_multiplePersons.xml   |    0
 .../SchemaTest/210invalid_duplicateId.xml     |    0
 .../SchemaTest/300valid_movie.xml             |    0
 .../SchemaTest/310invalid.xml                 |    0
 .../SchemaTest/400valid_name.xml              |    0
 .../SchemaTest/410invalid_name.xml            |    0
 .../SchemaTest/420invalid_idNameToken.xml     |    0
 .../SchemaTest/430invalid_requiredAttribs.xml |    0
 .../SchemaTest/440invalid_year.xml            |    0
 .../SchemaTest/500valid_personBio.xml         |    0
 .../SchemaTest/505valid_person.xml            |    0
 .../SchemaTest/510invalid_idRequired.xml      |    0
 .../SchemaTest/600valid_personRef.xml         |    0
 .../SchemaTest/610invalid_actorRef.xml        |    0
 .../SchemaTest/620invalid_directorRef.xml     |    0
 .../SchemaTest/630invalid_personRef.xml       |    0
 .../SchemaTest/640invalid_uniqueCast.xml      |    0
 .../SchemaTest/700valid_rating.xml            |    0
 .../SchemaTest/710invalid_rating.xml          |    0
 .../{Solution => Solve}/criteria.txt          |    0
 Klausuren/Sda1/2016Summer/Solve/pom.xml       |  166 ++
 .../movie_by_actor/Moviedb2MovieByActor.java  |    0
 .../Solve/src/main/resources/XMLSchema.xsd    | 2471 +++++++++++++++++
 .../src/main/resources/log4j2.xml             |    0
 .../Solve/src/main/resources/xml.xsd          |  286 ++
 .../mi/sda1/exam/ShowReachedPoints.java       |   22 +
 .../movie_by_actor/TestMoviesByActor.java     |    0
 .../mi/sda1/exam/xsd/SchemaTest.java          |  100 +
 .../2016Summer/{Solution => Solve}/todo.txt   |    0
 Klausuren/Sda1/2016Winter/Exam/pom.xml        |   35 +-
 .../Exam/src/main/resources/XMLSchema.xsd     | 2471 +++++++++++++++++
 .../Exam/src/main/resources/xml.xsd           |  286 ++
 .../mi/sda1/exam/xsd/test/SchemaTest.java     |   99 +-
 .../sda1/exam/xsd/test/ShowReachedPoints.java |   19 +
 .../mi/sda1/exam/xsd/test/SchemaTest.java     |   26 -
 .../2016Winter/{Solution => Solve}/.gitignore |    0
 .../{Solution => Solve}/Doc/ex1.xhtml         |    0
 .../{Solution => Solve}/Doc/ex2.xml           |    0
 .../{Solution => Solve}/Doc/ex3.xml           |    0
 .../{Solution => Solve}/Doc/movie2html.xhtml  |    0
 .../{Solution => Solve}/Doc/movieSql.xhtml    |    0
 .../{Solution => Solve}/Schema/company.xsd    |    0
 .../{Solution => Solve}/Schema/sampledata.xml |    0
 .../SchemaTest/0100valid_minimum.xml          |    0
 .../SchemaTest/0115invalid_shortWithSpace.xml |    0
 .../SchemaTest/0120invalid_duplicateShort.xml |    0
 .../SchemaTest/0125invalid_noShort.xml        |    0
 .../0130invalid_shortZeroLength.xml           |    0
 .../SchemaTest/0140invalid_noDepartment.xml   |    0
 .../SchemaTest/0145invalid_noName.xml         |    0
 .../SchemaTest/0150invalid_duplicateName.xml  |    0
 .../SchemaTest/0200valid_nesting.xml          |    0
 .../0210invalid_nestingDuplicateShort.xml     |    0
 .../SchemaTest/0300valid_minEmployee.xml      |    0
 .../SchemaTest/0305invalid_NoDepartment.xml   |    0
 .../SchemaTest/0310invalid_NoSsn.xml          |    0
 .../SchemaTest/0315invalid_NoCommonName.xml   |    0
 .../0325invalid_duplicateCommonName.xml       |    0
 .../SchemaTest/0400valid_multipleEmployee.xml |    0
 .../SchemaTest/0410invalid_duplicateSsn.xml   |    0
 .../{Solution => Solve}/Sql/sample.sql        |    0
 .../2016Winter/{Solution => Solve}/pom.xml    |   34 +-
 .../mi/sda1/exam/dataexport/EmployeeInfo.java |    0
 .../exam/dataexport/model/Department.java     |    0
 .../sda1/exam/dataexport/model/Employee.java  |    0
 .../main/resources/META-INF/persistence.xml   |    0
 .../Solve/src/main/resources/XMLSchema.xsd    | 2471 +++++++++++++++++
 .../src/main/resources/log4j2.xml             |    0
 .../Solve/src/main/resources/xml.xsd          |  286 ++
 .../mi/sda1/exam/xsd/test/SchemaTest.java     |   92 +
 .../sda1/exam/xsd/test/ShowReachedPoints.java |   19 +
 .../2016Winter/{Solution => Solve}/todo.txt   |    0
 Klausuren/Sda1/2017winter/Exam/pom.xml        |    4 +-
 .../Exam/src/main/resources/XMLSchema.xsd     | 2471 +++++++++++++++++
 .../Exam/src/main/resources/xml.xsd           |  286 ++
 .../mi/sda1/exam/xsd/test/SchemaTest.java     |   99 +-
 .../sda1/exam/xsd/test/ShowReachedPoints.java |   22 +
 Klausuren/Sda1/2017winter/Solve/pom.xml       |    4 +-
 .../Solve/src/main/resources/XMLSchema.xsd    | 2471 +++++++++++++++++
 .../Solve/src/main/resources/xml.xsd          |  286 ++
 .../mi/sda1/exam/xsd/test/SchemaTest.java     |   99 +-
 .../sda1/exam/xsd/test/ShowReachedPoints.java |   22 +
 Klausuren/Sda1/2018Summer/Exam/pom.xml        |    2 +-
 .../mi/sda1/test/ex1/ShowReachedPoints.java   |    4 +-
 .../mi/sda1/test/ex1/TestSchema.java}         |    2 +-
 Klausuren/Sda1/2018Summer/Solve/Doc/exam.xml  |    2 +-
 Klausuren/Sda1/2018Summer/Solve/pom.xml       |    5 +-
 .../mi/sda1/test/ex1/ShowReachedPoints.java   |    2 +-
 .../mi/sda1/test/ex1/TestSchema.java}         |    2 +-
 ws/Artifacts/Unitmarking/pom.xml              |   44 +-
 .../exam/unitmarking/xml/XmlTestSupport.java  |   21 +-
 190 files changed, 28801 insertions(+), 364 deletions(-)
 create mode 100644 Klausuren/Sda1/2015summer/Exam/src/main/resources/XMLSchema.xsd
 create mode 100644 Klausuren/Sda1/2015summer/Exam/src/main/resources/xml.xsd
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/.gitignore (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/Doc/scriptXsd.xhtml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/Doc/scriptsJdbc.xhtml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/Doc/scriptsSchemaSql.xhtml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/Schema/sampledata.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/Schema/scripts.sql (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/Schema/scripts.xsd (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidHasReference.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidIdNoSpace.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidMultipleReference.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidSingleReference.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidUniqueId.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidUniqueLanguage.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/invalidUniqueMultipleLanguageRef_err.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionHasReference.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionIdNoSpace.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionMultipleReference.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionSingleReference.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionUniqueId.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionUniqueLanguage.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/preconditionUniqueMultipleLanguageRef.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/SchemaTest/validFull.xml (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/pom.xml (86%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/DbHandler.java (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Transform.java (100%)
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Xml2Rdbms.java (100%)
 create mode 100644 Klausuren/Sda1/2015summer/Solve/src/main/resources/XMLSchema.xsd
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/src/main/resources/log4j2.xml (100%)
 create mode 100644 Klausuren/Sda1/2015summer/Solve/src/main/resources/xml.xsd
 rename Klausuren/Sda1/2015summer/{Exam_solve => Solve}/src/test/java/de/hdm_stuttgart/mi/sda1/scripts/SchemaTest.java (100%)
 create mode 100644 Klausuren/Sda1/2015winter/Exam/src/main/resources/XMLSchema.xsd
 create mode 100644 Klausuren/Sda1/2015winter/Exam/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java
 delete mode 100644 Klausuren/Sda1/2015winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/.gitignore (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Doc/a.xhtml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Doc/b.xhtml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Doc/c.xhtml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Schema/dictionary.xsd (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Schema/sampledata.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Schema/sampledata_target.xhtml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/Schema/schema.sql (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/doubleSynonymSection_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/duplicateTranslationSection_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/empty.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/fromType_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/language_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/missingTranslation_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/noTranslationDuplicate.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/noTranslationDuplicate_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/synonym.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/synonymDuplicate_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/synonymRef_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/toType_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/translation.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/translationMinimal.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/translationMinimal_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/twoEntries.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/twoEntriesDuplicate_err.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/SchemaTest/type.xml (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/dictionary-result.html (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/dictionary.xspec (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/dictionary2html.xsl (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/pom.xml (87%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbHandler.java (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbhandlerManualTest.java (100%)
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/Xml2Rdbms.java (100%)
 create mode 100644 Klausuren/Sda1/2015winter/Solve/src/main/resources/XMLSchema.xsd
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/src/main/resources/log4j2.xml (100%)
 create mode 100644 Klausuren/Sda1/2015winter/Solve/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
 create mode 100644 Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java
 rename Klausuren/Sda1/2015winter/{Solution => Solve}/todo.txt (100%)
 create mode 100644 Klausuren/Sda1/2016Summer/Exam/src/main/resources/XMLSchema.xsd
 create mode 100644 Klausuren/Sda1/2016Summer/Exam/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java
 delete mode 100644 Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java
 delete mode 100644 Klausuren/Sda1/2016Summer/Solution/pom.xml
 delete mode 100644 Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java
 delete mode 100644 Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/.gitignore (78%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Doc/movie2html.xhtml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Doc/movieSql.xhtml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Doc/movieXsd.xhtml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Schema/movie.sql (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Schema/movie.xsd (97%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Schema/sampledata.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/Schema/sampledata.xml.highlight.html (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/100valid_minimum.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/110invalid_duplicates.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/200valid_multiplePersons.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/210invalid_duplicateId.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/300valid_movie.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/310invalid.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/400valid_name.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/410invalid_name.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/420invalid_idNameToken.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/430invalid_requiredAttribs.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/440invalid_year.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/500valid_personBio.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/505valid_person.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/510invalid_idRequired.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/600valid_personRef.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/610invalid_actorRef.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/620invalid_directorRef.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/630invalid_personRef.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/640invalid_uniqueCast.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/700valid_rating.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/SchemaTest/710invalid_rating.xml (100%)
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/criteria.txt (100%)
 create mode 100644 Klausuren/Sda1/2016Summer/Solve/pom.xml
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/Moviedb2MovieByActor.java (100%)
 create mode 100644 Klausuren/Sda1/2016Summer/Solve/src/main/resources/XMLSchema.xsd
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/src/main/resources/log4j2.xml (100%)
 create mode 100644 Klausuren/Sda1/2016Summer/Solve/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/TestMoviesByActor.java (100%)
 create mode 100644 Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
 rename Klausuren/Sda1/2016Summer/{Solution => Solve}/todo.txt (100%)
 create mode 100644 Klausuren/Sda1/2016Winter/Exam/src/main/resources/XMLSchema.xsd
 create mode 100644 Klausuren/Sda1/2016Winter/Exam/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
 delete mode 100644 Klausuren/Sda1/2016Winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/.gitignore (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Doc/ex1.xhtml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Doc/ex2.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Doc/ex3.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Doc/movie2html.xhtml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Doc/movieSql.xhtml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Schema/company.xsd (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Schema/sampledata.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0100valid_minimum.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0115invalid_shortWithSpace.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0120invalid_duplicateShort.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0125invalid_noShort.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0130invalid_shortZeroLength.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0140invalid_noDepartment.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0145invalid_noName.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0150invalid_duplicateName.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0200valid_nesting.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0210invalid_nestingDuplicateShort.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0300valid_minEmployee.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0305invalid_NoDepartment.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0310invalid_NoSsn.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0315invalid_NoCommonName.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0325invalid_duplicateCommonName.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0400valid_multipleEmployee.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/SchemaTest/0410invalid_duplicateSsn.xml (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/Sql/sample.sql (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/pom.xml (80%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/EmployeeInfo.java (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Department.java (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Employee.java (100%)
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/src/main/resources/META-INF/persistence.xml (100%)
 create mode 100644 Klausuren/Sda1/2016Winter/Solve/src/main/resources/XMLSchema.xsd
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/src/main/resources/log4j2.xml (100%)
 create mode 100644 Klausuren/Sda1/2016Winter/Solve/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
 create mode 100644 Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
 rename Klausuren/Sda1/2016Winter/{Solution => Solve}/todo.txt (100%)
 create mode 100644 Klausuren/Sda1/2017winter/Exam/src/main/resources/XMLSchema.xsd
 create mode 100644 Klausuren/Sda1/2017winter/Exam/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
 create mode 100644 Klausuren/Sda1/2017winter/Solve/src/main/resources/XMLSchema.xsd
 create mode 100644 Klausuren/Sda1/2017winter/Solve/src/main/resources/xml.xsd
 create mode 100644 Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
 rename Klausuren/Sda1/2018Summer/{Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java => Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java} (98%)
 rename Klausuren/Sda1/2018Summer/{Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java => Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java} (98%)

diff --git a/Klausuren/Sda1/2015summer/Exam/pom.xml b/Klausuren/Sda1/2015summer/Exam/pom.xml
index 136213a1f..06b0462a7 100644
--- a/Klausuren/Sda1/2015summer/Exam/pom.xml
+++ b/Klausuren/Sda1/2015summer/Exam/pom.xml
@@ -1,5 +1,5 @@
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 
 	<groupId>de.hdm-stuttgart.mi.sda1</groupId>
@@ -15,12 +15,17 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 	</properties>
 
-        <repositories>
-                <repository>
-                        <id>hdm-mi-internal-maven-repo</id>
-                        <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
-                </repository>
-        </repositories>
+	<repositories>
+
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+		</repository>
+		<repository>
+			<id>oxygenxml-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+		</repository>
+	</repositories>
 
 	<dependencies>
 
@@ -70,7 +75,7 @@
 		<dependency>
 			<groupId>de.hdm_stuttgart.mi.exam</groupId>
 			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
+			<version>1.0</version>
 		</dependency>
 
 	</dependencies>
diff --git a/Klausuren/Sda1/2015summer/Exam/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2015summer/Exam/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2015summer/Exam/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2015summer/Exam/src/main/resources/xml.xsd b/Klausuren/Sda1/2015summer/Exam/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2015summer/Exam/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/.gitignore b/Klausuren/Sda1/2015summer/Solve/.gitignore
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/.gitignore
rename to Klausuren/Sda1/2015summer/Solve/.gitignore
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/Doc/scriptXsd.xhtml b/Klausuren/Sda1/2015summer/Solve/Doc/scriptXsd.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/Doc/scriptXsd.xhtml
rename to Klausuren/Sda1/2015summer/Solve/Doc/scriptXsd.xhtml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/Doc/scriptsJdbc.xhtml b/Klausuren/Sda1/2015summer/Solve/Doc/scriptsJdbc.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/Doc/scriptsJdbc.xhtml
rename to Klausuren/Sda1/2015summer/Solve/Doc/scriptsJdbc.xhtml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/Doc/scriptsSchemaSql.xhtml b/Klausuren/Sda1/2015summer/Solve/Doc/scriptsSchemaSql.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/Doc/scriptsSchemaSql.xhtml
rename to Klausuren/Sda1/2015summer/Solve/Doc/scriptsSchemaSql.xhtml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/Schema/sampledata.xml b/Klausuren/Sda1/2015summer/Solve/Schema/sampledata.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/Schema/sampledata.xml
rename to Klausuren/Sda1/2015summer/Solve/Schema/sampledata.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/Schema/scripts.sql b/Klausuren/Sda1/2015summer/Solve/Schema/scripts.sql
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/Schema/scripts.sql
rename to Klausuren/Sda1/2015summer/Solve/Schema/scripts.sql
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/Schema/scripts.xsd b/Klausuren/Sda1/2015summer/Solve/Schema/scripts.xsd
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/Schema/scripts.xsd
rename to Klausuren/Sda1/2015summer/Solve/Schema/scripts.xsd
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidHasReference.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidHasReference.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidHasReference.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidHasReference.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidIdNoSpace.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidIdNoSpace.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidIdNoSpace.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidIdNoSpace.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidMultipleReference.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidMultipleReference.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidMultipleReference.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidMultipleReference.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidSingleReference.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidSingleReference.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidSingleReference.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidSingleReference.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidUniqueId.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidUniqueId.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidUniqueId.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidUniqueId.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidUniqueLanguage.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidUniqueLanguage.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidUniqueLanguage.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidUniqueLanguage.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidUniqueMultipleLanguageRef_err.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidUniqueMultipleLanguageRef_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/invalidUniqueMultipleLanguageRef_err.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/invalidUniqueMultipleLanguageRef_err.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionHasReference.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionHasReference.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionHasReference.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionHasReference.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionIdNoSpace.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionIdNoSpace.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionIdNoSpace.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionIdNoSpace.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionMultipleReference.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionMultipleReference.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionMultipleReference.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionMultipleReference.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionSingleReference.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionSingleReference.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionSingleReference.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionSingleReference.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionUniqueId.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionUniqueId.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionUniqueId.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionUniqueId.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionUniqueLanguage.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionUniqueLanguage.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionUniqueLanguage.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionUniqueLanguage.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionUniqueMultipleLanguageRef.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionUniqueMultipleLanguageRef.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/preconditionUniqueMultipleLanguageRef.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/preconditionUniqueMultipleLanguageRef.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/validFull.xml b/Klausuren/Sda1/2015summer/Solve/SchemaTest/validFull.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/SchemaTest/validFull.xml
rename to Klausuren/Sda1/2015summer/Solve/SchemaTest/validFull.xml
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/pom.xml b/Klausuren/Sda1/2015summer/Solve/pom.xml
similarity index 86%
rename from Klausuren/Sda1/2015summer/Exam_solve/pom.xml
rename to Klausuren/Sda1/2015summer/Solve/pom.xml
index db1ccb600..49491a6fd 100644
--- a/Klausuren/Sda1/2015summer/Exam_solve/pom.xml
+++ b/Klausuren/Sda1/2015summer/Solve/pom.xml
@@ -15,12 +15,17 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 	</properties>
 
-        <repositories>
-                <repository>
-                        <id>hdm-mi-internal-maven-repo</id>
-                        <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
-                </repository>
-        </repositories>
+	<repositories>
+
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+		</repository>
+		<repository>
+			<id>oxygenxml-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+		</repository>
+	</repositories>
 
 	<dependencies>
 
@@ -70,7 +75,7 @@
 		<dependency>
 			<groupId>de.hdm_stuttgart.mi.exam</groupId>
 			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
+			<version>1.0</version>
 		</dependency>
 
 	</dependencies>
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/DbHandler.java b/Klausuren/Sda1/2015summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/DbHandler.java
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/DbHandler.java
rename to Klausuren/Sda1/2015summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/DbHandler.java
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Transform.java b/Klausuren/Sda1/2015summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Transform.java
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Transform.java
rename to Klausuren/Sda1/2015summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Transform.java
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Xml2Rdbms.java b/Klausuren/Sda1/2015summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Xml2Rdbms.java
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Xml2Rdbms.java
rename to Klausuren/Sda1/2015summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/scripts/Xml2Rdbms.java
diff --git a/Klausuren/Sda1/2015summer/Solve/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2015summer/Solve/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2015summer/Solve/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/src/main/resources/log4j2.xml b/Klausuren/Sda1/2015summer/Solve/src/main/resources/log4j2.xml
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/src/main/resources/log4j2.xml
rename to Klausuren/Sda1/2015summer/Solve/src/main/resources/log4j2.xml
diff --git a/Klausuren/Sda1/2015summer/Solve/src/main/resources/xml.xsd b/Klausuren/Sda1/2015summer/Solve/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2015summer/Solve/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2015summer/Exam_solve/src/test/java/de/hdm_stuttgart/mi/sda1/scripts/SchemaTest.java b/Klausuren/Sda1/2015summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/scripts/SchemaTest.java
similarity index 100%
rename from Klausuren/Sda1/2015summer/Exam_solve/src/test/java/de/hdm_stuttgart/mi/sda1/scripts/SchemaTest.java
rename to Klausuren/Sda1/2015summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/scripts/SchemaTest.java
diff --git a/Klausuren/Sda1/2015winter/Exam/pom.xml b/Klausuren/Sda1/2015winter/Exam/pom.xml
index 12e51a10e..a0cfe9a5e 100644
--- a/Klausuren/Sda1/2015winter/Exam/pom.xml
+++ b/Klausuren/Sda1/2015winter/Exam/pom.xml
@@ -15,12 +15,17 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 	</properties>
 
-        <repositories>
-                <repository>
-                        <id>hdm-mi-internal-maven-repo</id>
-                        <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
-                </repository>
-        </repositories>
+	<repositories>
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+		</repository>
+
+		<repository>
+			<id>oxygenxml-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+		</repository>
+	</repositories>
 
 	<dependencies>
 
@@ -71,7 +76,7 @@
 		<dependency>
 			<groupId>de.hdm_stuttgart.mi.exam</groupId>
 			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
+			<version>1.0</version>
 		</dependency>
 
 	</dependencies>
diff --git a/Klausuren/Sda1/2015winter/Exam/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2015winter/Exam/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Exam/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2015winter/Exam/src/main/resources/xml.xsd b/Klausuren/Sda1/2015winter/Exam/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Exam/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java b/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
index 6b08e758e..84a314e50 100644
--- a/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
+++ b/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
@@ -1,25 +1,83 @@
 package de.hdm_stuttgart.mi.sda1.exam.xsd;
 
-import org.junit.Assert;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
 import org.junit.Test;
 
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
 /**
  * Unit test for an XML instance set.
  */
 @SuppressWarnings({"UnusedDeclaration"})
 public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-    @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise = new InstanceSetEvaluation("SchemaTest", "Schema/dictionary.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_doubleSynonymSection_err() {
+    xmlTestSupport.assertInvalid("doubleSynonymSection_err.xml");
+    xmlTestSupport.assertValid("synonym.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_duplicateTranslationSection_err() {
+    xmlTestSupport.assertInvalid("duplicateTranslationSection_err.xml");
+    xmlTestSupport.assertValid("noTranslationDuplicate.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_empty() {
+    xmlTestSupport.assertValid("empty.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_fromType_err() {
+    xmlTestSupport.assertInvalid("fromType_err.xml");
+    xmlTestSupport.assertValid("type.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_language_err() {
+    xmlTestSupport.assertInvalid("language_err.xml");
+    xmlTestSupport.assertValid("empty.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_missingTranslation_err() {
+    xmlTestSupport.assertInvalid("missingTranslation_err.xml");
+    xmlTestSupport.assertValid("translation.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_noTranslationDuplicate_err() {
+    xmlTestSupport.assertInvalid("noTranslationDuplicate_err.xml");
+    xmlTestSupport.assertValid("noTranslationDuplicate.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_synonymDuplicate_err() {
+    xmlTestSupport.assertInvalid("synonymDuplicate_err.xml");
+    xmlTestSupport.assertValid("synonym.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_synonymRef_err() {
+    xmlTestSupport.assertInvalid("synonymRef_err.xml");
+    xmlTestSupport.assertValid("synonym.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_toType_err() {
+    xmlTestSupport.assertInvalid("toType_err.xml");
+    xmlTestSupport.assertValid("type.xml");
+  }
+  @Test @Marking(points = 1)
+  public void test_translationMinimal_err() {
+    xmlTestSupport.assertInvalid("translationMinimal_err.xml");
+    xmlTestSupport.assertValid("translationMinimal.xml");
+  }
+  @Test @Marking(points = 1)
+  public void test_twoEntriesDuplicate_err() {
+    xmlTestSupport.assertInvalid("twoEntriesDuplicate_err.xml");
+    xmlTestSupport.assertValid("twoEntries.xml");
+  }
 }
diff --git a/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java b/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java
new file mode 100644
index 000000000..d872b6290
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java
@@ -0,0 +1,19 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec("Exercise 1", SchemaTest.class);
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2015winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java b/Klausuren/Sda1/2015winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
deleted file mode 100644
index 6b08e758e..000000000
--- a/Klausuren/Sda1/2015winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package de.hdm_stuttgart.mi.sda1.exam.xsd;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
-/**
- * Unit test for an XML instance set.
- */
-@SuppressWarnings({"UnusedDeclaration"})
-public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-    @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise = new InstanceSetEvaluation("SchemaTest", "Schema/dictionary.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
-}
diff --git a/Klausuren/Sda1/2015winter/Solution/.gitignore b/Klausuren/Sda1/2015winter/Solve/.gitignore
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/.gitignore
rename to Klausuren/Sda1/2015winter/Solve/.gitignore
diff --git a/Klausuren/Sda1/2015winter/Solution/Doc/a.xhtml b/Klausuren/Sda1/2015winter/Solve/Doc/a.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Doc/a.xhtml
rename to Klausuren/Sda1/2015winter/Solve/Doc/a.xhtml
diff --git a/Klausuren/Sda1/2015winter/Solution/Doc/b.xhtml b/Klausuren/Sda1/2015winter/Solve/Doc/b.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Doc/b.xhtml
rename to Klausuren/Sda1/2015winter/Solve/Doc/b.xhtml
diff --git a/Klausuren/Sda1/2015winter/Solution/Doc/c.xhtml b/Klausuren/Sda1/2015winter/Solve/Doc/c.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Doc/c.xhtml
rename to Klausuren/Sda1/2015winter/Solve/Doc/c.xhtml
diff --git a/Klausuren/Sda1/2015winter/Solution/Schema/dictionary.xsd b/Klausuren/Sda1/2015winter/Solve/Schema/dictionary.xsd
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Schema/dictionary.xsd
rename to Klausuren/Sda1/2015winter/Solve/Schema/dictionary.xsd
diff --git a/Klausuren/Sda1/2015winter/Solution/Schema/sampledata.xml b/Klausuren/Sda1/2015winter/Solve/Schema/sampledata.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Schema/sampledata.xml
rename to Klausuren/Sda1/2015winter/Solve/Schema/sampledata.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/Schema/sampledata_target.xhtml b/Klausuren/Sda1/2015winter/Solve/Schema/sampledata_target.xhtml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Schema/sampledata_target.xhtml
rename to Klausuren/Sda1/2015winter/Solve/Schema/sampledata_target.xhtml
diff --git a/Klausuren/Sda1/2015winter/Solution/Schema/schema.sql b/Klausuren/Sda1/2015winter/Solve/Schema/schema.sql
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/Schema/schema.sql
rename to Klausuren/Sda1/2015winter/Solve/Schema/schema.sql
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/doubleSynonymSection_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/doubleSynonymSection_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/doubleSynonymSection_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/doubleSynonymSection_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/duplicateTranslationSection_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/duplicateTranslationSection_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/duplicateTranslationSection_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/duplicateTranslationSection_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/empty.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/empty.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/empty.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/empty.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/fromType_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/fromType_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/fromType_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/fromType_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/language_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/language_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/language_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/language_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/missingTranslation_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/missingTranslation_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/missingTranslation_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/missingTranslation_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/noTranslationDuplicate.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/noTranslationDuplicate.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/noTranslationDuplicate.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/noTranslationDuplicate.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/noTranslationDuplicate_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/noTranslationDuplicate_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/noTranslationDuplicate_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/noTranslationDuplicate_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/synonym.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/synonym.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/synonym.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/synonym.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/synonymDuplicate_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/synonymDuplicate_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/synonymDuplicate_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/synonymDuplicate_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/synonymRef_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/synonymRef_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/synonymRef_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/synonymRef_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/toType_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/toType_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/toType_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/toType_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/translation.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/translation.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/translation.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/translation.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/translationMinimal.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/translationMinimal.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/translationMinimal.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/translationMinimal.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/translationMinimal_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/translationMinimal_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/translationMinimal_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/translationMinimal_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/twoEntries.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/twoEntries.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/twoEntries.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/twoEntries.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/twoEntriesDuplicate_err.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/twoEntriesDuplicate_err.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/twoEntriesDuplicate_err.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/twoEntriesDuplicate_err.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/SchemaTest/type.xml b/Klausuren/Sda1/2015winter/Solve/SchemaTest/type.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/SchemaTest/type.xml
rename to Klausuren/Sda1/2015winter/Solve/SchemaTest/type.xml
diff --git a/Klausuren/Sda1/2015winter/Solution/dictionary-result.html b/Klausuren/Sda1/2015winter/Solve/dictionary-result.html
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/dictionary-result.html
rename to Klausuren/Sda1/2015winter/Solve/dictionary-result.html
diff --git a/Klausuren/Sda1/2015winter/Solution/dictionary.xspec b/Klausuren/Sda1/2015winter/Solve/dictionary.xspec
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/dictionary.xspec
rename to Klausuren/Sda1/2015winter/Solve/dictionary.xspec
diff --git a/Klausuren/Sda1/2015winter/Solution/dictionary2html.xsl b/Klausuren/Sda1/2015winter/Solve/dictionary2html.xsl
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/dictionary2html.xsl
rename to Klausuren/Sda1/2015winter/Solve/dictionary2html.xsl
diff --git a/Klausuren/Sda1/2015winter/Solution/pom.xml b/Klausuren/Sda1/2015winter/Solve/pom.xml
similarity index 87%
rename from Klausuren/Sda1/2015winter/Solution/pom.xml
rename to Klausuren/Sda1/2015winter/Solve/pom.xml
index d79e498ff..3b00ee981 100644
--- a/Klausuren/Sda1/2015winter/Solution/pom.xml
+++ b/Klausuren/Sda1/2015winter/Solve/pom.xml
@@ -15,12 +15,17 @@
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 	</properties>
 
-        <repositories>
-                <repository>
-                        <id>hdm-mi-internal-maven-repo</id>
-                        <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
-                </repository>
-        </repositories>
+	<repositories>
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+		</repository>
+
+		<repository>
+			<id>oxygenxml-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+		</repository>
+	</repositories>
 
 	<dependencies>
 
@@ -71,7 +76,7 @@
 		<dependency>
 			<groupId>de.hdm_stuttgart.mi.exam</groupId>
 			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
+			<version>1.0</version>
 		</dependency>
 
 	</dependencies>
diff --git a/Klausuren/Sda1/2015winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbHandler.java b/Klausuren/Sda1/2015winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbHandler.java
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbHandler.java
rename to Klausuren/Sda1/2015winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbHandler.java
diff --git a/Klausuren/Sda1/2015winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbhandlerManualTest.java b/Klausuren/Sda1/2015winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbhandlerManualTest.java
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbhandlerManualTest.java
rename to Klausuren/Sda1/2015winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/DbhandlerManualTest.java
diff --git a/Klausuren/Sda1/2015winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/Xml2Rdbms.java b/Klausuren/Sda1/2015winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/Xml2Rdbms.java
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/Xml2Rdbms.java
rename to Klausuren/Sda1/2015winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/rdbms/Xml2Rdbms.java
diff --git a/Klausuren/Sda1/2015winter/Solve/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2015winter/Solve/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Solve/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2015winter/Solution/src/main/resources/log4j2.xml b/Klausuren/Sda1/2015winter/Solve/src/main/resources/log4j2.xml
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/src/main/resources/log4j2.xml
rename to Klausuren/Sda1/2015winter/Solve/src/main/resources/log4j2.xml
diff --git a/Klausuren/Sda1/2015winter/Solve/src/main/resources/xml.xsd b/Klausuren/Sda1/2015winter/Solve/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Solve/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java b/Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
new file mode 100644
index 000000000..facdf270e
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
@@ -0,0 +1,86 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
+import org.junit.Assert;
+import org.junit.Test;
+
+import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
+
+/**
+ * Unit test for an XML instance set.
+ */
+@SuppressWarnings({"UnusedDeclaration"})
+public class SchemaTest {
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_doubleSynonymSection_err() {
+    xmlTestSupport.assertInvalid("doubleSynonymSection_err.xml");
+    xmlTestSupport.assertValid("synonym.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_duplicateTranslationSection_err() {
+    xmlTestSupport.assertInvalid("duplicateTranslationSection_err.xml");
+    xmlTestSupport.assertValid("noTranslationDuplicate.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_empty() {
+    xmlTestSupport.assertValid("empty.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_fromType_err() {
+    xmlTestSupport.assertInvalid("fromType_err.xml");
+    xmlTestSupport.assertValid("type.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_language_err() {
+    xmlTestSupport.assertInvalid("language_err.xml");
+    xmlTestSupport.assertValid("empty.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_missingTranslation_err() {
+    xmlTestSupport.assertInvalid("missingTranslation_err.xml");
+    xmlTestSupport.assertValid("translation.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_noTranslationDuplicate_err() {
+    xmlTestSupport.assertInvalid("noTranslationDuplicate_err.xml");
+    xmlTestSupport.assertValid("noTranslationDuplicate.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_synonymDuplicate_err() {
+    xmlTestSupport.assertInvalid("synonymDuplicate_err.xml");
+    xmlTestSupport.assertValid("synonym.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_synonymRef_err() {
+    xmlTestSupport.assertInvalid("synonymRef_err.xml");
+    xmlTestSupport.assertValid("synonym.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_toType_err() {
+    xmlTestSupport.assertInvalid("toType_err.xml");
+    xmlTestSupport.assertValid("type.xml");
+  }
+  @Test @Marking(points = 1)
+  public void test_translationMinimal_err() {
+    xmlTestSupport.assertInvalid("translationMinimal_err.xml");
+    xmlTestSupport.assertValid("translationMinimal.xml");
+  }
+  @Test @Marking(points = 1)
+  public void test_twoEntriesDuplicate_err() {
+    xmlTestSupport.assertInvalid("twoEntriesDuplicate_err.xml");
+    xmlTestSupport.assertValid("twoEntries.xml");
+  }
+}
diff --git a/Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java b/Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java
new file mode 100644
index 000000000..d872b6290
--- /dev/null
+++ b/Klausuren/Sda1/2015winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/ShowReachedPoints.java
@@ -0,0 +1,19 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec("Exercise 1", SchemaTest.class);
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2015winter/Solution/todo.txt b/Klausuren/Sda1/2015winter/Solve/todo.txt
similarity index 100%
rename from Klausuren/Sda1/2015winter/Solution/todo.txt
rename to Klausuren/Sda1/2015winter/Solve/todo.txt
diff --git a/Klausuren/Sda1/2016Summer/Exam/.gitignore b/Klausuren/Sda1/2016Summer/Exam/.gitignore
index b82d7d9b1..ac117a7c4 100644
--- a/Klausuren/Sda1/2016Summer/Exam/.gitignore
+++ b/Klausuren/Sda1/2016Summer/Exam/.gitignore
@@ -1,4 +1,5 @@
 /.classpath
+/.idea/
 /.project
 A1.log
 /.idea
diff --git a/Klausuren/Sda1/2016Summer/Exam/Schema/movie.xsd b/Klausuren/Sda1/2016Summer/Exam/Schema/movie.xsd
index ba235824c..5e4228f5d 100644
--- a/Klausuren/Sda1/2016Summer/Exam/Schema/movie.xsd
+++ b/Klausuren/Sda1/2016Summer/Exam/Schema/movie.xsd
@@ -4,7 +4,7 @@
     vc:minVersion="1.1">
         
     <!-- 
-        TODO: Implement this schama according to the exercise description.
+        TODO: Implement this schema according to the exercise description.
               Sample document instances in SchemaTest may be validated by executing
               the Junit test class de.hdm_stuttgart.mi.sda1.exam.xsd.SchemaTest 
     -->    
diff --git a/Klausuren/Sda1/2016Summer/Exam/pom.xml b/Klausuren/Sda1/2016Summer/Exam/pom.xml
index 9974abf67..0181612bb 100644
--- a/Klausuren/Sda1/2016Summer/Exam/pom.xml
+++ b/Klausuren/Sda1/2016Summer/Exam/pom.xml
@@ -13,21 +13,45 @@
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<oxygenxml.version>20.1.0.3</oxygenxml.version>
 	</properties>
 
-        <repositories>
-                <repository>
-                        <id>hdm-mi-internal-maven-repo</id>
-                        <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
-                </repository>
-        </repositories>
+	<repositories>
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+		</repository>
+		<repository>
+			<id>oxygenxml-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+		</repository>
+	</repositories>
 
 	<dependencies>
 
 		<dependency>
-			<groupId>org.opengis.cite.xerces</groupId>
-			<artifactId>xercesImpl-xsd11</artifactId>
-			<version>2.12-beta-r1667115</version>
+			<groupId>com.oxygenxml</groupId>
+			<artifactId>oxygen-xercesImpl</artifactId>
+			<version>${oxygenxml.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.oxygenxml</groupId>
+			<artifactId>oxygen</artifactId>
+			<version>${oxygenxml.version}</version>
+		</dependency>
+
+		<!-- Still needed to keep oxygenxml happy using legacy logging -->
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.17</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.rackspace.eclipse.webtools.sourceediting</groupId>
+			<artifactId>org.eclipse.wst.xml.xpath2.processor</artifactId>
+			<version>2.1.100</version>
 		</dependency>
 
 		<dependency>
@@ -72,7 +96,7 @@
 		<dependency>
 			<groupId>de.hdm_stuttgart.mi.exam</groupId>
 			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
+			<version>1.0</version>
 		</dependency>
 
 	</dependencies>
diff --git a/Klausuren/Sda1/2016Summer/Exam/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2016Summer/Exam/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Exam/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2016Summer/Exam/src/main/resources/xml.xsd b/Klausuren/Sda1/2016Summer/Exam/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Exam/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java b/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java
new file mode 100644
index 000000000..e62683611
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java
@@ -0,0 +1,20 @@
+package de.hdm_stuttgart.mi.sda1.exam;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+import de.hdm_stuttgart.mi.sda1.exam.movie_by_actor.TestMoviesByActor;
+import de.hdm_stuttgart.mi.sda1.exam.xsd.SchemaTest;
+
+/**
+ * Executing unit tests.
+ */
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec("Exercise 1", TestMoviesByActor.class);
+        RunTests.exec("Exercise 2", SchemaTest.class);
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java b/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java
deleted file mode 100644
index 4dd7f6d00..000000000
--- a/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package de.hdm_stuttgart.mi.sda1.exam.movie_by_actor;
-
-import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
-
-public class ShowReachedPoints {
-
-   /**
-    * Execution reveals the number of reached points.
-    * 
-    * @param args Unused
-    */
-   public static void main(String[] args) {
-      RunTests.exec(TestMoviesByActor.class);
-   }
-}
diff --git a/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java b/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
index 9c7da31f7..a0b7fe457 100644
--- a/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
+++ b/Klausuren/Sda1/2016Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
@@ -1,26 +1,104 @@
 package de.hdm_stuttgart.mi.sda1.exam.xsd;
 
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
 import org.junit.Assert;
+import org.junit.FixMethodOrder;
 import org.junit.Test;
 
 import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
+import org.junit.runners.MethodSorters;
 
 /**
  * Unit test for an XML instance set.
  */
 @SuppressWarnings({"UnusedDeclaration"})
-public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-    @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise =
-    		   new InstanceSetEvaluation("SchemaTest", "Schema/movie.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
+@FixMethodOrder(value = MethodSorters.NAME_ASCENDING)
+public class SchemaTest extends ExaminationTestDefaults {
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_110invalid_duplicates() {
+    xmlTestSupport.assertInvalid("110invalid_duplicates.xml");
+    xmlTestSupport.assertValid("100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_210invalid_duplicateId() {
+    xmlTestSupport.assertInvalid("210invalid_duplicateId.xml");
+    xmlTestSupport.assertValid("200valid_multiplePersons.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_310invalid() {
+    xmlTestSupport.assertInvalid("310invalid.xml");
+    xmlTestSupport.assertValid("300valid_movie.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_410invalid_name() {
+    xmlTestSupport.assertInvalid("410invalid_name.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_420invalid_idNameToken() {
+    xmlTestSupport.assertInvalid("420invalid_idNameToken.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_430invalid_requiredAttribs() {
+    xmlTestSupport.assertInvalid("430invalid_requiredAttribs.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_440invalid_year() {
+    xmlTestSupport.assertInvalid("440invalid_year.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_500valid_personBio() {
+    xmlTestSupport.assertValid("500valid_personBio.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_510invalid_idRequired() {
+    xmlTestSupport.assertInvalid("510invalid_idRequired.xml");
+    xmlTestSupport.assertValid("505valid_person.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_610invalid_actorRef() {
+    xmlTestSupport.assertInvalid("610invalid_actorRef.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_620invalid_directorRef() {
+    xmlTestSupport.assertInvalid("620invalid_directorRef.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_630invalid_personRef() {
+    xmlTestSupport.assertInvalid("630invalid_personRef.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_640invalid_uniqueCast() {
+    xmlTestSupport.assertInvalid("640invalid_uniqueCast.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_710invalid_rating() {
+    xmlTestSupport.assertInvalid("710invalid_rating.xml");
+    xmlTestSupport.assertValid("700valid_rating.xml");
+  }
 }
diff --git a/Klausuren/Sda1/2016Summer/Solution/pom.xml b/Klausuren/Sda1/2016Summer/Solution/pom.xml
deleted file mode 100644
index 961260cee..000000000
--- a/Klausuren/Sda1/2016Summer/Solution/pom.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-
-	<groupId>de.hdm-stuttgart.mi.sda1</groupId>
-	<artifactId>sda1_2016summer_solve</artifactId>
-	<version>1.0</version>
-	<packaging>jar</packaging>
-
-	<name>sda1_2016summer_solve</name>
-
-	<url>http://freedocs.mi.hdm-stuttgart.de</url>
-
-	<properties>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-	</properties>
-
-        <repositories>
-                <repository>
-                        <id>hdm-mi-internal-maven-repo</id>
-                        <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
-                </repository>
-        </repositories>
-
-	<dependencies>
-
-		<dependency>
-			<groupId>org.opengis.cite.xerces</groupId>
-			<artifactId>xercesImpl-xsd11</artifactId>
-			<version>2.12-beta-r1667115</version>
-		</dependency>
-
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>4.12</version>
-			<scope>test</scope>
-			<optional>true</optional>
-		</dependency>
-
-		<dependency>
-			<groupId>mysql</groupId>
-			<artifactId>mysql-connector-java</artifactId>
-			<version>5.1.36</version>
-			<scope>runtime</scope>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-api</artifactId>
-			<version>2.1</version>
-		</dependency>
-		
-		<dependency>
-			<groupId>org.apache.logging.log4j</groupId>
-			<artifactId>log4j-core</artifactId>
-			<version>2.1</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.jdom</groupId>
-			<artifactId>jdom2</artifactId>
-			<version>2.0.6</version>
-		</dependency>
-
-		<dependency>
-			<groupId>jaxen</groupId>
-			<artifactId>jaxen</artifactId>
-			<version>1.1.6</version>
-		</dependency>
-
-		<dependency>
-			<groupId>de.hdm_stuttgart.mi.exam</groupId>
-			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
-		</dependency>
-
-	</dependencies>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<version>3.5.1</version>
-				<configuration>
-					<source>1.8</source>
-					<target>1.8</target>
-				</configuration>
-			</plugin>
-
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-javadoc-plugin</artifactId>
-				<version>2.10.1</version>
-				<configuration />
-			</plugin>
-		</plugins>
-	</build>
-</project>
diff --git a/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java b/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java
deleted file mode 100644
index 4dd7f6d00..000000000
--- a/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/ShowReachedPoints.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package de.hdm_stuttgart.mi.sda1.exam.movie_by_actor;
-
-import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
-
-public class ShowReachedPoints {
-
-   /**
-    * Execution reveals the number of reached points.
-    * 
-    * @param args Unused
-    */
-   public static void main(String[] args) {
-      RunTests.exec(TestMoviesByActor.class);
-   }
-}
diff --git a/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java b/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
deleted file mode 100644
index 9c7da31f7..000000000
--- a/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.hdm_stuttgart.mi.sda1.exam.xsd;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
-/**
- * Unit test for an XML instance set.
- */
-@SuppressWarnings({"UnusedDeclaration"})
-public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-    @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise =
-    		   new InstanceSetEvaluation("SchemaTest", "Schema/movie.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
-}
diff --git a/Klausuren/Sda1/2016Summer/Solution/.gitignore b/Klausuren/Sda1/2016Summer/Solve/.gitignore
similarity index 78%
rename from Klausuren/Sda1/2016Summer/Solution/.gitignore
rename to Klausuren/Sda1/2016Summer/Solve/.gitignore
index 3498d4a33..051b537b3 100644
--- a/Klausuren/Sda1/2016Summer/Solution/.gitignore
+++ b/Klausuren/Sda1/2016Summer/Solve/.gitignore
@@ -1,4 +1,5 @@
 /.classpath
+/.idea/
 /.project
 A1.log
 
diff --git a/Klausuren/Sda1/2016Summer/Solution/Doc/movie2html.xhtml b/Klausuren/Sda1/2016Summer/Solve/Doc/movie2html.xhtml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/Doc/movie2html.xhtml
rename to Klausuren/Sda1/2016Summer/Solve/Doc/movie2html.xhtml
diff --git a/Klausuren/Sda1/2016Summer/Solution/Doc/movieSql.xhtml b/Klausuren/Sda1/2016Summer/Solve/Doc/movieSql.xhtml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/Doc/movieSql.xhtml
rename to Klausuren/Sda1/2016Summer/Solve/Doc/movieSql.xhtml
diff --git a/Klausuren/Sda1/2016Summer/Solution/Doc/movieXsd.xhtml b/Klausuren/Sda1/2016Summer/Solve/Doc/movieXsd.xhtml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/Doc/movieXsd.xhtml
rename to Klausuren/Sda1/2016Summer/Solve/Doc/movieXsd.xhtml
diff --git a/Klausuren/Sda1/2016Summer/Solution/Schema/movie.sql b/Klausuren/Sda1/2016Summer/Solve/Schema/movie.sql
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/Schema/movie.sql
rename to Klausuren/Sda1/2016Summer/Solve/Schema/movie.sql
diff --git a/Klausuren/Sda1/2016Summer/Solution/Schema/movie.xsd b/Klausuren/Sda1/2016Summer/Solve/Schema/movie.xsd
similarity index 97%
rename from Klausuren/Sda1/2016Summer/Solution/Schema/movie.xsd
rename to Klausuren/Sda1/2016Summer/Solve/Schema/movie.xsd
index ebc36de00..0b4c6d4de 100644
--- a/Klausuren/Sda1/2016Summer/Solution/Schema/movie.xsd
+++ b/Klausuren/Sda1/2016Summer/Solve/Schema/movie.xsd
@@ -19,7 +19,7 @@
     <xs:element name="cast">
         <xs:complexType>
             <xs:sequence>
-                <xs:element ref="actor" minOccurs="1" maxOccurs="unbounded"/>
+                <xs:element ref="actor" maxOccurs="unbounded"/>
             </xs:sequence>
         </xs:complexType>
         <xs:key name="uniqueActorInMovie">
@@ -107,4 +107,4 @@
         
     </xs:element>
     
-</xs:schema>
+</xs:schema>
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Summer/Solution/Schema/sampledata.xml b/Klausuren/Sda1/2016Summer/Solve/Schema/sampledata.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/Schema/sampledata.xml
rename to Klausuren/Sda1/2016Summer/Solve/Schema/sampledata.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/Schema/sampledata.xml.highlight.html b/Klausuren/Sda1/2016Summer/Solve/Schema/sampledata.xml.highlight.html
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/Schema/sampledata.xml.highlight.html
rename to Klausuren/Sda1/2016Summer/Solve/Schema/sampledata.xml.highlight.html
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/100valid_minimum.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/100valid_minimum.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/100valid_minimum.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/100valid_minimum.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/110invalid_duplicates.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/110invalid_duplicates.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/110invalid_duplicates.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/110invalid_duplicates.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/200valid_multiplePersons.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/200valid_multiplePersons.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/200valid_multiplePersons.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/200valid_multiplePersons.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/210invalid_duplicateId.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/210invalid_duplicateId.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/210invalid_duplicateId.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/210invalid_duplicateId.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/300valid_movie.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/300valid_movie.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/300valid_movie.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/300valid_movie.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/310invalid.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/310invalid.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/310invalid.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/310invalid.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/400valid_name.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/400valid_name.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/400valid_name.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/400valid_name.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/410invalid_name.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/410invalid_name.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/410invalid_name.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/410invalid_name.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/420invalid_idNameToken.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/420invalid_idNameToken.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/420invalid_idNameToken.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/420invalid_idNameToken.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/430invalid_requiredAttribs.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/430invalid_requiredAttribs.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/430invalid_requiredAttribs.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/430invalid_requiredAttribs.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/440invalid_year.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/440invalid_year.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/440invalid_year.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/440invalid_year.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/500valid_personBio.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/500valid_personBio.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/500valid_personBio.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/500valid_personBio.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/505valid_person.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/505valid_person.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/505valid_person.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/505valid_person.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/510invalid_idRequired.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/510invalid_idRequired.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/510invalid_idRequired.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/510invalid_idRequired.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/600valid_personRef.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/600valid_personRef.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/600valid_personRef.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/600valid_personRef.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/610invalid_actorRef.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/610invalid_actorRef.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/610invalid_actorRef.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/610invalid_actorRef.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/620invalid_directorRef.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/620invalid_directorRef.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/620invalid_directorRef.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/620invalid_directorRef.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/630invalid_personRef.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/630invalid_personRef.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/630invalid_personRef.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/630invalid_personRef.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/640invalid_uniqueCast.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/640invalid_uniqueCast.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/640invalid_uniqueCast.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/640invalid_uniqueCast.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/700valid_rating.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/700valid_rating.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/700valid_rating.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/700valid_rating.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/SchemaTest/710invalid_rating.xml b/Klausuren/Sda1/2016Summer/Solve/SchemaTest/710invalid_rating.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/SchemaTest/710invalid_rating.xml
rename to Klausuren/Sda1/2016Summer/Solve/SchemaTest/710invalid_rating.xml
diff --git a/Klausuren/Sda1/2016Summer/Solution/criteria.txt b/Klausuren/Sda1/2016Summer/Solve/criteria.txt
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/criteria.txt
rename to Klausuren/Sda1/2016Summer/Solve/criteria.txt
diff --git a/Klausuren/Sda1/2016Summer/Solve/pom.xml b/Klausuren/Sda1/2016Summer/Solve/pom.xml
new file mode 100644
index 000000000..d504c5f83
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Solve/pom.xml
@@ -0,0 +1,166 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>de.hdm-stuttgart.mi.sda1</groupId>
+  <artifactId>sda1_2016summer_solve</artifactId>
+  <version>1.0</version>
+  <packaging>jar</packaging>
+
+  <name>sda1_2016summer_solve</name>
+
+  <url>http://freedocs.mi.hdm-stuttgart.de</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
+  </properties>
+
+  <repositories>
+    <repository>
+      <id>hdm-mi-internal-maven-repo</id>
+      <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+    </repository>
+
+    <repository>
+      <id>oxygenxml-repo</id>
+      <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+    </repository>
+  </repositories>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>com.oxygenxml</groupId>
+      <artifactId>oxygen-xercesImpl</artifactId>
+      <version>${oxygenxml.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.oxygenxml</groupId>
+      <artifactId>oxygen</artifactId>
+      <version>${oxygenxml.version}</version>
+    </dependency>
+
+    <!-- Still needed to keep oxygenxml happy using legacy logging -->
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.17</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.rackspace.eclipse.webtools.sourceediting</groupId>
+      <artifactId>org.eclipse.wst.xml.xpath2.processor</artifactId>
+      <version>2.1.100</version>
+    </dependency>
+
+    <dependency>
+      <groupId>mysql</groupId>
+      <artifactId>mysql-connector-java</artifactId>
+      <version>6.0.6</version>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+      <version>2.10.0</version>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.xml.bind</groupId>
+      <artifactId>jaxb-api</artifactId>
+      <version>2.3.0</version>
+    </dependency>
+
+    <!-- Required for executable jar generation to avoid ClassNotFoundException:
+        com.fasterxml.jackson.core.type.TypeReference and similar dependency problems. -->
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>2.9.3</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jdom</groupId>
+      <artifactId>jdom2</artifactId>
+      <version>2.0.6</version>
+    </dependency>
+
+    <dependency>
+      <groupId>jaxen</groupId>
+      <artifactId>jaxen</artifactId>
+      <version>1.1.6</version>
+    </dependency>
+
+    <dependency>
+      <groupId>de.hdm_stuttgart.mi.exam</groupId>
+      <artifactId>unitmarking</artifactId>
+      <version>1.0</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+
+    <plugins>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.7.0</version>
+        <configuration>
+          <source>1.9</source>
+          <target>1.9</target>
+          <compilerArgument>-proc:none</compilerArgument>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>3.0.1</version>
+        <configuration>
+          <links>
+            <link>https://docs.oracle.com/javase/10/docs/api</link>
+          </links>
+          <additionalJOptions>
+            <additionalJOption>-html5</additionalJOption>
+          </additionalJOptions>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>2.3</version>
+        <configuration>
+          <descriptor>src/main/assembly/assembly.xml</descriptor>
+        </configuration>
+        <executions>
+          <execution>
+            <id>make-assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+            <configuration>
+              <archive>
+                <manifest>
+                  <mainClass>de.hdm_stuttgart.mi.sda1.test.ex1.ShowReachedPoints</mainClass>
+                </manifest>
+              </archive>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Summer/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/Moviedb2MovieByActor.java b/Klausuren/Sda1/2016Summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/Moviedb2MovieByActor.java
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/Moviedb2MovieByActor.java
rename to Klausuren/Sda1/2016Summer/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/Moviedb2MovieByActor.java
diff --git a/Klausuren/Sda1/2016Summer/Solve/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2016Summer/Solve/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Solve/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2016Summer/Solution/src/main/resources/log4j2.xml b/Klausuren/Sda1/2016Summer/Solve/src/main/resources/log4j2.xml
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/src/main/resources/log4j2.xml
rename to Klausuren/Sda1/2016Summer/Solve/src/main/resources/log4j2.xml
diff --git a/Klausuren/Sda1/2016Summer/Solve/src/main/resources/xml.xsd b/Klausuren/Sda1/2016Summer/Solve/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Solve/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java b/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java
new file mode 100644
index 000000000..d3c5ce603
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/ShowReachedPoints.java
@@ -0,0 +1,22 @@
+package de.hdm_stuttgart.mi.sda1.exam;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+import de.hdm_stuttgart.mi.sda1.exam.movie_by_actor.TestMoviesByActor;
+import de.hdm_stuttgart.mi.sda1.exam.xsd.SchemaTest;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec("Exercise 1", TestMoviesByActor.class);
+        RunTests.exec("Exercise 2", SchemaTest.class);
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/TestMoviesByActor.java b/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/TestMoviesByActor.java
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/TestMoviesByActor.java
rename to Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/movie_by_actor/TestMoviesByActor.java
diff --git a/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java b/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
new file mode 100644
index 000000000..addcc3f52
--- /dev/null
+++ b/Klausuren/Sda1/2016Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/SchemaTest.java
@@ -0,0 +1,100 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.ExaminationTestDefaults;
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+/**
+ * Unit test for an XML instance set.
+ */
+@FixMethodOrder(value = MethodSorters.NAME_ASCENDING)
+public class SchemaTest extends ExaminationTestDefaults {
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_110invalid_duplicates() {
+    xmlTestSupport.assertInvalid("110invalid_duplicates.xml");
+    xmlTestSupport.assertValid("100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_210invalid_duplicateId() {
+    xmlTestSupport.assertInvalid("210invalid_duplicateId.xml");
+    xmlTestSupport.assertValid("200valid_multiplePersons.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_310invalid() {
+    xmlTestSupport.assertInvalid("310invalid.xml");
+    xmlTestSupport.assertValid("300valid_movie.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_410invalid_name() {
+    xmlTestSupport.assertInvalid("410invalid_name.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_420invalid_idNameToken() {
+    xmlTestSupport.assertInvalid("420invalid_idNameToken.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_430invalid_requiredAttribs() {
+    xmlTestSupport.assertInvalid("430invalid_requiredAttribs.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_440invalid_year() {
+    xmlTestSupport.assertInvalid("440invalid_year.xml");
+    xmlTestSupport.assertValid("400valid_name.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_500valid_personBio() {
+    xmlTestSupport.assertValid("500valid_personBio.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_510invalid_idRequired() {
+    xmlTestSupport.assertInvalid("510invalid_idRequired.xml");
+    xmlTestSupport.assertValid("505valid_person.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_610invalid_actorRef() {
+    xmlTestSupport.assertInvalid("610invalid_actorRef.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_620invalid_directorRef() {
+    xmlTestSupport.assertInvalid("620invalid_directorRef.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_630invalid_personRef() {
+    xmlTestSupport.assertInvalid("630invalid_personRef.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_640invalid_uniqueCast() {
+    xmlTestSupport.assertInvalid("640invalid_uniqueCast.xml");
+    xmlTestSupport.assertValid("600valid_personRef.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_710invalid_rating() {
+    xmlTestSupport.assertInvalid("710invalid_rating.xml");
+    xmlTestSupport.assertValid("700valid_rating.xml");
+  }
+}
diff --git a/Klausuren/Sda1/2016Summer/Solution/todo.txt b/Klausuren/Sda1/2016Summer/Solve/todo.txt
similarity index 100%
rename from Klausuren/Sda1/2016Summer/Solution/todo.txt
rename to Klausuren/Sda1/2016Summer/Solve/todo.txt
diff --git a/Klausuren/Sda1/2016Winter/Exam/pom.xml b/Klausuren/Sda1/2016Winter/Exam/pom.xml
index 62bf148a5..270353c4f 100644
--- a/Klausuren/Sda1/2016Winter/Exam/pom.xml
+++ b/Klausuren/Sda1/2016Winter/Exam/pom.xml
@@ -13,23 +13,48 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
     <hibernate.version>5.3.1.Final</hibernate.version>
     <querydsl.version>3.7.4</querydsl.version>
   </properties>
 
   <repositories>
+
     <repository>
       <id>hdm-mi-internal-maven-repo</id>
-      <url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
+      <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+    </repository>
+    <repository>
+      <id>oxygenxml-repo</id>
+      <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
     </repository>
   </repositories>
 
   <dependencies>
 
     <dependency>
-      <groupId>org.opengis.cite.xerces</groupId>
-      <artifactId>xercesImpl-xsd11</artifactId>
-      <version>2.12-beta-r1667115</version>
+      <groupId>com.oxygenxml</groupId>
+      <artifactId>oxygen-xercesImpl</artifactId>
+      <version>${oxygenxml.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.oxygenxml</groupId>
+      <artifactId>oxygen</artifactId>
+      <version>${oxygenxml.version}</version>
+    </dependency>
+
+    <!-- Still needed to keep oxygenxml happy using legacy logging -->
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.17</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.rackspace.eclipse.webtools.sourceediting</groupId>
+      <artifactId>org.eclipse.wst.xml.xpath2.processor</artifactId>
+      <version>2.1.100</version>
     </dependency>
 
     <dependency>
@@ -93,7 +118,7 @@
     <dependency>
       <groupId>de.hdm_stuttgart.mi.exam</groupId>
       <artifactId>unitmarking</artifactId>
-      <version>0.9</version>
+      <version>1.0</version>
     </dependency>
 
   </dependencies>
diff --git a/Klausuren/Sda1/2016Winter/Exam/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2016Winter/Exam/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Exam/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2016Winter/Exam/src/main/resources/xml.xsd b/Klausuren/Sda1/2016Winter/Exam/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Exam/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java b/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
index e35a2fca1..5ffb839f5 100644
--- a/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
+++ b/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
@@ -1,26 +1,93 @@
 package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
 
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
 import org.junit.Assert;
 import org.junit.Test;
 
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
 /**
  * Unit test for an XML instance set.
  */
 @SuppressWarnings({"UnusedDeclaration", "static-method"})
 public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-   @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise =
-    		   new InstanceSetEvaluation("SchemaTest", "Schema/company.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
-}
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_0115invalid_shortWithSpace() {
+    xmlTestSupport.assertInvalid("0115invalid_shortWithSpace.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0120invalid_duplicateShort() {
+    xmlTestSupport.assertInvalid("0120invalid_duplicateShort.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0125invalid_noShort() {
+    xmlTestSupport.assertInvalid("0125invalid_noShort.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0130invalid_shortZeroLength() {
+    xmlTestSupport.assertInvalid("0130invalid_shortZeroLength.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0140invalid_noDepartment() {
+    xmlTestSupport.assertInvalid("0140invalid_noDepartment.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0145invalid_noName() {
+    xmlTestSupport.assertInvalid("0145invalid_noName.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0150invalid_duplicateName() {
+    xmlTestSupport.assertInvalid("0150invalid_duplicateName.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0210invalid_nestingDuplicateShort() {
+    xmlTestSupport.assertInvalid("0210invalid_nestingDuplicateShort.xml");
+    xmlTestSupport.assertValid("0200valid_nesting.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0305invalid_NoDepartment() {
+    xmlTestSupport.assertInvalid("0305invalid_NoDepartment.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0310invalid_NoSsn() {
+    xmlTestSupport.assertInvalid("0310invalid_NoSsn.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0315invalid_NoCommonName() {
+    xmlTestSupport.assertInvalid("0315invalid_NoCommonName.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0325invalid_duplicateCommonName() {
+    xmlTestSupport.assertInvalid("0325invalid_duplicateCommonName.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0410invalid_duplicateSsn() {
+    xmlTestSupport.assertInvalid("0410invalid_duplicateSsn.xml");
+    xmlTestSupport.assertValid("0400valid_multipleEmployee.xml");
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java b/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
new file mode 100644
index 000000000..f5b0a6566
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
@@ -0,0 +1,19 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec("Exercise 1", SchemaTest.class);
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java b/Klausuren/Sda1/2016Winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
deleted file mode 100644
index e35a2fca1..000000000
--- a/Klausuren/Sda1/2016Winter/Solution/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
-/**
- * Unit test for an XML instance set.
- */
-@SuppressWarnings({"UnusedDeclaration", "static-method"})
-public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-   @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise =
-    		   new InstanceSetEvaluation("SchemaTest", "Schema/company.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
-}
diff --git a/Klausuren/Sda1/2016Winter/Solution/.gitignore b/Klausuren/Sda1/2016Winter/Solve/.gitignore
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/.gitignore
rename to Klausuren/Sda1/2016Winter/Solve/.gitignore
diff --git a/Klausuren/Sda1/2016Winter/Solution/Doc/ex1.xhtml b/Klausuren/Sda1/2016Winter/Solve/Doc/ex1.xhtml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Doc/ex1.xhtml
rename to Klausuren/Sda1/2016Winter/Solve/Doc/ex1.xhtml
diff --git a/Klausuren/Sda1/2016Winter/Solution/Doc/ex2.xml b/Klausuren/Sda1/2016Winter/Solve/Doc/ex2.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Doc/ex2.xml
rename to Klausuren/Sda1/2016Winter/Solve/Doc/ex2.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/Doc/ex3.xml b/Klausuren/Sda1/2016Winter/Solve/Doc/ex3.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Doc/ex3.xml
rename to Klausuren/Sda1/2016Winter/Solve/Doc/ex3.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/Doc/movie2html.xhtml b/Klausuren/Sda1/2016Winter/Solve/Doc/movie2html.xhtml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Doc/movie2html.xhtml
rename to Klausuren/Sda1/2016Winter/Solve/Doc/movie2html.xhtml
diff --git a/Klausuren/Sda1/2016Winter/Solution/Doc/movieSql.xhtml b/Klausuren/Sda1/2016Winter/Solve/Doc/movieSql.xhtml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Doc/movieSql.xhtml
rename to Klausuren/Sda1/2016Winter/Solve/Doc/movieSql.xhtml
diff --git a/Klausuren/Sda1/2016Winter/Solution/Schema/company.xsd b/Klausuren/Sda1/2016Winter/Solve/Schema/company.xsd
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Schema/company.xsd
rename to Klausuren/Sda1/2016Winter/Solve/Schema/company.xsd
diff --git a/Klausuren/Sda1/2016Winter/Solution/Schema/sampledata.xml b/Klausuren/Sda1/2016Winter/Solve/Schema/sampledata.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Schema/sampledata.xml
rename to Klausuren/Sda1/2016Winter/Solve/Schema/sampledata.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0100valid_minimum.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0100valid_minimum.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0100valid_minimum.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0100valid_minimum.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0115invalid_shortWithSpace.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0115invalid_shortWithSpace.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0115invalid_shortWithSpace.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0115invalid_shortWithSpace.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0120invalid_duplicateShort.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0120invalid_duplicateShort.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0120invalid_duplicateShort.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0120invalid_duplicateShort.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0125invalid_noShort.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0125invalid_noShort.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0125invalid_noShort.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0125invalid_noShort.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0130invalid_shortZeroLength.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0130invalid_shortZeroLength.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0130invalid_shortZeroLength.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0130invalid_shortZeroLength.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0140invalid_noDepartment.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0140invalid_noDepartment.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0140invalid_noDepartment.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0140invalid_noDepartment.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0145invalid_noName.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0145invalid_noName.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0145invalid_noName.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0145invalid_noName.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0150invalid_duplicateName.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0150invalid_duplicateName.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0150invalid_duplicateName.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0150invalid_duplicateName.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0200valid_nesting.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0200valid_nesting.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0200valid_nesting.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0200valid_nesting.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0210invalid_nestingDuplicateShort.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0210invalid_nestingDuplicateShort.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0210invalid_nestingDuplicateShort.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0210invalid_nestingDuplicateShort.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0300valid_minEmployee.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0300valid_minEmployee.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0300valid_minEmployee.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0300valid_minEmployee.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0305invalid_NoDepartment.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0305invalid_NoDepartment.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0305invalid_NoDepartment.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0305invalid_NoDepartment.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0310invalid_NoSsn.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0310invalid_NoSsn.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0310invalid_NoSsn.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0310invalid_NoSsn.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0315invalid_NoCommonName.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0315invalid_NoCommonName.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0315invalid_NoCommonName.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0315invalid_NoCommonName.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0325invalid_duplicateCommonName.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0325invalid_duplicateCommonName.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0325invalid_duplicateCommonName.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0325invalid_duplicateCommonName.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0400valid_multipleEmployee.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0400valid_multipleEmployee.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0400valid_multipleEmployee.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0400valid_multipleEmployee.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/SchemaTest/0410invalid_duplicateSsn.xml b/Klausuren/Sda1/2016Winter/Solve/SchemaTest/0410invalid_duplicateSsn.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/SchemaTest/0410invalid_duplicateSsn.xml
rename to Klausuren/Sda1/2016Winter/Solve/SchemaTest/0410invalid_duplicateSsn.xml
diff --git a/Klausuren/Sda1/2016Winter/Solution/Sql/sample.sql b/Klausuren/Sda1/2016Winter/Solve/Sql/sample.sql
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/Sql/sample.sql
rename to Klausuren/Sda1/2016Winter/Solve/Sql/sample.sql
diff --git a/Klausuren/Sda1/2016Winter/Solution/pom.xml b/Klausuren/Sda1/2016Winter/Solve/pom.xml
similarity index 80%
rename from Klausuren/Sda1/2016Winter/Solution/pom.xml
rename to Klausuren/Sda1/2016Winter/Solve/pom.xml
index 63a2e1388..dceb93326 100644
--- a/Klausuren/Sda1/2016Winter/Solution/pom.xml
+++ b/Klausuren/Sda1/2016Winter/Solve/pom.xml
@@ -13,6 +13,7 @@
 
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<oxygenxml.version>20.1.0.3</oxygenxml.version>
 		<hibernate.version>5.3.1.Final</hibernate.version>
 		<querydsl.version>3.7.4</querydsl.version>
 	</properties>
@@ -20,16 +21,39 @@
 	<repositories>
 		<repository>
 			<id>hdm-mi-internal-maven-repo</id>
-			<url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/mi-maven</url>
+		</repository>
+		<repository>
+			<id>oxygenxml-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
 		</repository>
 	</repositories>
 
 	<dependencies>
 
 		<dependency>
-			<groupId>org.opengis.cite.xerces</groupId>
-			<artifactId>xercesImpl-xsd11</artifactId>
-			<version>2.12-beta-r1667115</version>
+			<groupId>com.oxygenxml</groupId>
+			<artifactId>oxygen-xercesImpl</artifactId>
+			<version>${oxygenxml.version}</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.oxygenxml</groupId>
+			<artifactId>oxygen</artifactId>
+			<version>${oxygenxml.version}</version>
+		</dependency>
+
+		<!-- Still needed to keep oxygenxml happy using legacy logging -->
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+			<version>1.2.17</version>
+		</dependency>
+
+		<dependency>
+			<groupId>com.rackspace.eclipse.webtools.sourceediting</groupId>
+			<artifactId>org.eclipse.wst.xml.xpath2.processor</artifactId>
+			<version>2.1.100</version>
 		</dependency>
 
 		<dependency>
@@ -93,7 +117,7 @@
 		<dependency>
 			<groupId>de.hdm_stuttgart.mi.exam</groupId>
 			<artifactId>unitmarking</artifactId>
-			<version>0.9</version>
+			<version>1.0</version>
 		</dependency>
 
 	</dependencies>
diff --git a/Klausuren/Sda1/2016Winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/EmployeeInfo.java b/Klausuren/Sda1/2016Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/EmployeeInfo.java
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/EmployeeInfo.java
rename to Klausuren/Sda1/2016Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/EmployeeInfo.java
diff --git a/Klausuren/Sda1/2016Winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Department.java b/Klausuren/Sda1/2016Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Department.java
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Department.java
rename to Klausuren/Sda1/2016Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Department.java
diff --git a/Klausuren/Sda1/2016Winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Employee.java b/Klausuren/Sda1/2016Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Employee.java
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Employee.java
rename to Klausuren/Sda1/2016Winter/Solve/src/main/java/de/hdm_stuttgart/mi/sda1/exam/dataexport/model/Employee.java
diff --git a/Klausuren/Sda1/2016Winter/Solution/src/main/resources/META-INF/persistence.xml b/Klausuren/Sda1/2016Winter/Solve/src/main/resources/META-INF/persistence.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/src/main/resources/META-INF/persistence.xml
rename to Klausuren/Sda1/2016Winter/Solve/src/main/resources/META-INF/persistence.xml
diff --git a/Klausuren/Sda1/2016Winter/Solve/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2016Winter/Solve/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Solve/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2016Winter/Solution/src/main/resources/log4j2.xml b/Klausuren/Sda1/2016Winter/Solve/src/main/resources/log4j2.xml
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/src/main/resources/log4j2.xml
rename to Klausuren/Sda1/2016Winter/Solve/src/main/resources/log4j2.xml
diff --git a/Klausuren/Sda1/2016Winter/Solve/src/main/resources/xml.xsd b/Klausuren/Sda1/2016Winter/Solve/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Solve/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java b/Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
new file mode 100644
index 000000000..484cc8405
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
@@ -0,0 +1,92 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
+import org.junit.Test;
+
+/**
+ * Unit test for an XML instance set.
+ */
+@SuppressWarnings({"UnusedDeclaration", "static-method"})
+public class SchemaTest {
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_0115invalid_shortWithSpace() {
+    xmlTestSupport.assertInvalid("0115invalid_shortWithSpace.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0120invalid_duplicateShort() {
+    xmlTestSupport.assertInvalid("0120invalid_duplicateShort.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0125invalid_noShort() {
+    xmlTestSupport.assertInvalid("0125invalid_noShort.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0130invalid_shortZeroLength() {
+    xmlTestSupport.assertInvalid("0130invalid_shortZeroLength.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0140invalid_noDepartment() {
+    xmlTestSupport.assertInvalid("0140invalid_noDepartment.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0145invalid_noName() {
+    xmlTestSupport.assertInvalid("0145invalid_noName.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0150invalid_duplicateName() {
+    xmlTestSupport.assertInvalid("0150invalid_duplicateName.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0210invalid_nestingDuplicateShort() {
+    xmlTestSupport.assertInvalid("0210invalid_nestingDuplicateShort.xml");
+    xmlTestSupport.assertValid("0200valid_nesting.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0305invalid_NoDepartment() {
+    xmlTestSupport.assertInvalid("0305invalid_NoDepartment.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0310invalid_NoSsn() {
+    xmlTestSupport.assertInvalid("0310invalid_NoSsn.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0315invalid_NoCommonName() {
+    xmlTestSupport.assertInvalid("0315invalid_NoCommonName.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0325invalid_duplicateCommonName() {
+    xmlTestSupport.assertInvalid("0325invalid_duplicateCommonName.xml");
+    xmlTestSupport.assertValid("0300valid_minEmployee.xml");
+  }
+
+  @Test @Marking(points = 1)
+  public void test_0410invalid_duplicateSsn() {
+    xmlTestSupport.assertInvalid("0410invalid_duplicateSsn.xml");
+    xmlTestSupport.assertValid("0400valid_multipleEmployee.xml");
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java b/Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
new file mode 100644
index 000000000..f5b0a6566
--- /dev/null
+++ b/Klausuren/Sda1/2016Winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
@@ -0,0 +1,19 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec("Exercise 1", SchemaTest.class);
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2016Winter/Solution/todo.txt b/Klausuren/Sda1/2016Winter/Solve/todo.txt
similarity index 100%
rename from Klausuren/Sda1/2016Winter/Solution/todo.txt
rename to Klausuren/Sda1/2016Winter/Solve/todo.txt
diff --git a/Klausuren/Sda1/2017winter/Exam/pom.xml b/Klausuren/Sda1/2017winter/Exam/pom.xml
index 681b600ca..076a9efd5 100644
--- a/Klausuren/Sda1/2017winter/Exam/pom.xml
+++ b/Klausuren/Sda1/2017winter/Exam/pom.xml
@@ -13,7 +13,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <oxygenxml.version>20.1.0.0</oxygenxml.version>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
   </properties>
 
   <repositories>
@@ -95,7 +95,7 @@
     <dependency>
       <groupId>de.hdm_stuttgart.mi.exam</groupId>
       <artifactId>unitmarking</artifactId>
-      <version>0.9</version>
+      <version>1.0</version>
     </dependency>
 
   </dependencies>
diff --git a/Klausuren/Sda1/2017winter/Exam/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2017winter/Exam/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2017winter/Exam/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2017winter/Exam/src/main/resources/xml.xsd b/Klausuren/Sda1/2017winter/Exam/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2017winter/Exam/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java b/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
index 09fc8a216..7d8fe57f1 100644
--- a/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
+++ b/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
@@ -1,26 +1,91 @@
 package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
 
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
 import org.junit.Assert;
 import org.junit.Test;
 
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
 /**
  * Unit test for an XML instance set.
  */
-@SuppressWarnings({"UnusedDeclaration", "static-method"})
 public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-   @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise =
-    		   new InstanceSetEvaluation("SchemaTest", "Schema/fs.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
-}
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_0100valid_minimum() {
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0122invalid_inodeString() {
+    xmlTestSupport.assertInvalid("0122invalid_inodeString.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0125invalid_missingName() {
+    xmlTestSupport.assertInvalid("0125invalid_missingName.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0130invalid_missingInode() {
+    xmlTestSupport.assertInvalid("0130invalid_missingInode.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0135invalid_missingTarget() {
+    xmlTestSupport.assertInvalid("0135invalid_missingTarget.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0137invalid_targetNoexist() {
+    xmlTestSupport.assertInvalid("0137invalid_targetNoexist.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0140invalid_duplicateObjectName() {
+    xmlTestSupport.assertInvalid("0140invalid_duplicateObjectName.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0160invalid_duplicateInode() {
+    xmlTestSupport.assertInvalid("0160invalid_duplicateInode.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0165invalid_uniqueComponentsOrder() {
+    xmlTestSupport.assertInvalid("0165invalid_uniqueComponentsOrder.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0200invalid_hierarchyDuplicateInode() {
+    xmlTestSupport.assertInvalid("0200invalid_hierarchyDuplicateInode.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0220invalid_hierarchyDuplicateName() {
+    xmlTestSupport.assertInvalid("0220invalid_hierarchyDuplicateName.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0300invalid_hierarchyReference() {
+    xmlTestSupport.assertInvalid("0300invalid_hierarchyReference.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0320invalid_hierarchyOrder() {
+    xmlTestSupport.assertInvalid("0320invalid_hierarchyOrder.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java b/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
new file mode 100644
index 000000000..f58caaab4
--- /dev/null
+++ b/Klausuren/Sda1/2017winter/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
@@ -0,0 +1,22 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec(
+                "Exercise 1",
+                SchemaTest.class
+        );
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2017winter/Solve/pom.xml b/Klausuren/Sda1/2017winter/Solve/pom.xml
index 8c42d2244..13114c78d 100644
--- a/Klausuren/Sda1/2017winter/Solve/pom.xml
+++ b/Klausuren/Sda1/2017winter/Solve/pom.xml
@@ -13,7 +13,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <oxygenxml.version>20.1.0.0</oxygenxml.version>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
   </properties>
 
   <repositories>
@@ -95,7 +95,7 @@
     <dependency>
       <groupId>de.hdm_stuttgart.mi.exam</groupId>
       <artifactId>unitmarking</artifactId>
-      <version>0.9</version>
+      <version>1.0</version>
     </dependency>
 
   </dependencies>
diff --git a/Klausuren/Sda1/2017winter/Solve/src/main/resources/XMLSchema.xsd b/Klausuren/Sda1/2017winter/Solve/src/main/resources/XMLSchema.xsd
new file mode 100644
index 000000000..89829f137
--- /dev/null
+++ b/Klausuren/Sda1/2017winter/Solve/src/main/resources/XMLSchema.xsd
@@ -0,0 +1,2471 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<xsd:schema targetNamespace="http://www.w3.org/2001/XMLSchema"
+            blockDefault="#all" elementFormDefault="qualified" version="1.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="EN"
+            xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xsd:annotation>
+  <xsd:documentation>
+    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
+    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
+  </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+   The schema corresponding to this document is normative,
+   with respect to the syntactic constraints it expresses in the
+   XML Schema language.  The documentation (within &lt;documentation> elements)
+   below, is not normative, but rather highlights important aspects of
+   the W3C Recommendation of which this is a part</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+   <xsd:documentation>
+   The simpleType element and all of its members are defined
+      towards the end of this schema document</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd">
+   <xsd:annotation>
+     <xsd:documentation>
+       Get access to the xml: attribute groups for xml:lang
+       as declared on 'schema' and 'documentation' below
+     </xsd:documentation>
+   </xsd:annotation>
+ </xsd:import>
+
+ <xsd:complexType name="openAttrs">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by almost all schema types
+       to allow attributes from other namespaces to be
+       added to user schemas.
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:restriction base="xsd:anyType">
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+     </xsd:restriction>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="annotated">
+   <xsd:annotation>
+     <xsd:documentation>
+       This type is extended by all types which allow annotation
+       other than &lt;schema&gt; itself
+     </xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+   </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="schemaTop">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which occur freely at the top level of schemas.
+   All of their types are based on the "annotated" type by extension.</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:group ref="xsd:redefinable"/>
+   <xsd:element ref="xsd:element"/>
+   <xsd:element ref="xsd:attribute"/>
+   <xsd:element ref="xsd:notation"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="redefinable">
+  <xsd:annotation>
+   <xsd:documentation>
+   This group is for the
+   elements which can self-redefine (see &lt;redefine> below).</xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:simpleType"/>
+   <xsd:element ref="xsd:complexType"/>
+   <xsd:element ref="xsd:group"/>
+   <xsd:element ref="xsd:attributeGroup"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="formChoice">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="qualified"/>
+   <xsd:enumeration value="unqualified"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="reducedDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="derivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:reducedDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:simpleType name="typeDerivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:derivationControl">
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+  <xsd:simpleType name="fullDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {extension, restriction, list, union}</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>    
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list itemType="xsd:typeDerivationControl"/>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="schema" id="schema">
+  <xsd:annotation>
+    <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:sequence>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:include"/>
+       <xsd:element ref="xsd:import"/>
+       <xsd:element ref="xsd:redefine"/>
+       <xsd:element ref="xsd:annotation"/>
+      </xsd:choice>
+      <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+       <xsd:group ref="xsd:schemaTop"/>
+       <xsd:element ref="xsd:annotation" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+     </xsd:sequence>
+     <xsd:attribute name="targetNamespace" type="xsd:anyURI"/>
+     <xsd:attribute name="version" type="xsd:token"/>
+     <xsd:attribute name="finalDefault" type="xsd:fullDerivationSet" use="optional" default=""/>
+     <xsd:attribute name="blockDefault" type="xsd:blockSet" use="optional" default=""/>
+     <xsd:attribute name="attributeFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="elementFormDefault" type="xsd:formChoice" use="optional" default="unqualified"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+     <xsd:attribute ref="xml:lang"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:key name="element">
+   <xsd:selector xpath="xsd:element"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="attribute">
+   <xsd:selector xpath="xsd:attribute"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="type">
+   <xsd:selector xpath="xsd:complexType|xsd:simpleType"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="group">
+   <xsd:selector xpath="xsd:group"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="attributeGroup">
+   <xsd:selector xpath="xsd:attributeGroup"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+ 
+  <xsd:key name="notation">
+   <xsd:selector xpath="xsd:notation"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+  <xsd:key name="identityConstraint">
+   <xsd:selector xpath=".//xsd:key|.//xsd:unique|.//xsd:keyref"/>
+   <xsd:field xpath="@name"/>
+  </xsd:key>
+
+ </xsd:element>
+
+ <xsd:simpleType name="allNNI">
+  <xsd:annotation><xsd:documentation>
+   for maxOccurs</xsd:documentation></xsd:annotation>
+  <xsd:union memberTypes="xsd:nonNegativeInteger">
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:NMTOKEN">
+     <xsd:enumeration value="unbounded"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:attributeGroup name="occurs">
+  <xsd:annotation><xsd:documentation>
+   for all particles</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="minOccurs" type="xsd:nonNegativeInteger" use="optional" default="1"/>
+  <xsd:attribute name="maxOccurs" type="xsd:allNNI" use="optional" default="1"/>
+ </xsd:attributeGroup>
+
+ <xsd:attributeGroup name="defRef">
+  <xsd:annotation><xsd:documentation>
+   for element, group and attributeGroup,
+   which both define and reference</xsd:documentation></xsd:annotation>
+  <xsd:attribute name="name" type="xsd:NCName"/>
+  <xsd:attribute name="ref" type="xsd:QName"/>
+ </xsd:attributeGroup>
+
+ <xsd:group name="typeDefParticle">
+  <xsd:annotation>
+    <xsd:documentation>
+   'complexType' uses this</xsd:documentation></xsd:annotation>
+  <xsd:choice>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ 
+
+ <xsd:group name="nestedParticle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:group name="particle">
+  <xsd:choice>
+   <xsd:element name="element" type="xsd:localElement"/>
+   <xsd:element name="group" type="xsd:groupRef"/>
+   <xsd:element ref="xsd:all"/>
+   <xsd:element ref="xsd:choice"/>
+   <xsd:element ref="xsd:sequence"/>
+   <xsd:element ref="xsd:any"/>
+  </xsd:choice>
+ </xsd:group>
+ 
+ <xsd:complexType name="attribute">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="use" use="optional" default="optional">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="prohibited"/>
+       <xsd:enumeration value="optional"/>
+       <xsd:enumeration value="required"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelAttribute">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attribute">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:element name="simpleType" minOccurs="0" type="xsd:localSimpleType"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="use" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="attrDecls">
+  <xsd:sequence>
+   <xsd:choice minOccurs="0" maxOccurs="unbounded">
+    <xsd:element name="attribute" type="xsd:attribute"/>
+    <xsd:element name="attributeGroup" type="xsd:attributeGroupRef"/>
+   </xsd:choice>
+   <xsd:element ref="xsd:anyAttribute" minOccurs="0"/>
+  </xsd:sequence>
+ </xsd:group>
+
+ <xsd:element name="anyAttribute" type="xsd:wildcard" id="anyAttribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:group name="complexTypeModel">
+  <xsd:choice>
+      <xsd:element ref="xsd:simpleContent"/>
+      <xsd:element ref="xsd:complexContent"/>
+      <xsd:sequence>
+       <xsd:annotation>
+        <xsd:documentation>
+   This branch is short for
+   &lt;complexContent>
+   &lt;restriction base="xsd:anyType">
+   ...
+   &lt;/restriction>
+   &lt;/complexContent></xsd:documentation>
+       </xsd:annotation>
+       <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+       <xsd:group ref="xsd:attrDecls"/>
+      </xsd:sequence>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:complexType name="complexType" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:complexTypeModel"/>
+    <xsd:attribute name="name" type="xsd:NCName">
+     <xsd:annotation>
+      <xsd:documentation>
+      Will be restricted to required or forbidden</xsd:documentation>
+     </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="mixed" type="xsd:boolean" use="optional" default="false">
+     <xsd:annotation>
+      <xsd:documentation>
+      Not allowed if simpleContent child is chosen.
+      May be overriden by setting on complexContent child.</xsd:documentation>
+    </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:derivationSet"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localComplexType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:complexType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:complexTypeModel"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="block" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="restrictionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:group ref="xsd:typeDefParticle"/>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="complexRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:typeDefParticle"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:complexType name="extensionType">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:group ref="xsd:typeDefParticle" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="base" type="xsd:QName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>       
+ </xsd:complexType>
+
+ <xsd:element name="complexContent" id="complexContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:complexRestrictionType"/>
+      <xsd:element name="extension" type="xsd:extensionType"/>
+     </xsd:choice>     
+     <xsd:attribute name="mixed" type="xsd:boolean">
+      <xsd:annotation>
+       <xsd:documentation>
+       Overrides any setting on complexType parent.</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="simpleRestrictionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:restrictionType">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:annotation>
+       <xsd:documentation>This choice is added simply to
+                   make this a valid restriction per the REC</xsd:documentation>
+      </xsd:annotation>
+      <xsd:group ref="xsd:simpleRestrictionModel"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="simpleExtensionType">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:extensionType">
+    <xsd:sequence>
+     <xsd:annotation>
+      <xsd:documentation>
+      No typeDefParticle group reference</xsd:documentation>
+     </xsd:annotation>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="simpleContent" id="simpleContent">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:choice>
+      <xsd:element name="restriction" type="xsd:simpleRestrictionType"/>
+      <xsd:element name="extension" type="xsd:simpleExtensionType"/>
+     </xsd:choice>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+ 
+ <xsd:element name="complexType" type="xsd:topLevelComplexType" id="complexType">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+  </xsd:annotation>
+ </xsd:element>
+
+
+  <xsd:simpleType name="blockSet">
+   <xsd:annotation>
+    <xsd:documentation>
+    A utility type, not for public use</xsd:documentation>
+    <xsd:documentation>
+    #all or (possibly empty) subset of {substitution, extension,
+    restriction}</xsd:documentation>
+   </xsd:annotation>
+   <xsd:union>
+    <xsd:simpleType>    
+     <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="#all"/>
+     </xsd:restriction>
+    </xsd:simpleType>
+    <xsd:simpleType>
+     <xsd:list>
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:derivationControl">
+        <xsd:enumeration value="extension"/>
+        <xsd:enumeration value="restriction"/>
+        <xsd:enumeration value="substitution"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:list>
+    </xsd:simpleType>
+   </xsd:union>  
+  </xsd:simpleType>
+
+ <xsd:complexType name="element" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   The element element can be used either
+   at the top level to define an element-type binding globally,
+   or within a content model to either reference a globally-defined
+   element or type or declare an element-type binding locally.
+   The ref form is not allowed at the top level.</xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attribute name="type" type="xsd:QName"/>
+    <xsd:attribute name="substitutionGroup" type="xsd:QName"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+    <xsd:attribute name="default" type="xsd:string"/>
+    <xsd:attribute name="fixed" type="xsd:string"/>
+    <xsd:attribute name="nillable" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="abstract" type="xsd:boolean" use="optional" default="false"/>
+    <xsd:attribute name="final" type="xsd:derivationSet"/>
+    <xsd:attribute name="block" type="xsd:blockSet"/>
+    <xsd:attribute name="form" type="xsd:formChoice"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="topLevelElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="form" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="localElement">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:element">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="substitutionGroup" use="prohibited"/>
+    <xsd:attribute name="final" use="prohibited"/>
+    <xsd:attribute name="abstract" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="element" type="xsd:topLevelElement" id="element">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="group" abstract="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for explicit groups, named top-level groups and
+   group references</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:particle" minOccurs="0" maxOccurs="unbounded"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+    <xsd:attributeGroup ref="xsd:occurs"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="realGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0" maxOccurs="1">
+      <xsd:element ref="xsd:all"/>
+      <xsd:element ref="xsd:choice"/>
+      <xsd:element ref="xsd:sequence"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="namedGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="1" maxOccurs="1">
+      <xsd:element name="all">
+       <xsd:complexType>
+        <xsd:complexContent>
+         <xsd:restriction base="xsd:all">
+          <xsd:group ref="xsd:allModel"/>
+          <xsd:attribute name="minOccurs" use="prohibited"/>
+          <xsd:attribute name="maxOccurs" use="prohibited"/>
+          <xsd:anyAttribute namespace="##other" processContents="lax"/>
+         </xsd:restriction>
+        </xsd:complexContent>
+       </xsd:complexType>
+      </xsd:element>
+      <xsd:element name="choice" type="xsd:simpleExplicitGroup"/>
+      <xsd:element name="sequence" type="xsd:simpleExplicitGroup"/>
+     </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="groupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:realGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="explicitGroup">
+  <xsd:annotation>
+   <xsd:documentation>
+   group type for the three kinds of group</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:group">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="prohibited"/>
+    <xsd:attribute name="ref" type="xsd:QName" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="simpleExplicitGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:explicitGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="prohibited"/>
+    <xsd:attribute name="maxOccurs" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:group name="allModel">
+  <xsd:sequence>
+      <xsd:element ref="xsd:annotation" minOccurs="0"/>
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:annotation>
+        <xsd:documentation>This choice with min/max is here to
+                          avoid a pblm with the Elt:All/Choice/Seq
+                          Particle derivation constraint</xsd:documentation>
+       </xsd:annotation>
+       <xsd:element name="element" type="xsd:narrowMaxMin"/>
+      </xsd:choice>
+     </xsd:sequence>
+ </xsd:group>
+ 
+ 
+ <xsd:complexType name="narrowMaxMin">
+  <xsd:annotation>
+   <xsd:documentation>restricted max/min</xsd:documentation>
+  </xsd:annotation>
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:localElement">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:choice minOccurs="0">
+      <xsd:element name="simpleType" type="xsd:localSimpleType"/>
+      <xsd:element name="complexType" type="xsd:localComplexType"/>
+     </xsd:choice>
+     <xsd:group ref="xsd:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="minOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:nonNegativeInteger">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:attribute name="maxOccurs" use="optional" default="1">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:allNNI">
+       <xsd:enumeration value="0"/>
+       <xsd:enumeration value="1"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:complexType name="all">
+   <xsd:annotation>
+    <xsd:documentation>
+   Only elements allowed inside</xsd:documentation>
+   </xsd:annotation>
+   <xsd:complexContent>
+    <xsd:restriction base="xsd:explicitGroup">
+     <xsd:group ref="xsd:allModel"/>
+     <xsd:attribute name="minOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:nonNegativeInteger">
+        <xsd:enumeration value="0"/>
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:attribute name="maxOccurs" use="optional" default="1">
+      <xsd:simpleType>
+       <xsd:restriction base="xsd:allNNI">
+        <xsd:enumeration value="1"/>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+     <xsd:anyAttribute namespace="##other" processContents="lax"/>
+    </xsd:restriction>
+   </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:element name="all" id="all" type="xsd:all">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="choice" type="xsd:explicitGroup" id="choice">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="sequence" type="xsd:explicitGroup" id="sequence">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="group" type="xsd:namedGroup" id="group">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="wildcard">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:attribute name="namespace" type="xsd:namespaceList" use="optional" default="##any"/>
+    <xsd:attribute name="processContents" use="optional" default="strict">
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+       <xsd:enumeration value="skip"/>
+       <xsd:enumeration value="lax"/>
+       <xsd:enumeration value="strict"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="any" id="any">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:wildcard">
+     <xsd:attributeGroup ref="xsd:occurs"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+  <xsd:annotation>
+   <xsd:documentation>
+   simple type for the value of the 'namespace' attr of
+   'any' and 'anyAttribute'</xsd:documentation>
+  </xsd:annotation>
+  <xsd:annotation>
+   <xsd:documentation>
+   Value is
+              ##any      - - any non-conflicting WFXML/attribute at all
+
+              ##other    - - any non-conflicting WFXML/attribute from
+                              namespace other than targetNS
+
+              ##local    - - any unqualified non-conflicting WFXML/attribute 
+
+              one or     - - any non-conflicting WFXML/attribute from
+              more URI        the listed namespaces
+              references
+              (space separated)
+
+    ##targetNamespace or ##local may appear in the above list, to
+        refer to the targetNamespace of the enclosing
+        schema or an absent targetNamespace respectively</xsd:documentation>
+  </xsd:annotation>
+
+ <xsd:simpleType name="namespaceList">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="##any"/>
+     <xsd:enumeration value="##other"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:union memberTypes="xsd:anyURI">
+       <xsd:simpleType>
+        <xsd:restriction base="xsd:token">
+         <xsd:enumeration value="##targetNamespace"/>
+         <xsd:enumeration value="##local"/>
+        </xsd:restriction>
+       </xsd:simpleType>
+      </xsd:union>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+ <xsd:element name="attribute" type="xsd:topLevelAttribute" id="attribute">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:complexType name="attributeGroup" abstract="true">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:group ref="xsd:attrDecls"/>
+    <xsd:attributeGroup ref="xsd:defRef"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ 
+ <xsd:complexType name="namedAttributeGroup">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+     <xsd:group ref="xsd:attrDecls"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" use="required" type="xsd:NCName"/>
+    <xsd:attribute name="ref" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="attributeGroupRef">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:attributeGroup">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="ref" use="required" type="xsd:QName"/>
+    <xsd:attribute name="name" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:element name="attributeGroup" type="xsd:namedAttributeGroup" id="attributeGroup">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+  </xsd:annotation>
+ </xsd:element>
+
+ <xsd:element name="include" id="include">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="redefine" id="redefine">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:openAttrs">
+     <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="xsd:annotation"/>
+      <xsd:group ref="xsd:redefinable"/>
+     </xsd:choice>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI" use="required"/>
+     <xsd:attribute name="id" type="xsd:ID"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="import" id="import">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="namespace" type="xsd:anyURI"/>
+     <xsd:attribute name="schemaLocation" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="selector" id="selector">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in selectors</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the following EBNF:
+          Selector    ::=    Path ( '|' Path )*  
+          Path    ::=    ('.//')? Step ( '/' Step )*  
+          Step    ::=    '.' | NameTest  
+          NameTest    ::=    QName | '*' | NCName ':' '*'  
+                           child:: is also allowed
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="field" id="field">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+  </xsd:annotation>
+  <xsd:complexType>
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="xpath" use="required">
+      <xsd:simpleType>
+       <xsd:annotation>
+        <xsd:documentation>A subset of XPath expressions for use
+in fields</xsd:documentation>
+        <xsd:documentation>A utility type, not for public
+use</xsd:documentation>
+       </xsd:annotation>
+       <xsd:restriction base="xsd:token">
+        <xsd:annotation>
+         <xsd:documentation>The following pattern is intended to allow XPath
+                           expressions per the same EBNF as for selector,
+                           with the following change:
+          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
+         </xsd:documentation>
+        </xsd:annotation>
+        <xsd:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+        </xsd:pattern>
+       </xsd:restriction>
+      </xsd:simpleType>
+     </xsd:attribute>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:complexType name="keybase">
+  <xsd:complexContent>
+   <xsd:extension base="xsd:annotated">
+    <xsd:sequence>
+     <xsd:element ref="xsd:selector"/>
+     <xsd:element ref="xsd:field" minOccurs="1" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+   </xsd:extension>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:group name="identityConstraint">
+  <xsd:annotation>
+   <xsd:documentation>The three kinds of identity constraints, all with
+                     type of or derived from 'keybase'.
+   </xsd:documentation>
+  </xsd:annotation>
+  <xsd:choice>
+   <xsd:element ref="xsd:unique"/>
+   <xsd:element ref="xsd:key"/>
+   <xsd:element ref="xsd:keyref"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:element name="unique" type="xsd:keybase" id="unique">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="key" type="xsd:keybase" id="key">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+  </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="keyref" id="keyref">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:keybase">
+     <xsd:attribute name="refer" type="xsd:QName" use="required"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="notation" id="notation">
+  <xsd:annotation>
+   <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+  </xsd:annotation>
+  <xsd:complexType>
+   <xsd:complexContent>
+    <xsd:extension base="xsd:annotated">
+     <xsd:attribute name="name" type="xsd:NCName" use="required"/>
+     <xsd:attribute name="public" type="xsd:public"/>
+     <xsd:attribute name="system" type="xsd:anyURI"/>
+    </xsd:extension>
+   </xsd:complexContent>
+  </xsd:complexType>
+ </xsd:element>
+
+ <xsd:simpleType name="public">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+   <xsd:documentation>
+   A public identifier, per ISO 8879</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+
+ <xsd:element name="appinfo" id="appinfo">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="documentation" id="documentation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+   </xsd:annotation>
+   <xsd:complexType mixed="true">
+    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+     <xsd:any processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="source" type="xsd:anyURI"/>
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="annotation" id="annotation">
+   <xsd:annotation>
+     <xsd:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+   </xsd:annotation>
+   <xsd:complexType>
+    <xsd:complexContent>
+     <xsd:extension base="xsd:openAttrs">
+      <xsd:choice minOccurs="0" maxOccurs="unbounded">
+       <xsd:element ref="xsd:appinfo"/>
+       <xsd:element ref="xsd:documentation"/>
+      </xsd:choice>
+      <xsd:attribute name="id" type="xsd:ID"/>
+     </xsd:extension>
+    </xsd:complexContent>
+   </xsd:complexType>
+ </xsd:element>
+
+ <xsd:annotation>
+  <xsd:documentation>
+   notations for use within XML Schema schemas</xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xsd:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+  
+ <xsd:complexType name="anyType" mixed="true">
+  <xsd:annotation>
+   <xsd:documentation>
+   Not the real urType, but as close an approximation as we can
+   get in the XML representation</xsd:documentation>
+  </xsd:annotation>
+  <xsd:sequence>
+   <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+  </xsd:sequence>
+  <xsd:anyAttribute processContents="lax"/>
+ </xsd:complexType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      First the built-in primitive datatypes.  These definitions are for
+      information only, the real built-in definitions are magic.
+    </xsd:documentation>
+
+    <xsd:documentation>
+      For each built-in datatype in this schema (both primitive and
+      derived) can be uniquely addressed via a URI constructed
+      as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype
+
+      For example, to address the int datatype, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int
+
+      Additionally, each facet definition element can be uniquely
+      addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the facet
+
+      For example, to address the maxInclusive facet, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#maxInclusive
+
+      Additionally, each facet usage in a built-in datatype definition
+      can be uniquely addressed via a URI constructed as follows:
+        1) the base URI is the URI of the XML Schema namespace
+        2) the fragment identifier is the name of the datatype, followed
+           by a period (".") followed by the name of the facet
+
+      For example, to address the usage of the maxInclusive facet in
+      the definition of int, the URI is:
+
+        http://www.w3.org/2001/XMLSchema#int.maxInclusive
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="string" id="string">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#string"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="preserve" id="string.preserve"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="boolean" id="boolean">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="boolean.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="float" id="float">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#float"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="float.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="double" id="double">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#double"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="double.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="decimal" id="decimal">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="totalDigits"/>
+        <hfp:hasFacet name="fractionDigits"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="total"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="true"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="decimal.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="duration" id="duration">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="duration.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="dateTime" id="dateTime">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="dateTime.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="time" id="time">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#time"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="time.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="date" id="date">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#date"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="date.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYearMonth" id="gYearMonth">
+   <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYearMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gYear" id="gYear">
+    <xsd:annotation>
+    <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="gYear.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonthDay" id="gMonthDay">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+       <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse" fixed="true"
+                id="gMonthDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="gDay" id="gDay">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gDay.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="gMonth" id="gMonth">
+    <xsd:annotation>
+  <xsd:appinfo>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="maxInclusive"/>
+        <hfp:hasFacet name="maxExclusive"/>
+        <hfp:hasFacet name="minInclusive"/>
+        <hfp:hasFacet name="minExclusive"/>
+        <hfp:hasProperty name="ordered" value="partial"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+         <xsd:whiteSpace value="collapse"  fixed="true"
+                id="gMonth.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="hexBinary" id="hexBinary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="hexBinary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+ <xsd:simpleType name="base64Binary" id="base64Binary">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse" fixed="true"
+        id="base64Binary.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="anyURI" id="anyURI">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="anyURI.whiteSpace"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="QName" id="QName">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="QName.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="NOTATION" id="NOTATION">
+    <xsd:annotation>
+        <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+      <xsd:documentation>
+        NOTATION cannot be used directly in a schema; rather a type
+        must be derived from it by specifying at least one enumeration
+        facet whose value is the name of a NOTATION declared in the
+        schema.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:anySimpleType">
+      <xsd:whiteSpace value="collapse"  fixed="true"
+        id="NOTATION.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      Now the derived primitive types
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:simpleType name="normalizedString" id="normalizedString">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:whiteSpace value="replace"
+        id="normalizedString.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="token" id="token">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#token"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:normalizedString">
+      <xsd:whiteSpace value="collapse" id="token.whiteSpace"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="language" id="language">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#language"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern
+        value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+                id="language.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.ietf.org/rfc/rfc3066.txt">
+            pattern specifies the content of section 2.12 of XML 1.0e2
+            and RFC 3066 (Revised version of RFC 1766).
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="IDREFS" id="IDREFS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:IDREF"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="IDREFS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="ENTITIES" id="ENTITIES">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:ENTITY"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="ENTITIES.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKEN" id="NMTOKEN">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\c+" id="NMTOKEN.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+            pattern matches production 7 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NMTOKENS" id="NMTOKENS">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasFacet name="length"/>
+        <hfp:hasFacet name="minLength"/>
+        <hfp:hasFacet name="maxLength"/>
+        <hfp:hasFacet name="enumeration"/>
+        <hfp:hasFacet name="whiteSpace"/>
+        <hfp:hasFacet name="pattern"/>
+        <hfp:hasProperty name="ordered" value="false"/>
+        <hfp:hasProperty name="bounded" value="false"/>
+        <hfp:hasProperty name="cardinality"
+                value="countably infinite"/>
+        <hfp:hasProperty name="numeric" value="false"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+    </xsd:annotation>
+    <xsd:restriction>
+      <xsd:simpleType>
+        <xsd:list itemType="xsd:NMTOKEN"/>
+      </xsd:simpleType>
+        <xsd:minLength value="1" id="NMTOKENS.minLength"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="Name" id="Name">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\i\c*" id="Name.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                        source="http://www.w3.org/TR/REC-xml#NT-Name">
+            pattern matches production 5 from the XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="NCName" id="NCName">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:Name">
+      <xsd:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+        <xsd:annotation>
+          <xsd:documentation
+                source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+            pattern matches production 4 from the Namespaces in XML spec
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:pattern>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+   <xsd:simpleType name="ID" id="ID">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="IDREF" id="IDREF">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+   <xsd:simpleType name="ENTITY" id="ENTITY">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NCName"/>
+   </xsd:simpleType>
+
+  <xsd:simpleType name="integer" id="integer">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:decimal">
+      <xsd:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+      <xsd:pattern value="[\-+]?[0-9]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="negativeInteger" id="negativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonPositiveInteger">
+      <xsd:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="long" id="long">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#long"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+      <xsd:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="int" id="int">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#int"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:long">
+      <xsd:minInclusive value="-2147483648" id="int.minInclusive"/>
+      <xsd:maxInclusive value="2147483647" id="int.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="short" id="short">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#short"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:int">
+      <xsd:minInclusive value="-32768" id="short.minInclusive"/>
+      <xsd:maxInclusive value="32767" id="short.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="byte" id="byte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:short">
+      <xsd:minInclusive value="-128" id="byte.minInclusive"/>
+      <xsd:maxInclusive value="127" id="byte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:integer">
+      <xsd:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedLong" id="unsignedLong">
+    <xsd:annotation>
+      <xsd:appinfo>
+        <hfp:hasProperty name="bounded" value="true"/>
+        <hfp:hasProperty name="cardinality" value="finite"/>
+      </xsd:appinfo>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:maxInclusive value="18446744073709551615"
+        id="unsignedLong.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedInt" id="unsignedInt">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedLong">
+      <xsd:maxInclusive value="4294967295"
+        id="unsignedInt.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedShort" id="unsignedShort">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedInt">
+      <xsd:maxInclusive value="65535"
+        id="unsignedShort.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="unsignedByte" id="unsignedByte">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:unsignedShort">
+      <xsd:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="positiveInteger" id="positiveInteger">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:nonNegativeInteger">
+      <xsd:minInclusive value="1" id="positiveInteger.minInclusive"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+ <xsd:simpleType name="derivationControl">
+  <xsd:annotation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:restriction base="xsd:NMTOKEN">
+   <xsd:enumeration value="substitution"/>
+   <xsd:enumeration value="extension"/>
+   <xsd:enumeration value="restriction"/>
+   <xsd:enumeration value="list"/>
+   <xsd:enumeration value="union"/>
+  </xsd:restriction>
+ </xsd:simpleType>
+
+ <xsd:group name="simpleDerivation">
+  <xsd:choice>
+    <xsd:element ref="xsd:restriction"/>
+    <xsd:element ref="xsd:list"/>
+    <xsd:element ref="xsd:union"/>
+  </xsd:choice>
+ </xsd:group>
+
+ <xsd:simpleType name="simpleDerivationSet">
+  <xsd:annotation>
+   <xsd:documentation>
+   #all or (possibly empty) subset of {restriction, union, list}
+   </xsd:documentation>
+   <xsd:documentation>
+   A utility type, not for public use</xsd:documentation>
+  </xsd:annotation>
+  <xsd:union>
+   <xsd:simpleType>
+    <xsd:restriction base="xsd:token">
+     <xsd:enumeration value="#all"/>
+    </xsd:restriction>
+   </xsd:simpleType>
+   <xsd:simpleType>
+    <xsd:list>
+     <xsd:simpleType>
+      <xsd:restriction base="xsd:derivationControl">
+       <xsd:enumeration value="list"/>
+       <xsd:enumeration value="union"/>
+       <xsd:enumeration value="restriction"/>
+      </xsd:restriction>
+     </xsd:simpleType>
+    </xsd:list>
+   </xsd:simpleType>
+  </xsd:union>
+ </xsd:simpleType>
+
+  <xsd:complexType name="simpleType" abstract="true">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:group ref="xsd:simpleDerivation"/>
+        <xsd:attribute name="final" type="xsd:simpleDerivationSet"/>
+        <xsd:attribute name="name" type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Can be restricted to required or forbidden
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="topLevelSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="required"
+             type="xsd:NCName">
+          <xsd:annotation>
+            <xsd:documentation>
+              Required at the top level
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:complexType name="localSimpleType">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:simpleType">
+        <xsd:sequence>
+          <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          <xsd:group ref="xsd:simpleDerivation"/>
+        </xsd:sequence>
+        <xsd:attribute name="name" use="prohibited">
+          <xsd:annotation>
+            <xsd:documentation>
+              Forbidden when nested
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:attribute>
+        <xsd:attribute name="final" use="prohibited"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="simpleType" type="xsd:topLevelSimpleType" id="simpleType">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:group name="facets">
+   <xsd:annotation>
+    <xsd:documentation>
+       We should use a substitution group for facets, but
+       that's ruled out because it would allow users to
+       add their own, which we're not ready for yet.
+    </xsd:documentation>
+   </xsd:annotation>
+   <xsd:choice>
+    <xsd:element ref="xsd:minExclusive"/>
+    <xsd:element ref="xsd:minInclusive"/>
+    <xsd:element ref="xsd:maxExclusive"/>
+    <xsd:element ref="xsd:maxInclusive"/>
+    <xsd:element ref="xsd:totalDigits"/>
+    <xsd:element ref="xsd:fractionDigits"/>
+    <xsd:element ref="xsd:length"/>
+    <xsd:element ref="xsd:minLength"/>
+    <xsd:element ref="xsd:maxLength"/>
+    <xsd:element ref="xsd:enumeration"/>
+    <xsd:element ref="xsd:whiteSpace"/>
+    <xsd:element ref="xsd:pattern"/>
+   </xsd:choice>
+  </xsd:group>
+
+  <xsd:group name="simpleRestrictionModel">
+   <xsd:sequence>
+    <xsd:element name="simpleType" type="xsd:localSimpleType" minOccurs="0"/>
+    <xsd:group ref="xsd:facets" minOccurs="0" maxOccurs="unbounded"/>
+   </xsd:sequence>
+  </xsd:group>
+
+  <xsd:element name="restriction" id="restriction">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+          base attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+         <xsd:group ref="xsd:simpleRestrictionModel"/>
+         <xsd:attribute name="base" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="list" id="list">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-list">
+          itemType attribute and simpleType child are mutually
+          exclusive, but one or other is required
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="itemType" type="xsd:QName" use="optional"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="union" id="union">
+   <xsd:complexType>
+    <xsd:annotation>
+      <xsd:documentation
+                source="http://www.w3.org/TR/xmlschema-2/#element-union">
+          memberTypes attribute must be non-empty or there must be
+          at least one simpleType child
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:complexContent>
+        <xsd:extension base="xsd:annotated">
+          <xsd:sequence>
+            <xsd:element name="simpleType" type="xsd:localSimpleType"
+                minOccurs="0" maxOccurs="unbounded"/>
+          </xsd:sequence>
+          <xsd:attribute name="memberTypes" use="optional">
+            <xsd:simpleType>
+              <xsd:list itemType="xsd:QName"/>
+            </xsd:simpleType>
+          </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="facet">
+    <xsd:complexContent>
+      <xsd:extension base="xsd:annotated">
+        <xsd:attribute name="value" use="required"/>
+        <xsd:attribute name="fixed" type="xsd:boolean" use="optional"
+                      default="false"/>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+ <xsd:complexType name="noFixedFacet">
+  <xsd:complexContent>
+   <xsd:restriction base="xsd:facet">
+    <xsd:sequence>
+     <xsd:element ref="xsd:annotation" minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="fixed" use="prohibited"/>
+    <xsd:anyAttribute namespace="##other" processContents="lax"/>
+   </xsd:restriction>
+  </xsd:complexContent>
+ </xsd:complexType>
+
+  <xsd:element name="minExclusive" id="minExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minInclusive" id="minInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="maxExclusive" id="maxExclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxInclusive" id="maxInclusive" type="xsd:facet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:complexType name="numFacet">
+    <xsd:complexContent>
+      <xsd:restriction base="xsd:facet">
+       <xsd:sequence>
+         <xsd:element ref="xsd:annotation" minOccurs="0"/>
+       </xsd:sequence>
+       <xsd:attribute name="value" type="xsd:nonNegativeInteger" use="required"/>
+       <xsd:anyAttribute namespace="##other" processContents="lax"/>
+      </xsd:restriction>
+    </xsd:complexContent>
+  </xsd:complexType>
+
+  <xsd:element name="totalDigits" id="totalDigits">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:numFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:positiveInteger" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="fractionDigits" id="fractionDigits" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="length" id="length" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="minLength" id="minLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+    </xsd:annotation>
+  </xsd:element>
+  <xsd:element name="maxLength" id="maxLength" type="xsd:numFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="enumeration" id="enumeration" type="xsd:noFixedFacet">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+    </xsd:annotation>
+  </xsd:element>
+
+  <xsd:element name="whiteSpace" id="whiteSpace">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:facet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" use="required">
+            <xsd:simpleType>
+              <xsd:restriction base="xsd:NMTOKEN">
+                <xsd:enumeration value="preserve"/>
+                <xsd:enumeration value="replace"/>
+                <xsd:enumeration value="collapse"/>
+              </xsd:restriction>
+            </xsd:simpleType>
+          </xsd:attribute>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="pattern" id="pattern">
+    <xsd:annotation>
+      <xsd:documentation
+        source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+    </xsd:annotation>
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:restriction base="xsd:noFixedFacet">
+          <xsd:sequence>
+            <xsd:element ref="xsd:annotation" minOccurs="0"/>
+          </xsd:sequence>
+          <xsd:attribute name="value" type="xsd:string" use="required"/>
+         <xsd:anyAttribute namespace="##other" processContents="lax"/>
+        </xsd:restriction>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+</xsd:schema>
diff --git a/Klausuren/Sda1/2017winter/Solve/src/main/resources/xml.xsd b/Klausuren/Sda1/2017winter/Solve/src/main/resources/xml.xsd
new file mode 100644
index 000000000..e60e8c598
--- /dev/null
+++ b/Klausuren/Sda1/2017winter/Solve/src/main/resources/xml.xsd
@@ -0,0 +1,286 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace"
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns   ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <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>
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       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.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </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:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      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:
+     </p>
+     <blockquote>
+       <p>
+	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".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema . . .>
+           . . .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type . . .>
+           . . .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+     <p>
+      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, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
+
diff --git a/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java b/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
index 09fc8a216..7d8fe57f1 100644
--- a/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
+++ b/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/SchemaTest.java
@@ -1,26 +1,91 @@
 package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
 
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.mi.exam.unitmarking.xml.XmlTestSupport;
 import org.junit.Assert;
 import org.junit.Test;
 
-import de.hdm_stuttgart.mi.unitmarking.xsd.InstanceSetEvaluation;
-
 /**
  * Unit test for an XML instance set.
  */
-@SuppressWarnings({"UnusedDeclaration", "static-method"})
 public class SchemaTest {
-    /**
-     * Testing a suite of XML instances.
-     */
-   @Test
-    public void testXmlInstanceSet() {
-       
-       final InstanceSetEvaluation ise =
-    		   new InstanceSetEvaluation("SchemaTest", "Schema/fs.xsd");
-       
-       System.out.println(ise.getMessages());
-
-       Assert.assertTrue(ise.getErrorMessages(), ise.allTestsSucceeded);
-    }
-}
+
+  private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
+
+  @Test @Marking(points = 1)
+  public void test_0100valid_minimum() {
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0122invalid_inodeString() {
+    xmlTestSupport.assertInvalid("0122invalid_inodeString.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0125invalid_missingName() {
+    xmlTestSupport.assertInvalid("0125invalid_missingName.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0130invalid_missingInode() {
+    xmlTestSupport.assertInvalid("0130invalid_missingInode.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0135invalid_missingTarget() {
+    xmlTestSupport.assertInvalid("0135invalid_missingTarget.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0137invalid_targetNoexist() {
+    xmlTestSupport.assertInvalid("0137invalid_targetNoexist.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0140invalid_duplicateObjectName() {
+    xmlTestSupport.assertInvalid("0140invalid_duplicateObjectName.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0160invalid_duplicateInode() {
+    xmlTestSupport.assertInvalid("0160invalid_duplicateInode.xml");
+    xmlTestSupport.assertValid("0100valid_minimum.xml");
+  }
+
+  @Test @Marking(points = 2)
+  public void test_0165invalid_uniqueComponentsOrder() {
+    xmlTestSupport.assertInvalid("0165invalid_uniqueComponentsOrder.xml");
+    xmlTestSupport.assertValid("0120valid_uniqueComponents.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0200invalid_hierarchyDuplicateInode() {
+    xmlTestSupport.assertInvalid("0200invalid_hierarchyDuplicateInode.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0220invalid_hierarchyDuplicateName() {
+    xmlTestSupport.assertInvalid("0220invalid_hierarchyDuplicateName.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0300invalid_hierarchyReference() {
+    xmlTestSupport.assertInvalid("0300invalid_hierarchyReference.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+
+  @Test @Marking(points = 3)
+  public void test_0320invalid_hierarchyOrder() {
+    xmlTestSupport.assertInvalid("0320invalid_hierarchyOrder.xml");
+    xmlTestSupport.assertValid("0180valid_hierarchy.xml");
+  }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java b/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
new file mode 100644
index 000000000..f58caaab4
--- /dev/null
+++ b/Klausuren/Sda1/2017winter/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/exam/xsd/test/ShowReachedPoints.java
@@ -0,0 +1,22 @@
+package de.hdm_stuttgart.mi.sda1.exam.xsd.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+/**
+ * Unit test for an XML instance set. CLI by:
+ * java -cp target/solvejpa-0.9-fat-tests.jar org.junit.runner.JUnitCore ShowReachedPoints
+ */
+@SuppressWarnings("static-method")
+public class ShowReachedPoints {
+    /**
+     * Execution reveals the number of reached points.
+     *
+     * @param args Unused
+     */
+    public static void main(String[] args) {
+        RunTests.exec(
+                "Exercise 1",
+                SchemaTest.class
+        );
+    }
+}
\ No newline at end of file
diff --git a/Klausuren/Sda1/2018Summer/Exam/pom.xml b/Klausuren/Sda1/2018Summer/Exam/pom.xml
index d04dc78e2..9dcc18a38 100644
--- a/Klausuren/Sda1/2018Summer/Exam/pom.xml
+++ b/Klausuren/Sda1/2018Summer/Exam/pom.xml
@@ -13,7 +13,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <oxygenxml.version>20.1.0.0</oxygenxml.version>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
   </properties>
 
   <repositories>
diff --git a/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java b/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java
index 34d916add..ef0db0aa8 100644
--- a/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java
+++ b/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java
@@ -15,8 +15,8 @@ public class ShowReachedPoints {
      */
     public static void main(String[] args) {
         RunTests.exec(
-                "Aufgabe 1",
-                Test_SchemaByInstances.class
+                "Exercise 1",
+                TestSchema.class
         );
     }
 }
\ No newline at end of file
diff --git a/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java b/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java
similarity index 98%
rename from Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java
rename to Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java
index 597c70476..e536b8ffd 100644
--- a/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java
+++ b/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java
@@ -9,7 +9,7 @@ import org.junit.runners.MethodSorters;
 
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 @SuppressWarnings({"UnusedDeclaration"})
-public class Test_SchemaByInstances extends ExaminationTestDefaults {
+public class TestSchema extends ExaminationTestDefaults {
 
     private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
 
diff --git a/Klausuren/Sda1/2018Summer/Solve/Doc/exam.xml b/Klausuren/Sda1/2018Summer/Solve/Doc/exam.xml
index 9b3e8c10a..cfb877fd3 100644
--- a/Klausuren/Sda1/2018Summer/Solve/Doc/exam.xml
+++ b/Klausuren/Sda1/2018Summer/Solve/Doc/exam.xml
@@ -161,7 +161,7 @@
 
         <listitem>
           <para><productname>Junit</productname> test execution of
-          <classname>de.hdm_stuttgart.mi.sda1.test.ex1.Test_SchemaByInstances</classname>
+          <classname>de.hdm_stuttgart.mi.sda1.test.ex1.TestSchema</classname>
           triggers validation of instance samples in your
           <filename>SchemaTest</filename> folder.</para>
         </listitem>
diff --git a/Klausuren/Sda1/2018Summer/Solve/pom.xml b/Klausuren/Sda1/2018Summer/Solve/pom.xml
index 00383527d..e5080fb73 100644
--- a/Klausuren/Sda1/2018Summer/Solve/pom.xml
+++ b/Klausuren/Sda1/2018Summer/Solve/pom.xml
@@ -13,7 +13,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <oxygenxml.version>20.1.0.0</oxygenxml.version>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
   </properties>
 
   <repositories>
@@ -160,7 +160,6 @@
           </execution>
         </executions>
       </plugin>
-
     </plugins>
   </build>
-</project>
+</project>
\ No newline at end of file
diff --git a/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java b/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java
index 34d916add..5efc24dfc 100644
--- a/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java
+++ b/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/ShowReachedPoints.java
@@ -16,7 +16,7 @@ public class ShowReachedPoints {
     public static void main(String[] args) {
         RunTests.exec(
                 "Aufgabe 1",
-                Test_SchemaByInstances.class
+                TestSchema.class
         );
     }
 }
\ No newline at end of file
diff --git a/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java b/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java
similarity index 98%
rename from Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java
rename to Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java
index 597c70476..e536b8ffd 100644
--- a/Klausuren/Sda1/2018Summer/Exam/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/Test_SchemaByInstances.java
+++ b/Klausuren/Sda1/2018Summer/Solve/src/test/java/de/hdm_stuttgart/mi/sda1/test/ex1/TestSchema.java
@@ -9,7 +9,7 @@ import org.junit.runners.MethodSorters;
 
 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
 @SuppressWarnings({"UnusedDeclaration"})
-public class Test_SchemaByInstances extends ExaminationTestDefaults {
+public class TestSchema extends ExaminationTestDefaults {
 
     private final XmlTestSupport xmlTestSupport = new XmlTestSupport("SchemaTest");
 
diff --git a/ws/Artifacts/Unitmarking/pom.xml b/ws/Artifacts/Unitmarking/pom.xml
index f0c9504c4..b62ee513c 100644
--- a/ws/Artifacts/Unitmarking/pom.xml
+++ b/ws/Artifacts/Unitmarking/pom.xml
@@ -13,6 +13,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <oxygenxml.version>20.1.0.3</oxygenxml.version>
   </properties>
 
   <distributionManagement>
@@ -22,24 +23,59 @@
     </repository>
   </distributionManagement>
 
+  <repositories>
+
+    <repository>
+      <id>oxygenxml-repo</id>
+      <url>https://maven.mi.hdm-stuttgart.de/nexus/repository/oxygen</url>
+    </repository>
+  </repositories>
+
   <dependencies>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.12</version>
+      <groupId>com.oxygenxml</groupId>
+      <artifactId>oxygen-xercesImpl</artifactId>
+      <version>${oxygenxml.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.oxygenxml</groupId>
+      <artifactId>oxygen</artifactId>
+      <version>${oxygenxml.version}</version>
     </dependency>
 
+    <!-- Still needed to keep oxygenxml happy using legacy logging -->
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.17</version>
+    </dependency>
+
+    <!-- Current log4j -->
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.4</version>
     </dependency>
+
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.4</version>
     </dependency>
 
+    <dependency>
+      <groupId>com.rackspace.eclipse.webtools.sourceediting</groupId>
+      <artifactId>org.eclipse.wst.xml.xpath2.processor</artifactId>
+      <version>2.1.100</version>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+    </dependency>
+
     <dependency>
       <groupId>org.jdom</groupId>
       <artifactId>jdom2</artifactId>
@@ -76,4 +112,4 @@
 
     </plugins>
   </build>
-</project>
+</project>
\ No newline at end of file
diff --git a/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java b/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java
index fdfb70279..ba7f56a76 100644
--- a/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java
+++ b/ws/Artifacts/Unitmarking/src/main/java/de/hdm_stuttgart/mi/exam/unitmarking/xml/XmlTestSupport.java
@@ -7,7 +7,6 @@ import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 import org.xml.sax.helpers.DefaultHandler;
 
-import javax.xml.XMLConstants;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -22,18 +21,20 @@ import java.util.Map;
 
 public class XmlTestSupport {
 
+    /**
+     * <p>The XML Schema namespace as being defined in
+     * https://www.w3.org/TR/xmlschema-1/#Instance_Document_Constructions.</p>
+     */
     static public final String
-            /**
-             * <p>The XML Schema namespace as being defined in
-             * https://www.w3.org/TR/xmlschema-1/#Instance_Document_Constructions.</p>
-             */
-            xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance"
+            xmlns_xsi = "http://www.w3.org/2001/XMLSchema-instance",
             /**
              * <p>The schema reference attribute name, see {@link #xmlns_xsi} for explanation.</p>
              */
-            ,noNamespaceSchemaLocationAttributeName = "noNamespaceSchemaLocation";
+            noNamespaceSchemaLocationAttributeName = "noNamespaceSchemaLocation";
 
-    static private final SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+    // XMLConstants only provides W3C_XML_SCHEMA_NS_URI rather than XSD-1.1;
+    static private final SchemaFactory schemaFactory = SchemaFactory.newInstance(
+        org.apache.xerces.impl.Constants.W3C_XML_SCHEMA11_NS_URI);
     static private final Map<Path, Validator> validator2schema = new HashMap<>();
     private final DocumentBuilder nonValidatingBuilder;
 
@@ -53,6 +54,7 @@ public class XmlTestSupport {
         final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
         factory.setNamespaceAware(true);
         factory.setValidating(false);
+        factory.setXIncludeAware(true);
         DocumentBuilder nonValidatingBuilderTmp = null;
         try {
             nonValidatingBuilderTmp = factory.newDocumentBuilder();
@@ -151,6 +153,9 @@ public class XmlTestSupport {
                     validator2schema.get(schemaPath); // parsing another instance?
             if (null == validator) {
                 validator = schemaFactory.newSchema(schemaPath.toFile()).newValidator();
+                validator.setFeature("http://apache.org/xml/features/validation/schema", true);
+                validator.setFeature("http://apache.org/xml/features/validation/assert-comments-and-pi-checking", true);
+
                 validator2schema.put(schemaPath, validator);
             }
             validator.validate(                               // Re-do parsing: Starting from DOMSource(root)
-- 
GitLab