diff --git a/Doc/Common/snippets.xml b/Doc/Common/snippets.xml
index 1c182a29363857b87f5ddee9a1ffb589f9409fad..69b5e5ea3da9138b1b7f65ff64f0badc8323f404 100644
--- a/Doc/Common/snippets.xml
+++ b/Doc/Common/snippets.xml
@@ -27,7 +27,13 @@
     <figure xml:id="_fig_listing">
       <title/>
 
-      <programlisting language="none"/>
+      <programlisting language="none">http://www.utf8-chartable.de/unicode-utf8-table.pl?start=9472&amp;unicodeinhtml=dec
+ <emphasis role="red">◀──────┐</emphasis>
+        <emphasis role="red">│</emphasis>
+ <emphasis role="red">◀──────┼─┐</emphasis>
+        <emphasis role="red">│ │</emphasis>
+ <emphasis role="red">───────┘ │</emphasis>
+ <emphasis role="red">─────────┘</emphasis></programlisting>
     </figure>
   </section>
 
diff --git a/Doc/Sda1/Ref/Organizer/.gitignore b/Doc/Sda1/Ref/Organizer/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..134c58e3ddb750d6773acea3346708d52f6455ba
--- /dev/null
+++ b/Doc/Sda1/Ref/Organizer/.gitignore
@@ -0,0 +1,6 @@
+*.iml
+.idea
+/target/
+/.settings/
+.classpath
+.project
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/Readme.md b/Doc/Sda1/Ref/Organizer/V01_start/Readme.md
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/Readme.md
rename to Doc/Sda1/Ref/Organizer/V01_start/Readme.md
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/missingEmail.xml b/Doc/Sda1/Ref/Organizer/V01_start/missingEmail.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/missingEmail.xml
rename to Doc/Sda1/Ref/Organizer/V01_start/missingEmail.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/myContacts.xml b/Doc/Sda1/Ref/Organizer/V01_start/myContacts.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/myContacts.xml
rename to Doc/Sda1/Ref/Organizer/V01_start/myContacts.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd b/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/wrongOrder.xml b/Doc/Sda1/Ref/Organizer/V01_start/wrongOrder.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/wrongOrder.xml
rename to Doc/Sda1/Ref/Organizer/V01_start/wrongOrder.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail/email.xml b/Doc/Sda1/Ref/Organizer/V02_optionalEmail/email.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail/email.xml
rename to Doc/Sda1/Ref/Organizer/V02_optionalEmail/email.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail/noEmail.xml b/Doc/Sda1/Ref/Organizer/V02_optionalEmail/noEmail.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail/noEmail.xml
rename to Doc/Sda1/Ref/Organizer/V02_optionalEmail/noEmail.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail/organizer.xsd b/Doc/Sda1/Ref/Organizer/V02_optionalEmail/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V02_optionalEmail/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/contactNoRef.xml b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/contactNoRef.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/contactNoRef.xml
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/contactNoRef.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/contacts.xml b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/contacts.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/contacts.xml
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/contacts.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/contactsNoRef.xml b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/contactsNoRef.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/contactsNoRef.xml
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/contactsNoRef.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/email.xml b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/email.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/email.xml
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/email.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer.svg b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer.svg
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer.svg
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer.svg
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer.svg.marked.svg b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer.svg.marked.svg
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer.svg.marked.svg
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer.svg.marked.svg
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer.xsd b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizerNoRef.xsd b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizerNoRef.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizerNoRef.xsd
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizerNoRef.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer_raw.svg b/Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer_raw.svg
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V03_multipleContacts/organizer_raw.svg
rename to Doc/Sda1/Ref/Organizer/V03_multipleContacts/organizer_raw.svg
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V04_birthdateElement/birthdateElement.xml b/Doc/Sda1/Ref/Organizer/V04_birthdateElement/birthdateElement.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V04_birthdateElement/birthdateElement.xml
rename to Doc/Sda1/Ref/Organizer/V04_birthdateElement/birthdateElement.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V04_birthdateElement/organizer.xsd b/Doc/Sda1/Ref/Organizer/V04_birthdateElement/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V04_birthdateElement/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V04_birthdateElement/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/birthdateElement.xml b/Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/birthdateElement.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/birthdateElement.xml
rename to Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/birthdateElement.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/invalidBirthdates.xml b/Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/invalidBirthdates.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/invalidBirthdates.xml
rename to Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/invalidBirthdates.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/organizer.xsd b/Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml b/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml
rename to Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/invalidBirthdates.xml b/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/invalidBirthdates.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/invalidBirthdates.xml
rename to Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/invalidBirthdates.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/organizer.xsd b/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/invalidEmail.xml b/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/invalidEmail.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/invalidEmail.xml
rename to Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/invalidEmail.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/mindTheUr_type.xml b/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/mindTheUr_type.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/mindTheUr_type.xml
rename to Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/mindTheUr_type.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/organizer.xsd b/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/validEmail.xml b/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/validEmail.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/validEmail.xml
rename to Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/validEmail.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V08_correctingTypes/mindTheUr_type.xml b/Doc/Sda1/Ref/Organizer/V08_correctingTypes/mindTheUr_type.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V08_correctingTypes/mindTheUr_type.xml
rename to Doc/Sda1/Ref/Organizer/V08_correctingTypes/mindTheUr_type.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V08_correctingTypes/organizer.xsd b/Doc/Sda1/Ref/Organizer/V08_correctingTypes/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V08_correctingTypes/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V08_correctingTypes/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V08_correctingTypes/validEmail.xml b/Doc/Sda1/Ref/Organizer/V08_correctingTypes/validEmail.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V08_correctingTypes/validEmail.xml
rename to Doc/Sda1/Ref/Organizer/V08_correctingTypes/validEmail.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V14_category/category.xml b/Doc/Sda1/Ref/Organizer/V14_category/category.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V14_category/category.xml
rename to Doc/Sda1/Ref/Organizer/V14_category/category.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V14_category/organizer.xsd b/Doc/Sda1/Ref/Organizer/V14_category/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V14_category/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V14_category/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/duplicateNickname.xml b/Doc/Sda1/Ref/Organizer/V17_nickname/duplicateNickname.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/duplicateNickname.xml
rename to Doc/Sda1/Ref/Organizer/V17_nickname/duplicateNickname.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/nickname.xml b/Doc/Sda1/Ref/Organizer/V17_nickname/nickname.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/nickname.xml
rename to Doc/Sda1/Ref/Organizer/V17_nickname/nickname.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/organizer.xsd b/Doc/Sda1/Ref/Organizer/V17_nickname/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V17_nickname/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/id.xml b/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/id.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/id.xml
rename to Doc/Sda1/Ref/Organizer/V20_primaryKeyId/id.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/missingId.xml b/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/missingId.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/missingId.xml
rename to Doc/Sda1/Ref/Organizer/V20_primaryKeyId/missingId.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/organizer.xsd b/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V20_primaryKeyId/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V21_idRequired/id.xml b/Doc/Sda1/Ref/Organizer/V21_idRequired/id.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V21_idRequired/id.xml
rename to Doc/Sda1/Ref/Organizer/V21_idRequired/id.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V21_idRequired/missingId.xml b/Doc/Sda1/Ref/Organizer/V21_idRequired/missingId.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V21_idRequired/missingId.xml
rename to Doc/Sda1/Ref/Organizer/V21_idRequired/missingId.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V21_idRequired/organizer.xsd b/Doc/Sda1/Ref/Organizer/V21_idRequired/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V21_idRequired/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V21_idRequired/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V30_appointment/appointment.xml b/Doc/Sda1/Ref/Organizer/V30_appointment/appointment.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V30_appointment/appointment.xml
rename to Doc/Sda1/Ref/Organizer/V30_appointment/appointment.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V30_appointment/missingDate.xml b/Doc/Sda1/Ref/Organizer/V30_appointment/missingDate.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V30_appointment/missingDate.xml
rename to Doc/Sda1/Ref/Organizer/V30_appointment/missingDate.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V30_appointment/organizer.xsd b/Doc/Sda1/Ref/Organizer/V30_appointment/organizer.xsd
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V30_appointment/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V30_appointment/organizer.xsd
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/appointment.xml b/Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/appointment.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/appointment.xml
rename to Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/appointment.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/invalidParticipantRef.xml b/Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/invalidParticipantRef.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/invalidParticipantRef.xml
rename to Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/invalidParticipantRef.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/missingParticipant.xml b/Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/missingParticipant.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/missingParticipant.xml
rename to Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/missingParticipant.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/organizer.xsd b/Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/organizer.xsd
similarity index 97%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/organizer.xsd
index ef12892537fe99ff3aff3d393258f7525db375a0..8bc2568ff7382aacb381431b02d0fc06c6fba88f 100644
--- a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V33_appointmentParticipants/organizer.xsd
+++ b/Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/organizer.xsd
@@ -21,7 +21,7 @@
       <xs:field xpath="@nickname"/>
     </xs:unique>
     
-    <xs:keyref name="ownerOfAppointment" refer="primaryKey">
+    <xs:keyref name="participants" refer="primaryKey">
       <xs:annotation>
         <xs:documentation>Each appointment belongs to exactly one owner.</xs:documentation>
       </xs:annotation>
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V36_appointmentUniqueParticipants/duplicateParticipants.xml b/Doc/Sda1/Ref/Organizer/V36_appointmentUniqueParticipants/duplicateParticipants.xml
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V36_appointmentUniqueParticipants/duplicateParticipants.xml
rename to Doc/Sda1/Ref/Organizer/V36_appointmentUniqueParticipants/duplicateParticipants.xml
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V36_appointmentUniqueParticipants/organizer.xsd b/Doc/Sda1/Ref/Organizer/V36_appointmentUniqueParticipants/organizer.xsd
similarity index 97%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/V36_appointmentUniqueParticipants/organizer.xsd
rename to Doc/Sda1/Ref/Organizer/V36_appointmentUniqueParticipants/organizer.xsd
index 0e0999b50ddd0f8949df50a14ad80ab7762e6043..fabcc275ddc084303fdfff15ef3decb03384b3c6 100644
--- a/Doc/Sda1/Ref/Xmlschema/P/Organizer/V36_appointmentUniqueParticipants/organizer.xsd
+++ b/Doc/Sda1/Ref/Organizer/V36_appointmentUniqueParticipants/organizer.xsd
@@ -21,7 +21,7 @@
       <xs:field xpath="@nickname"/>
     </xs:unique>
     
-    <xs:keyref name="ownerOfAppointment" refer="primaryKey">
+    <xs:keyref name="participants" refer="primaryKey">
       <xs:annotation>
         <xs:documentation>Each appointment belongs to exactly one owner.</xs:documentation>
       </xs:annotation>
diff --git a/Doc/Sda1/Ref/Xmlschema/P/Organizer/abook.xpr b/Doc/Sda1/Ref/Organizer/abook.xpr
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/Organizer/abook.xpr
rename to Doc/Sda1/Ref/Organizer/abook.xpr
diff --git a/Doc/Sda1/Ref/Organizer/pom.xml b/Doc/Sda1/Ref/Organizer/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bf850f64ba449fcda513bfcdda68130d247b00bc
--- /dev/null
+++ b/Doc/Sda1/Ref/Organizer/pom.xml
@@ -0,0 +1,80 @@
+<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>organizer</artifactId>
+	<version>1.0-SNAPSHOT</version>
+	<packaging>jar</packaging>
+
+	<name>organizer</name>
+
+	<url>https://freedocs.mi.hdm-stuttgart.de/sd1SectToolsOfTheTrade2.html</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+
+	<dependencies>
+		<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.9.1</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.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-javadoc-plugin</artifactId>
+				<version>2.10.4</version>
+				<configuration />
+			</plugin>
+
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-shade-plugin</artifactId>
+				<version>3.1.0</version>
+				<configuration>
+					<transformers>
+						<transformer
+							implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+							<manifestEntries>
+								<Main-Class>de.hdm_stuttgart.mi.sda1.App</Main-Class>
+							</manifestEntries>
+						</transformer>
+					</transformers>
+				</configuration>
+				<executions>
+					<execution>
+						<phase>package</phase>
+						<goals>
+							<goal>shade</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+
+		</plugins>
+	</build>
+</project>
diff --git a/Doc/Sda1/Ref/Xmlschema/P/organizer.xpr b/Doc/Sda1/Ref/organizer.xpr
similarity index 100%
rename from Doc/Sda1/Ref/Xmlschema/P/organizer.xpr
rename to Doc/Sda1/Ref/organizer.xpr
diff --git a/Doc/Sda1/xmlschema.xml b/Doc/Sda1/xmlschema.xml
index 7a01141e9915f6a8ffe9374d531109967f609bec..c208b522ca51f6c7ed89a74558d91ef5705e17ae 100644
--- a/Doc/Sda1/xmlschema.xml
+++ b/Doc/Sda1/xmlschema.xml
@@ -317,7 +317,7 @@ double amount = Double.parseDouble(a);</programlisting></td>
       <title>Element definitions</title>
 
       <para>We now introduce <filename
-      xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd">organizer.xsd</filename>
+      xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd">organizer.xsd</filename>
       representing an <xref linkend="glo_XSD"/> Schema based grammar:</para>
 
       <figure xml:id="sda1_xmlschema_fig_contactXsd01">
@@ -330,10 +330,10 @@ double amount = Double.parseDouble(a);</programlisting></td>
 
           <tr>
             <th><filename
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd">organizer.xsd</filename></th>
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd">organizer.xsd</filename></th>
 
             <th><filename
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/myContacts.xml">
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/myContacts.xml">
             myContacts.xml</filename></th>
           </tr>
 
@@ -421,7 +421,7 @@ double amount = Double.parseDouble(a);</programlisting></td>
             xlink:href="https://www.w3.org/TR/xmlschema11-1/#xsi_schemaLocation">noNamespaceSchemaLocation</link> <co
             linkends="sda1_xmlschema_fig_instanceToSchema-2"
             xml:id="sda1_xmlschema_fig_instanceToSchema-2-co"/> = "<link
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd">organizer.xsd</link>"&gt; <co
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd">organizer.xsd</link>"&gt; <co
             linkends="sda1_xmlschema_fig_instanceToSchema-3"
             xml:id="sda1_xmlschema_fig_instanceToSchema-3-co"/>
   ...
@@ -458,7 +458,7 @@ double amount = Double.parseDouble(a);</programlisting></td>
                 xlink:href="https://www.w3.org/TR/xmlschema11-1/#xsi-namespace">http://www.w3.org/2001/XMLSchema-instance</code>" 
   <emphasis role="red">dummy</emphasis><link
                 xlink:href="https://www.w3.org/TR/xmlschema11-1/#xsi_schemaLocation">:noNamespaceSchemaLocation</link> = "<filename
-                xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd">organizer.xsd</filename>"&gt; 
+                xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd">organizer.xsd</filename>"&gt; 
   ...
 &lt;/contact&gt;</programlisting>
           </note>
@@ -476,7 +476,7 @@ double amount = Double.parseDouble(a);</programlisting></td>
                  xml:id="sda1_xmlschema_fig_instanceToSchema-3">
           <para>The root element <tag class="starttag">contact</tag> is being
           defined in file <filename
-          xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd">organizer.xsd</filename>.</para>
+          xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd">organizer.xsd</filename>.</para>
         </callout>
       </calloutlist>
 
@@ -486,7 +486,7 @@ double amount = Double.parseDouble(a);</programlisting></td>
         <programlisting language="none">&lt;contact 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="<link
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/organizer.xsd">https://mi.hdm-stuttgart.de/organizer.xsd</link>"&gt; 
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/organizer.xsd">https://mi.hdm-stuttgart.de/organizer.xsd</link>"&gt; 
   ...
 &lt;/contact&gt;</programlisting>
       </figure>
@@ -499,7 +499,7 @@ double amount = Double.parseDouble(a);</programlisting></td>
             xml:id="sda1_xmlschema_fig_validateContact-1-co"/> -s <co
             linkends="sda1_xmlschema_fig_validateContact-2"
             xml:id="sda1_xmlschema_fig_validateContact-2-co"/> <link
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V01_start/myContacts.xml">myContacts.xml</link> <co
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V01_start/myContacts.xml">myContacts.xml</link> <co
             linkends="sda1_xmlschema_fig_validateContact-3.2"
             xml:id="sda1_xmlschema_fig_validateContact-3.2-co"/>
 Parsing was successfull <co linkends="sda1_xmlschema_fig_validateContact-3"
@@ -537,15 +537,11 @@ Parsing was successfull <co linkends="sda1_xmlschema_fig_validateContact-3"
         <title>Uups, we fail!</title>
 
         <informaltable border="0">
-          <colgroup width="30%"/>
-
           <colgroup width="70%"/>
 
-          <tr>
-            <td valign="top"><emphasis role="red">The content of element
-            'contact' is not complete. One of '{email}' is
-            expected.</emphasis></td>
+          <colgroup width="30%"/>
 
+          <tr>
             <td valign="top"><programlisting language="xml">&lt;contact xmlns:xsi=
    "http://www.w3.org/2001/XMLSchema-instance"
   xsi:noNamespaceSchemaLocation="organizer.xsd"&gt;    
@@ -553,6 +549,10 @@ Parsing was successfull <co linkends="sda1_xmlschema_fig_validateContact-3"
   &lt;lastName&gt;Dexter&lt;/lastName&gt;
   &lt;!-- no &lt;email&gt; here --&gt;
 &lt;/contact&gt;</programlisting></td>
+
+            <td valign="top"><emphasis role="red">The content of element
+            'contact' is not complete. One of '{email}' is
+            expected.</emphasis></td>
           </tr>
         </informaltable>
       </figure>
@@ -623,7 +623,7 @@ String s1 = new String(), s2 = new String();</programlisting>
       <figure xml:id="sda1_xmlschema_fig_organizerEmailOptional">
         <title><link
         xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/tree/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V02_optionalEmail">V02</link>:
-        Making <tag class="starttag">email</tag> optional</title>
+        Define <tag class="starttag">email</tag> as optional</title>
 
         <informaltable border="0">
           <tr>
@@ -656,25 +656,26 @@ String s1 = new String(), s2 = new String();</programlisting>
             <td valign="top"><programlisting language="none">&lt;xs:element name="organizer"&gt;
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element ref="<emphasis role="red">contact</emphasis>" <co
-                  linkends="sda1_xmlschema_fig_organizerMultipleContacts-1"
-                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-1-co"/>
-         <emphasis role="red">minOccurs="0"</emphasis> <co
+      &lt;xs:element <emphasis role="red">minOccurs="0"</emphasis> <co
                   linkends="sda1_xmlschema_fig_organizerMultipleContacts-2"
-                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-2-co"/> <emphasis
-                  role="red">maxOccurs="unbounded"</emphasis> <co
+                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-2-co"/>
+          <emphasis role="red">maxOccurs="unbounded"</emphasis> <co
                   linkends="sda1_xmlschema_fig_organizerMultipleContacts-3"
-                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-3-co"/>/&gt;     
-    &lt;/xs:sequence&gt;
-  &lt;/xs:complexType&gt;
-&lt;/xs:element&gt;
-&lt;xs:element name="<emphasis role="red">contact</emphasis>" <co
+                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-3-co"/>
+          ref="<emphasis role="red">contact</emphasis>"/&gt; <emphasis
+                  role="red">────┐</emphasis> <co
+                  linkends="sda1_xmlschema_fig_organizerMultipleContacts-1"
+                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-1-co"/>  
+    &lt;/xs:sequence&gt;            <emphasis role="red">│</emphasis>
+  &lt;/xs:complexType&gt;           <emphasis role="red">│</emphasis>
+&lt;/xs:element&gt;                 <emphasis role="red">│</emphasis>
+&lt;xs:element name="<emphasis role="red">contact</emphasis>"&gt; <emphasis
+                  role="red">◀─┘</emphasis> <co
                   linkends="sda1_xmlschema_fig_organizerMultipleContacts-4"
-                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-4-co"/>&gt;
+                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-4-co"/>
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
-      &lt;xs:element name="firstName"/&gt;
-      &lt;xs:element name="lastName"/&gt;
+        ...
       &lt;xs:element name="email" minOccurs="0"/&gt;     
     &lt;/xs:sequence&gt;
   &lt;/xs:complexType&gt;
@@ -696,16 +697,10 @@ String s1 = new String(), s2 = new String();</programlisting>
       </figure>
 
       <calloutlist>
-        <callout arearefs="sda1_xmlschema_fig_organizerMultipleContacts-1-co"
-                 xml:id="sda1_xmlschema_fig_organizerMultipleContacts-1">
-          <para>Referencing definition of element <tag
-          class="starttag">contact</tag>.</para>
-        </callout>
-
         <callout arearefs="sda1_xmlschema_fig_organizerMultipleContacts-2-co"
                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-2">
-          <para>The minimum number of appearances is 0. Thus we may have no
-          <tag class="starttag">contact</tag> element at all.</para>
+          <para>The minimum number of appearances is 0: We may have no <tag
+          class="starttag">contact</tag> element at all.</para>
         </callout>
 
         <callout arearefs="sda1_xmlschema_fig_organizerMultipleContacts-3-co"
@@ -715,6 +710,12 @@ String s1 = new String(), s2 = new String();</programlisting>
           elements.</para>
         </callout>
 
+        <callout arearefs="sda1_xmlschema_fig_organizerMultipleContacts-1-co"
+                 xml:id="sda1_xmlschema_fig_organizerMultipleContacts-1">
+          <para>Referencing definition of element <tag
+          class="starttag">contact</tag>.</para>
+        </callout>
+
         <callout arearefs="sda1_xmlschema_fig_organizerMultipleContacts-4-co"
                  xml:id="sda1_xmlschema_fig_organizerMultipleContacts-4">
           <para>Definition of element contact being the reference target of
@@ -844,7 +845,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="xml"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V04_birthdateElement/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V04_birthdateElement/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="firstName"/&gt;
@@ -856,7 +857,7 @@ String s1 = new String(), s2 = new String();</programlisting>
 &lt;/xs:element&gt;</programlisting></td>
 
             <td valign="top"><programlisting language="xml"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V04_birthdateElement/birthdateElement.xml">&lt;contact ...="organizer.xsd"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V04_birthdateElement/birthdateElement.xml">&lt;contact ...="organizer.xsd"&gt;</link>
   &lt;firstName&gt;Eve&lt;/firstName&gt;
   &lt;lastName&gt;Dexter&lt;/lastName&gt;
 
@@ -873,7 +874,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="firstName"/&gt;
@@ -886,7 +887,7 @@ String s1 = new String(), s2 = new String();</programlisting>
 &lt;/xs:element&gt;</programlisting></td>
 
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V05_birthdateElementDateType/invalidBirthdates.xml">&lt;organizer ...="organizer.xsd"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V05_birthdateElementDateType/invalidBirthdates.xml">&lt;organizer ...="organizer.xsd"&gt;</link>
   &lt;contact &gt;
     ...
     &lt;!-- '1995-11-39' is not a valid value for 'date'. --&gt;
@@ -928,7 +929,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="firstName"/&gt;
@@ -942,7 +943,7 @@ String s1 = new String(), s2 = new String();</programlisting>
 &lt;/xs:element&gt;</programlisting></td>
 
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml">&lt;contact ...="organizer.xsd"</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml">&lt;contact ...="organizer.xsd"</link>
   <emphasis role="red">birthDate="1995-11-29"</emphasis>&gt;
   &lt;firstName&gt;Eve&lt;/firstName&gt;
   &lt;lastName&gt;Dexter&lt;/lastName&gt;    
@@ -957,7 +958,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="firstName"/&gt;
@@ -972,7 +973,7 @@ String s1 = new String(), s2 = new String();</programlisting>
 
             <td valign="top"><programlisting language="none">&lt;!-- birthDate is <emphasis
                   role="red">optional</emphasis>--&gt;
-<link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml">&lt;contact ...="organizer.xsd"</link>&gt;
+<link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V06_birthdateAttributeType/birthdateAttribute.xml">&lt;contact ...="organizer.xsd"</link>&gt;
   &lt;firstName&gt;Eve&lt;/firstName&gt;
   &lt;lastName&gt;Dexter&lt;/lastName&gt;    
 &lt;/contact&gt;</programlisting></td>
@@ -1128,7 +1129,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <title>Ur type</title>
 
         <programlisting language="none"><link
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/organizer.xsd">&lt;xs:element name="contact"&gt;</link>
   &lt;xs:complexType&gt;
     &lt;xs:sequence&gt;
       &lt;xs:element name="firstName" <co
@@ -1138,7 +1139,7 @@ String s1 = new String(), s2 = new String();</programlisting>
       &lt;xs:element name="email" .../&gt;
     &lt;/xs:sequence&gt;                      
     &lt;xs:attribute                     <link
-            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/mindTheUr_type.xml">&lt;contact ...="organizer.xsd"&gt;</link>          
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/mindTheUr_type.xml">&lt;contact ...="organizer.xsd"&gt;</link>          
        name="birthDate" .../&gt;            &lt;firstName&gt;Eve <emphasis
             role="red">&lt;email&gt;</emphasis>eve@my.com<emphasis role="red">&lt;/email&gt;</emphasis> <co
             linkends="sda1_xmlschema_fig_organizerUrType-2"
@@ -1167,7 +1168,7 @@ String s1 = new String(), s2 = new String();</programlisting>
                  xml:id="sda1_xmlschema_fig_organizerUrType-3">
           <para>Even worse: Element <tag class="starttag">pre</tag> is not
           being defined in <filename
-          xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V07_emailNoSpaces/organizer.xsd">organizer.xsd</filename>!</para>
+          xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V07_emailNoSpaces/organizer.xsd">organizer.xsd</filename>!</para>
         </callout>
       </calloutlist>
 
@@ -1257,8 +1258,8 @@ String s1 = new String(), s2 = new String();</programlisting>
       </figure>
     </section>
 
-    <section xml:id="sda1_xmlschema_sect_constraints">
-      <title>Constraints</title>
+    <section xml:id="sda1_xmlschema_sect_uniquenessConstraints">
+      <title>Uniqueness Constraints</title>
 
       <figure xml:id="sda1_xmlschema_fig_organizerIntroduceNicknames">
         <title>Introducing nicknames</title>
@@ -1310,7 +1311,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V17_nickname/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
 ...&lt;xs:element ref="contact" <co
                   linkends="sda1_xmlschema_fig_organizerContactNicknameUniqueXsd-1"
                   xml:id="sda1_xmlschema_fig_organizerContactNicknameUniqueXsd-1-co"/>.../&gt; 
@@ -1333,7 +1334,7 @@ String s1 = new String(), s2 = new String();</programlisting>
 &lt;/xs:element&gt;</programlisting></td>
 
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V17_nickname/duplicateNickname.xml">&lt;contact nickname="Blue"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V17_nickname/duplicateNickname.xml">&lt;contact nickname="Blue"&gt;</link>
   &lt;firstName&gt;Eve &lt;/firstName&gt;
   &lt;lastName&gt;Dexter&lt;/lastName&gt;
 &lt;/contact&gt;
@@ -1440,7 +1441,7 @@ String s1 = new String(), s2 = new String();</programlisting>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
 ... &lt;xs:element ref="contact".../&gt;
     ...
     &lt;xs:key name="primaryKey"&gt;
@@ -1458,7 +1459,7 @@ String s1 = new String(), s2 = new String();</programlisting>
                   role="red">&lt;!-- Invalid: Element "organizer"
 has no value for the
 key "primaryKey". --&gt;</emphasis>
-<link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/missingId.xml">&lt;contact birthDate="1995-11-29"</link>
+<link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/missingId.xml">&lt;contact birthDate="1995-11-29"</link>
   category="businessPartner"
   nickname="Blue"&gt;
   &lt;firstName&gt;Eve &lt;/firstName&gt;
@@ -1484,7 +1485,7 @@ key "primaryKey". --&gt;</emphasis>
         <informaltable border="0">
           <tr>
             <td valign="top"><programlisting language="none"><link
-                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
+                  xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
 ... &lt;xs:element ref="contact".../&gt;
     ...
     &lt;xs:key name="primaryKey"&gt;
@@ -1500,7 +1501,7 @@ key "primaryKey". --&gt;</emphasis>
                   role="red">&lt;!-- Invalid: Element "organizer"
 has no value for the
 key "primaryKey". --&gt;</emphasis>
-<link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Xmlschema/P/Organizer/V20_primaryKeyId/missingId.xml">&lt;contact birthDate="1995-11-29"</link>
+<link xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V20_primaryKeyId/missingId.xml">&lt;contact birthDate="1995-11-29"</link>
   category="businessPartner"
   nickname="Blue"&gt;
   &lt;firstName&gt;Eve &lt;/firstName&gt;
@@ -1511,6 +1512,209 @@ key "primaryKey". --&gt;</emphasis>
       </figure>
     </section>
 
+    <section xml:id="sda1_xmlschema_sect_referencingConstraints">
+      <title>Referencing constraints</title>
+
+      <figure xml:id="sda1_xmlschema_fig_organizerAppointment">
+        <title><code>Referencing contacts</code></title>
+
+        <programlisting language="none">&lt;contact id="10" &gt;
+    &lt;firstName&gt;Eve &lt;/firstName&gt; ... &lt;/contact&gt;
+&lt;contact id="<emphasis role="red">11</emphasis>" &gt; <emphasis role="red">◀─────────────────────────┐</emphasis>   <co
+            linkends="sda1_xmlschema_fig_organizerAppointment-1"
+            xml:id="sda1_xmlschema_fig_organizerAppointment-1-co"/>
+    &lt;firstName&gt;Joe&lt;/firstName&gt;... &lt;/contact&gt; <emphasis
+            role="red">│</emphasis>
+&lt;contact id="<emphasis role="red">12</emphasis>" &gt;<emphasis role="red"> ◀─────────────────────────┼─┐</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerAppointment-2"
+            xml:id="sda1_xmlschema_fig_organizerAppointment-2-co"/>
+    &lt;firstName&gt;Sue&lt;/firstName&gt;... &lt;/contact&gt; <emphasis
+            role="red">│ │</emphasis>
+&lt;appointment date="2031-10-26T18:30:00"&gt;     <emphasis role="red">│ │</emphasis>
+    &lt;description&gt;Merry X-mas!&lt;/description&gt;  <emphasis role="red">│ │</emphasis>
+    &lt;participant&gt;<emphasis role="red">11</emphasis>&lt;/participant&gt; <emphasis
+            role="red">───────────┘ │</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerAppointment-3"
+            xml:id="sda1_xmlschema_fig_organizerAppointment-3-co"/>
+    &lt;participant&gt;<emphasis role="red">12</emphasis>&lt;/participant&gt; <emphasis
+            role="red">─────────────┘</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerAppointment-4"
+            xml:id="sda1_xmlschema_fig_organizerAppointment-4-co"/>
+&lt;/appointment&gt;</programlisting>
+      </figure>
+
+      <calloutlist>
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointment-1-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointment-1">
+          <para>Defining unique contact id value <emphasis
+          role="red">11</emphasis>.</para>
+        </callout>
+
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointment-2-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointment-2">
+          <para>Defining unique contact id value <emphasis
+          role="red">12</emphasis>.</para>
+        </callout>
+
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointment-3-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointment-3">
+          <para>Referencing <tag class="starttag">contact</tag> having id
+          value <emphasis role="red">11</emphasis>.</para>
+        </callout>
+
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointment-4-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointment-4">
+          <para>Referencing <tag class="starttag">contact</tag> having id
+          value <emphasis role="red">12</emphasis>.</para>
+        </callout>
+      </calloutlist>
+
+      <figure xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef">
+        <title><code>Violating referential integrity</code></title>
+
+        <programlisting language="none">&lt;contact id="10" &gt;
+    &lt;firstName&gt;Eve &lt;/firstName&gt; ... &lt;/contact&gt;
+&lt;contact id="11" &gt; 
+    &lt;firstName&gt;Joe&lt;/firstName&gt;... &lt;/contact&gt;
+&lt;contact id="<emphasis role="red">12</emphasis>" &gt; <emphasis role="red">◀──────────────────────────┐</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerAppointmentInvalidRef-1"
+            xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef-1-co"/>
+    &lt;firstName&gt;Sue&lt;/firstName&gt;... &lt;/contact&gt;  <emphasis
+            role="red">│</emphasis>
+&lt;appointment date="2031-10-26T18:30:00"&gt;      <emphasis role="red">│</emphasis>
+    &lt;description&gt;Merry X-mas!&lt;/description&gt;   <emphasis role="red">│</emphasis>
+    &lt;participant&gt;<emphasis role="red">12</emphasis>&lt;/participant&gt; <emphasis
+            role="red">────────────┘</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerAppointmentInvalidRef-2"
+            xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef-2-co"/>
+   &lt;participant&gt;<emphasis role="red">123</emphasis>&lt;/participant&gt; <co
+            linkends="sda1_xmlschema_fig_organizerAppointmentInvalidRef-3"
+            xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef-3-co"/> <emphasis
+            role="red">─────▶ ??</emphasis>
+&lt;/appointment&gt;</programlisting>
+      </figure>
+
+      <calloutlist>
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointmentInvalidRef-1-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef-1">
+          <para>Defining unique contact <code>id</code> value <emphasis
+          role="red">12</emphasis>.</para>
+        </callout>
+
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointmentInvalidRef-2-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef-2">
+          <para>Referencing <tag class="starttag">contact</tag> having
+          <code>id</code> value <emphasis role="red">12</emphasis>.</para>
+        </callout>
+
+        <callout arearefs="sda1_xmlschema_fig_organizerAppointmentInvalidRef-3-co"
+                 xml:id="sda1_xmlschema_fig_organizerAppointmentInvalidRef-3">
+          <para>Error: No such <tag class="starttag">contact id="<emphasis
+          role="red">123</emphasis>"</tag>.</para>
+        </callout>
+      </calloutlist>
+
+      <figure xml:id="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity">
+        <title><code>Enforcing referential integrity</code></title>
+
+        <programlisting language="none"><link
+            xlink:href="https://gitlab.mi.hdm-stuttgart.de/goik/GoikLectures/blob/master/Doc/Sda1/Ref/Organizer/V33_appointmentParticipants/organizer.xsd">&lt;xs:element name="organizer"&gt;</link>
+  &lt;xs:complexType&gt;&lt;xs:sequence&gt; ...
+     &lt;xs:element ... maxOccurs="unbounded" ref="appointment"/&gt; <emphasis
+            role="red">─┐</emphasis> 
+...&lt;xs:key name="primaryKey"&gt; <emphasis role="red">◀─<emphasis
+              role="red">─</emphasis><emphasis role="red"><emphasis role="red">─ reference ─────────</emphasis>─┐</emphasis></emphasis>        <emphasis
+            role="red">│</emphasis>
+   &lt;xs:selector xpath="contact"/&gt;                      <emphasis
+            role="red">│</emphasis>        <emphasis role="red">│</emphasis> 
+     &lt;xs:field xpath="@id"/&gt;                           <emphasis
+            role="red">│</emphasis>        <emphasis role="red">│</emphasis>
+   &lt;/xs:key&gt;                                           <emphasis
+            role="red">│</emphasis>        <emphasis role="red">│</emphasis>
+   &lt;xs:keyref name="participants" refer="primaryKey"&gt; <emphasis
+            role="red">─┘</emphasis>        <emphasis role="red">│</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-1"
+            xml:id="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-1-co"/>
+     &lt;xs:selector xpath="appointment/participant"/&gt; <emphasis role="red">─────┐</emphasis>      <emphasis
+            role="red">│</emphasis>
+     &lt;xs:field xpath="."/&gt;                               <emphasis
+            role="red">│</emphasis>      <emphasis role="red">│</emphasis>
+    &lt;/xs:keyref&gt;                                         <emphasis
+            role="red">│</emphasis>      <emphasis role="red">│</emphasis>
+&lt;/xs:element&gt;                                            <emphasis
+            role="red">│</emphasis>      <emphasis role="red">│</emphasis>
+&lt;xs:element name="appointment"&gt; <emphasis role="red">◀────────────────────────┼──────┘</emphasis>
+  &lt;xs:complexType&gt;&lt;xs:sequence&gt;                          <emphasis
+            role="red">│</emphasis>
+ ...  &lt;xs:element name="participant" type="xs:integer" <emphasis role="red">◀─┘</emphasis> <co
+            linkends="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-2"
+            xml:id="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-2-co"/></programlisting>
+      </figure>
+
+      <calloutlist>
+        <callout arearefs="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-1-co"
+                 xml:id="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-1">
+          <para>Multiple appointments inside <tag
+          class="starttag">organizer</tag>.</para>
+        </callout>
+
+        <callout arearefs="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-2-co"
+                 xml:id="sda1_xmlschema_fig_organizerEnforceReferentialIntegrity-2">
+          <para>Selecting the set of all <tag
+          class="starttag">appointment</tag>/<tag
+          class="starttag">participant</tag> elements below
+          <quote>current</quote> element <tag
+          class="starttag">organizer</tag>.</para>
+
+          <para>Note: The dot in <tag class="starttag">xs:field
+          xpath="."</tag> is an <xref linkend="glo_XPath"/> denoting a current
+          <tag class="starttag">participant</tag> element's content
+          <abbrev>e.g.</abbrev> the value 3 in <tag
+          class="starttag">participant</tag>3<tag
+          class="endtag">participant</tag>.</para>
+        </callout>
+      </calloutlist>
+
+      <figure xml:id="sda1_xmlschema_fig_organizerDuplicateParticipants">
+        <title><code>Participant reference duplicates</code></title>
+
+        <programlisting language="none">  &lt;appointment date="2031-10-26T18:30:00"&gt;
+    &lt;description&gt;Merry X-mas!&lt;/description&gt;
+    &lt;participant&gt;<emphasis role="red">11</emphasis>&lt;/participant&gt; <emphasis
+            role="red">◀─<emphasis role="red">┐</emphasis></emphasis>
+    &lt;participant&gt;12&lt;/participant&gt;   <emphasis role="red">│</emphasis>
+    &lt;participant&gt;<emphasis role="red">11</emphasis>&lt;/participant&gt; <emphasis
+            role="red">◀─┘</emphasis>
+  &lt;/appointment&gt;</programlisting>
+      </figure>
+
+      <figure xml:id="sda1_xmlschema_fig_organizerUniqueParticipateConstraint">
+        <title><code>Solution:key constraint</code></title>
+
+        <programlisting language="none">&lt;xs:element name="appointment"&gt;
+  &lt;xs:complexType&gt;
+    &lt;xs:sequence&gt;
+          ...
+      &lt;xs:element name="participant" type="xs:integer"
+          maxOccurs="unbounded"/&gt;
+      &lt;/xs:sequence&gt;
+      ...
+  &lt;/xs:complexType&gt;
+
+  <emphasis role="red">&lt;xs:key name="uniqueParticipants"&gt;
+    &lt;xs:selector xpath="participant"/&gt;
+    &lt;xs:field xpath="."/&gt;
+  &lt;/xs:key&gt;</emphasis>
+&lt;/xs:element&gt;</programlisting>
+      </figure>
+
+      <figure xml:id="sda1_xmlschema_fig_organizerDuplicateParticipantsError">
+        <title><code>Participant reference duplicates</code></title>
+
+        <programlisting language="none">  </programlisting>
+      </figure>
+    </section>
+
     <section xml:id="sda1_xmlschema_sect_bestPractices">
       <title>Best practices</title>