diff --git a/Makefile b/Makefile
index f528a02cd39374a68f75cc105215268c6a132307..f2f2388e5cd244bdb99fce195ce195a0d110b6ca 100644
--- a/Makefile
+++ b/Makefile
@@ -39,15 +39,20 @@ status: bjcp-2015-styleguide-orig.xml
 	@-xsltproc --stringparam lang de xsl/bjcp-2015-styleguide-status.xsl bjcp-2015-styleguide-orig.xml 2>&1 | grep -v "failed to load external entity"
 
 
-test: bjcp-2015-styleguide-orig.xml bjcp-2015-styleguide-de.xml
-	@xmllint --noout bjcp-2015-styleguide-orig.xml
-	@xmllint --noout bjcp-2015-styleguide-de.xml
+check: bjcp-2015-styleguide-orig.xml bjcp-2015-styleguide-de.xml
+	@for f in de/*.xml ; do xmllint --noout --schema xsd/bjcp-styleguide-2015.xsd $$f ; done
+	@xmllint --noout --schema xsd/bjcp-styleguide-2015.xsd bjcp-2015-styleguide-orig.xml
+	@xmllint --noout --schema xsd/bjcp-styleguide-2015.xsd bjcp-2015-styleguide-de.xml
 
 clean:
-	@rm -rf cache orig
+	@rm -rf orig
 	@rm -f bjcp-2015-styleguide-orig.xml
 	@rm -f bjcp-2015-styleguide-de.xml
 	@rm -f bjcp-2015-styleguide-orig.html
 	@rm -f bjcp-2015-styleguide-de.html
 	@echo "cleanup done"
 
+distclean: clean
+	@rm -rf cache
+	@echo "complete cleanup done"
+
diff --git a/README.md b/README.md
index c7f4d69d0e3ffebd5d24e574e19faa7b53c8a47b..edc36279badd59e4577f6f742b9f576ffed7f04c 100644
--- a/README.md
+++ b/README.md
@@ -75,6 +75,10 @@ Besides all the contributors to the original BJCP document we would like to than
   ```
   make status
   ```
+- You may check the XML validity of all XML files:
+  ```
+  make check
+  ```
 - Note: We aim for a real translation. Even if you are convinced that adding new details or rephrasing sections would make sense, please don't do that! (Maybe, we should establish a way to take notes in such cases. Let's discuss this, if you feel a real need.)
 - Take care for a consistent wording of all subject matter specific terms throughout the whole styleguide.
 - To supply your work back upstream to the repository server you need write access, please talk to the project maintainers. Then, use Git as usual (we cannot supply a Git tutorial here, but in general do something like):
diff --git a/de/1.xml b/de/1.xml
index cdd6f38adb0a9c1512d88fbc1505edbfaa555eab..29497613696ff16aac5fb90d3dfe2991ef5d9ee1 100644
--- a/de/1.xml
+++ b/de/1.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="1">
     <name>Standard American Beer</name>
     <description>
diff --git a/de/10.xml b/de/10.xml
index 039237122dbf54ab9d424fb573c2014e66887f91..6c14b1b63c93f44954068e186f8326d1f4b743ca 100644
--- a/de/10.xml
+++ b/de/10.xml
@@ -1,9 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="10">
     <name>German Wheat Beer</name>
-    <description>
-      <p>This category contains vollbier- and starkbier-strength German wheat beers without sourness, in light and dark colors.</p>
-    </description>
   </category>
 </styleguide>
diff --git a/de/10A.xml b/de/10A.xml
index de5565b3db156da5c731ffbaf938657061a91dfc..371d02339bb1b669e0d35938385e27aad6fa10b3 100644
--- a/de/10A.xml
+++ b/de/10A.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="10">
     <subcategory id="10A">
       <name>Weissbier</name>
diff --git a/de/10B.xml b/de/10B.xml
index d1848c8be92ba9e79ae019a830a5ab795cc50f2f..97e8cc939ca0d25f70255ea74b412fb99ff8b747 100644
--- a/de/10B.xml
+++ b/de/10B.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="10">
     <subcategory id="10B">
       <name>Dunkles Weissbier</name>
diff --git a/de/10C.xml b/de/10C.xml
index f363188dc489f5caa8d1d9edac0870394a6989bd..87abf33429a37cd44bbc966f260c23ada9d609f8 100644
--- a/de/10C.xml
+++ b/de/10C.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="10">
     <subcategory id="10C">
       <name>Weizenbock</name>
@@ -14,8 +14,8 @@ optional Karamell). Die Hefe trägt einen typischen Weizen-Charakter von Banane
 [Die Marke Aventinus, das erste obergärige Weizen-Doppelbock-Typ Bier wurde zum ersten Mal 1907 im Weissen Brauhaus in München hergestellt. Die angewandte Methode könnte „Methode Champenoise“, wegen der angewandten Flaschengärung genannt werden. Der Eigentümer Schneider wollte damit eine kreative Antwort auf die damals recht populäre untergärige Sorte Doppelbock geben. (Anmerkung: Hier wird diese Sorte als Weizenstarkbier bezeichnet, um eher die Herkunft als stärker gebrautes obergäriges Weizenbier zu betonen. Die Bezeichnung Weizen-Bock ist u.U. korrekt als Hinweis für die Inspiration dieser Sorte, aber ist ansonsten verwirrend, da es nahe legt, es wäre eine „Mischung“ aus untergärigem Bock und obergärigem Weizen. Ein Hauch korrekter wäre dann Bock-Weizen, was zumindest ansatzweise erkennen lässt, dass es sich hier um ein Weizenbier in Bockstärke handelt).]</history>
       <characteristic-ingredients>Typischerweise wird ca. 50% Weizenanteil verwendet in einigen Fällen auch bis zu 70%, der Restanteil ist Münchner und/oder Wiener Malz in dunkleren Versionen und mehr Pilsner Malz in Helleren. Etwas Farbmalz kann beim läutern verwendet werden. Eine traditionelle Dekoktionsmaische ist für den korrekten Körper zuständig ohne eine appetitverderbende Süße entstehen zu lassen. Weizenhefestämme produzieren eine typisch würzige und fruchtige Note, obwohl zu warme oder zu kalte Vergärungstemperaturen die Ausgewogenheit der Phenole und Ester beeinträchtigen könnten und Fehlgeschmäcker hervorrufen können. Deutsche Varianten sind meist traditionell. [Für die korrekte Bittere wird nur eine kleine Menge an Edelhopfen eingesetzt.]</characteristic-ingredients>
       <style-comparison>Stärker und üppiger als ein Weissbier oder Dunkles Weissbier, aber mit dem gleichen Hefe-Charakter. Beser direkt vergleichbar mit dem Doppelbock-Stil, mit den hellen und dunklen Varianten. Kann in der Stärke weit variiren, aber meist im Bereich des Bock oder Doppelbock.</style-comparison>
-      <entry-instructions>Der Teilnehmer spezifiziert ob es sich bei seinem Bier um eine<b>helle</b> oder eine <b>dunkle</b> Variante handelt.</entry-instructions>
       <commercial-examples><b>Dunkel</b> – Eisenbahn Weizenbock, Plank Bavarian Dunkler Weizenbock, Penn Weizenbock, Schneider Unser Aventinus; <b>Pale</b> – Plank Bavarian Heller Weizenbock, Weihenstephaner Vitus</commercial-examples>
+      <entry-instructions>Der Teilnehmer spezifiziert ob es sich bei seinem Bier um eine<b>helle</b> oder eine <b>dunkle</b> Variante handelt.</entry-instructions>
     </subcategory>
   </category>
 </styleguide>
diff --git a/de/11.xml b/de/11.xml
index 705e6d7824d5efde77b2f47028d2ecaa7569e1e4..65c596a53ea3480c13ddb7e7e96b6139fdd8e13e 100644
--- a/de/11.xml
+++ b/de/11.xml
@@ -1,12 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="11">
     <name>British Bitter</name>
     <description>
-      <p>Die Familie der britischen Bitter entstand aus dem englischen Pale Ale als alternativer Produktentwurf in den späten 1800er Jahren. Die Verwendung von Kristallmalz im Bitter wurde weiter verbreitet nach dem Ersten Weltkrieg. Traditionell serviert sehr frisch, nicht unter Druck (Schwerkraft oder nur  Handpumpe) bei Kellertemperatur serviert (somit entsprechend eines "Real Ale"). Die meisten Flaschen oder Keg-Versionen sind oft höhere Alkohole und höher Carbonisierungen als die Versionen vom Fass, die für den Export hergestellt werden. Sie haben auch einen anderen Charakter und eine andere Balance (wobei oft süßer und weniger hoppy als die Fass-Versionen). Diese Leitlinien spiegeln die "Real Ale" -Version
-des Stils, nicht die Export-Varianten kommerzieller Produkte.
-Es gibt mehrere regionale Unterschiede vom Bitter, sie reichen vom dunklen, süßen Bereich serviert mit fast keiner Schaumkrone bis zu heller, hopfigeren Versionen mit viel Schaum sowie allem dazwischen.
-Die Richter sollten nicht die Karamell-Komponente  dieses Stils überbetonen. Exportierte Bitter oxidieren, was den Karamellgeschmack erhöht (wie auch negativer Geschmacksrichtungen). Gehen Sie nicht davon, dass die von der Oxidation abgeleiteten Aromen traditionell oder für den Stil erforderlich sind.</p>
+      <p>Die Familie der britischen Bitter entstand aus dem englischen Pale Ale als alternativer Produktentwurf in den späten 1800er Jahren. Die Verwendung von Kristallmalz im Bitter wurde weiter verbreitet nach dem Ersten Weltkrieg. Traditionell serviert sehr frisch, nicht unter Druck (Schwerkraft oder nur  Handpumpe) bei Kellertemperatur serviert (somit entsprechend eines "Real Ale"). Die meisten Flaschen oder Keg-Versionen sind oft höhere Alkohole und höher Carbonisierungen als die Versionen vom Fass, die für den Export hergestellt werden. Sie haben auch einen anderen Charakter und eine andere Balance (wobei oft süßer und weniger hoppy als die Fass-Versionen). Diese Leitlinien spiegeln die "Real Ale" -Version des Stils, nicht die Export-Varianten kommerzieller Produkte.  Es gibt mehrere regionale Unterschiede vom Bitter, sie reichen vom dunklen, süßen Bereich serviert mit fast keiner Schaumkrone bis zu heller, hopfigeren Versionen mit viel Schaum sowie allem dazwischen.  Die Richter sollten nicht die Karamell-Komponente  dieses Stils überbetonen. Exportierte Bitter oxidieren, was den Karamellgeschmack erhöht (wie auch negativer Geschmacksrichtungen). Gehen Sie nicht davon, dass die von der Oxidation abgeleiteten Aromen traditionell oder für den Stil erforderlich sind.</p>
     </description>
   </category>
 </styleguide>
diff --git a/de/11A.xml b/de/11A.xml
index a6bb7fecf9b030d3b4b7db5b6088b24addb861b7..3e40a4c4feec6fd69465c28080532fd025d829ca 100644
--- a/de/11A.xml
+++ b/de/11A.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="11">
     <subcategory id="11A">
       <name>Ordinary Bitter</name>
diff --git a/de/11B.xml b/de/11B.xml
index 67390b8e62ba480a7dc917e82e8eee23d37b4f88..5582ed39991c035547de8b5c99cfed67d1f51003 100644
--- a/de/11B.xml
+++ b/de/11B.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="11">
     <subcategory id="11B">
       <name>Best Bitter</name>
diff --git a/de/11C.xml b/de/11C.xml
index 69d4a996a9898778c44f5c6152e97526e3002b75..141ea90bf35c628954213b30b26e8276a2ade600 100644
--- a/de/11C.xml
+++ b/de/11C.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="11">
     <subcategory id="11C">
       <name>Strong Bitter</name>
diff --git a/de/12.xml b/de/12.xml
index 230435c12dc67902497b241b22462a51e744eb30..6ea75503ab085a02abb6d0b79816e0979e3fec03 100644
--- a/de/12.xml
+++ b/de/12.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="12">
     <name>Pale Commonwealth Beer</name>
     <description>
diff --git a/de/12A.xml b/de/12A.xml
index f5bd972d97d1ec1d67871ceff3309cbf13127795..7f0e1a818326edaf0276d8a4b41ce4203fac8735 100644
--- a/de/12A.xml
+++ b/de/12A.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="12">
     <subcategory id="12A">
       <name>British Golden Ale</name>
diff --git a/de/12B.xml b/de/12B.xml
index bdec461e19051cf6abe3597f106a4b8942d448c5..e28022930d5a9f6f3e3daffffad88b6a4f863392 100644
--- a/de/12B.xml
+++ b/de/12B.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="12">
     <subcategory id="12B">
       <name>Australian Sparkling Ale</name>
diff --git a/de/12C.xml b/de/12C.xml
index 4781dd9b10250f22e7e6843ed27f2b60c4441791..0ddd5edc5a1462a2aebbbecc975cc28d572b164a 100644
--- a/de/12C.xml
+++ b/de/12C.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="12">
     <subcategory id="12C">
       <name>English IPA</name>
diff --git a/de/1A.xml b/de/1A.xml
index db82504922d6839ba37c7f9f7b20367ab6761864..9b320545753a2132754ac18e1ff1a4d582617799 100644
--- a/de/1A.xml
+++ b/de/1A.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="1">
     <subcategory id="1A">
       <name>American Light Lager</name>
diff --git a/de/4C.xml b/de/4C.xml
index 3631f19bbee492274cec43ec0f82b6f632b22ab0..5eaf7c062ba94cdafca5bbe5df9e814196d3224b 100644
--- a/de/4C.xml
+++ b/de/4C.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="4">
     <subcategory id="4C">
       <name>Helles Bock</name>
diff --git a/de/6C.xml b/de/6C.xml
index 1dba79bd3e903d94438de8387998dc72a231e24e..800a3521306fb24efe7e1ec5a82b1bc0dfa06552 100644
--- a/de/6C.xml
+++ b/de/6C.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="6">
     <subcategory id="6C">
       <name>Dunkles Bock</name>
diff --git a/de/8B.xml b/de/8B.xml
index e812b51d642adf57cb90502600b1128e71f40aed..99308b962cebe18fadfb1230f9db121df8d047af 100644
--- a/de/8B.xml
+++ b/de/8B.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="8">
     <subcategory id="8B">
       <name>Schwarzbier</name>
diff --git a/de/9A.xml b/de/9A.xml
index 381af7a017f64f418086fcfe48c5f30259beff2d..7694e7d856625f9f94d3209403f19715ee19e9d1 100644
--- a/de/9A.xml
+++ b/de/9A.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="9">
     <subcategory id="9A">
       <name>Doppelbock</name>
@@ -13,10 +13,8 @@ Es wird auf jeden Fall einen Eindruck der alkoholischen Stärke geben, allerding
       <history>Eine bayrische Spezialitäten zuerst von Münchner Mönchen des St. Francis von Paula gebraut. Frühere Typen waren nicht so weit vergoren, wie die heutigen Typen und somit erheblich süßer und niedrigerem Alkoholgehalt (somit wurde es als „flüssiges Brot“ empfunden). Der Ausdruck Doppel-Bock entstand mit der Zeit durch den Konsumenten. Viele Doppel-Bock sind an der Endung „-ator“ zu erkennen, was sicherlich in Anlehnung an das Original Salvator üblich geworden ist. Traditionell dunkelbraune Farbe, hellere Beispiele sind eher in jüngster Zeit entwickelt.</history>
       <characteristic-ingredients>Pilsner- und/oder Wiener Malz für die helleren Versionen (mit etwas Einsatz von Münchner Malz), Münchner und Wiener Malz für die dunkleren Typen und hin und wieder dunklere Malze (z.B. Carafa). Edelhopfen (Saazer-Typen). Wasserhärte variiert von weich bis moderat kalkhaltig. Saubere untergärige Hefe. Dekoktionsmaische ist traditionell.</characteristic-ingredients>
       <style-comparison>eine stärkere, üppigere, vollmundige Version entweder aus einem Dunklen Bock oder Hellen Bock. Helle Versionen zeigen eine höhere Vergärung und weniger dunkel fruchtigen Charakter als die dunkleren Versionen.</style-comparison>
-      <entry-instructions>Der Teilnehmer spezifiziert ob es sich bei seinem Bier um eine<b>helle</b>
-                oder ein <b>dunkle</b>
-                Variante handelt.</entry-instructions>
       <commercial-examples><b>Dunkle Sorten</b> – Andechser Doppelbock Dunkel, Ayinger Celebrator, Paulaner Salvator, Spaten Optimator, Tröegs Troegenator, Weihenstephaner Korbinian; <b>Helle Sorten</b> – Eggenberg Urbock 23º, EKU 28, Plank Bavarian Heller Doppelbock</commercial-examples>
+      <entry-instructions>Der Teilnehmer spezifiziert ob es sich bei seinem Bier um eine<b>helle</b> oder ein <b>dunkle</b> Variante handelt.</entry-instructions>
     </subcategory>
   </category>
 </styleguide>
diff --git a/de/9B.xml b/de/9B.xml
index a6d942e682a023a5d65a74d96f5f9326aa85d216..1c27db5aaeac912c9a31b963481d1c3e6ba07b7a 100644
--- a/de/9B.xml
+++ b/de/9B.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="9">
     <subcategory id="9B">
       <name>Eisbock</name>
diff --git a/de/9C.xml b/de/9C.xml
index ef9888374da153203c4ba6d2e4fd09832bbc3af3..060cfdb3a2ae7d798d8e806befea8b6d57639027 100644
--- a/de/9C.xml
+++ b/de/9C.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<styleguide>
+<styleguide xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015">
   <category id="9">
     <subcategory id="9C">
       <name>Baltic Porter</name>
diff --git a/xsd/bjcp-styleguide-2015.xsd b/xsd/bjcp-styleguide-2015.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..cdf32ad06530ce768e846bcacbd7dd112692189c
--- /dev/null
+++ b/xsd/bjcp-styleguide-2015.xsd
@@ -0,0 +1,315 @@
+<?xml version="1.0"?>
+<xsd:schema targetNamespace="http://heimbrauconvention.de/bjcp-styleguide/2015"
+  xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015"
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+  xml:lang="en"
+  elementFormDefault="qualified"
+  attributeFormDefault="unqualified">
+  
+  <xsd:annotation>
+    <xsd:documentation>
+      ...
+    </xsd:documentation>
+  </xsd:annotation>
+  
+  <xsd:element name="styleguide">
+    <xsd:complexType>
+      <xsd:sequence>
+	<xsd:choice minOccurs="0" maxOccurs="unbounded">
+	  <xsd:element ref="chapter"/>
+	  <xsd:element ref="category"/>
+	</xsd:choice>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="chapter">
+    <xsd:complexType>
+      <xsd:complexContent>
+        <xsd:extension base="Chapter">
+	  <xsd:attribute name="id" use="required">
+	    <xsd:simpleType>
+	      <xsd:restriction base="xsd:string">
+		<xsd:pattern value="[a-zA-Z0-9\-]*"/>
+	      </xsd:restriction>
+	    </xsd:simpleType>
+	  </xsd:attribute>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="category">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+        <xsd:element name="description" type="Description" minOccurs="0"/>
+        <xsd:element name="entry-instructions" type="Text" minOccurs="0"/>
+        <xsd:element ref="subcategory" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+      <xsd:attribute name="id" use="required">
+        <xsd:simpleType>
+          <xsd:restriction base="xsd:string">
+            <xsd:pattern value="[a-zA-Z0-9\-]*"/>
+          </xsd:restriction>
+        </xsd:simpleType>
+      </xsd:attribute>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="subcategory">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="name" type="xsd:string" minOccurs="0"/>
+        <xsd:element name="description" type="Description" minOccurs="0"/>
+        <xsd:element name="overall-impression" type="Text" minOccurs="0"/>
+        <xsd:element name="aroma" type="Text" minOccurs="0"/>
+        <xsd:element name="appearance" type="Text" minOccurs="0"/>
+        <xsd:element name="flavor" type="Text" minOccurs="0"/>
+        <xsd:element name="mouthfeel" type="Text" minOccurs="0"/>
+        <xsd:element name="comments" type="Text" minOccurs="0"/>
+        <xsd:element name="history" type="Text" minOccurs="0"/>
+        <xsd:element name="characteristic-ingredients" type="Text" minOccurs="0"/>
+        <xsd:element name="style-comparison" type="Text" minOccurs="0"/>
+        <xsd:element name="commercial-examples" type="Text" minOccurs="0"/>
+        <xsd:element name="entry-instructions" type="Text" minOccurs="0"/>
+        <xsd:element ref="tags" minOccurs="0"/>
+        <xsd:element ref="specs" minOccurs="0"/>
+        <xsd:element ref="strength-classifications" minOccurs="0"/>
+        <xsd:element ref="subcategory" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+      <xsd:attribute name="id" use="required">
+        <xsd:simpleType>
+          <xsd:restriction base="xsd:string">
+            <xsd:pattern value="[a-zA-Z0-9\-]*"/>
+          </xsd:restriction>
+        </xsd:simpleType>
+      </xsd:attribute>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="Chapter">
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element name="h1" type="xsd:string"/>
+      <xsd:element name="h2" type="xsd:string"/>
+      <xsd:element name="h3" type="xsd:string"/>
+      <xsd:element name="h4" type="xsd:string"/>
+      <xsd:element ref="table"/>
+      <xsd:element ref="ul"/>
+      <xsd:element ref="ol"/>
+      <xsd:element ref="p"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:complexType name="Description">
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element ref="p"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+  <xsd:element name="tags">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element minOccurs="0" maxOccurs="unbounded" ref="tag"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="tag">
+    <xsd:simpleType>
+      <xsd:restriction base="xsd:NMTOKEN">
+        <xsd:enumeration value="session-strength"/>
+        <xsd:enumeration value="standard-strength"/>
+        <xsd:enumeration value="high-strength"/>
+        <xsd:enumeration value="very-high-strength"/>
+        <xsd:enumeration value="pale-color"/>
+        <xsd:enumeration value="amber-color"/>
+        <xsd:enumeration value="dark-color"/>
+        <xsd:enumeration value="top-fermented"/>
+        <xsd:enumeration value="bottom-fermented"/>
+        <xsd:enumeration value="any-fermentation"/>
+        <xsd:enumeration value="wild-fermented"/>
+        <xsd:enumeration value="lagered"/>
+        <xsd:enumeration value="aged"/>
+        <xsd:enumeration value="british-isles"/>
+        <xsd:enumeration value="western-europe"/>
+        <xsd:enumeration value="central-europe"/>
+        <xsd:enumeration value="eastern-europe"/>
+        <xsd:enumeration value="north-america"/>
+        <xsd:enumeration value="pacific"/>
+        <xsd:enumeration value="ipa-family"/>
+        <xsd:enumeration value="brown-ale-family"/>
+        <xsd:enumeration value="pale-ale-family"/>
+        <xsd:enumeration value="pale-lager-family"/>
+        <xsd:enumeration value="pilsner-family"/>
+        <xsd:enumeration value="amber-ale-family"/>
+        <xsd:enumeration value="amber-lager-family"/>
+        <xsd:enumeration value="dark-lager-family"/>
+        <xsd:enumeration value="porter-family"/>
+        <xsd:enumeration value="stout-family"/>
+        <xsd:enumeration value="bock-family"/>
+        <xsd:enumeration value="strong-ale-family"/>
+        <xsd:enumeration value="wheat-beer-family"/>
+        <xsd:enumeration value="specialty-beer"/>
+        <xsd:enumeration value="craft-style"/>
+        <xsd:enumeration value="traditional-style"/>
+        <xsd:enumeration value="historical-style"/>
+        <xsd:enumeration value="malty"/>
+        <xsd:enumeration value="bitter"/>
+        <xsd:enumeration value="balanced"/>
+        <xsd:enumeration value="hoppy"/>
+        <xsd:enumeration value="roasty"/>
+        <xsd:enumeration value="sweet"/>
+        <xsd:enumeration value="smoke"/>
+        <xsd:enumeration value="sour"/>
+        <xsd:enumeration value="wood"/>
+        <xsd:enumeration value="fruit"/>
+        <xsd:enumeration value="spice"/>
+      </xsd:restriction>
+    </xsd:simpleType>
+  </xsd:element>
+
+  <xsd:element name="specs">
+    <xsd:complexType mixed="true">
+      <xsd:sequence>
+        <xsd:element ref="ibu" minOccurs="0"/>
+        <xsd:element ref="srm" minOccurs="0"/>
+        <xsd:element ref="og" minOccurs="0"/>
+        <xsd:element ref="fg" minOccurs="0"/>
+        <xsd:element ref="abv" minOccurs="0"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="ibu">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="min"/>
+          <xsd:attribute name="max"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="srm">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="min"/>
+          <xsd:attribute name="max"/>
+          <xsd:attribute name="ebc-min"/>
+          <xsd:attribute name="ebc-max"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="og">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="min"/>
+          <xsd:attribute name="max"/>
+          <xsd:attribute name="plato-min"/>
+          <xsd:attribute name="plato-max"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="fg">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="min"/>
+          <xsd:attribute name="max"/>
+          <xsd:attribute name="plato-min"/>
+          <xsd:attribute name="plato-max"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="abv">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="min"/>
+          <xsd:attribute name="max"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="strength-classifications">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="strength" maxOccurs="unbounded" type="Text"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="table">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element minOccurs="0" maxOccurs="unbounded" ref="tr"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="tr">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="td" minOccurs="0" maxOccurs="unbounded" type="Text"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="ul">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="li" minOccurs="0" maxOccurs="unbounded" type="Text"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="ol">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element name="li" minOccurs="0" maxOccurs="unbounded" type="Text"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="p">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="class"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:element name="a">
+    <xsd:complexType mixed="true">
+      <xsd:complexContent>
+        <xsd:extension base="Text">
+          <xsd:attribute name="idref"/>
+        </xsd:extension>
+      </xsd:complexContent>
+    </xsd:complexType>
+  </xsd:element>
+
+  <xsd:complexType name="Text" mixed="true">
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:element name="b" type="xsd:string"/>
+      <xsd:element name="i" type="xsd:string"/>
+      <xsd:element name="u" type="xsd:string"/>
+      <xsd:element ref="a"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+
+</xsd:schema>
diff --git a/xsl/bjcp-2015-styleguide-doc-to-xml.xsl b/xsl/bjcp-2015-styleguide-doc-to-xml.xsl
index 661a2d20a8c51f32fe3ae4686de4f8cf787d4056..e580e50261d80b1352eac9cf22a49c13aa8eff55 100644
--- a/xsl/bjcp-2015-styleguide-doc-to-xml.xsl
+++ b/xsl/bjcp-2015-styleguide-doc-to-xml.xsl
@@ -1,6 +1,7 @@
 <?xml version="1.0"?>
 <xsl:stylesheet 
     version="1.0" 
+    xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015"
     xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:exsl="http://exslt.org/common"
@@ -205,6 +206,12 @@
         <xsl:with-param name="attribute">Style Comparison</xsl:with-param>
         <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
       </xsl:apply-templates>
+
+      <xsl:apply-templates select="following-sibling::w:p[1]" mode="attribute">
+        <xsl:with-param name="attribute">Commercial Examples</xsl:with-param>
+        <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
+      </xsl:apply-templates>
+
       <xsl:apply-templates select="following-sibling::w:p[1]" mode="attribute">
         <xsl:with-param name="attribute">Entry Instructions</xsl:with-param>
         <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
@@ -218,20 +225,15 @@
       -->
       <!-- TODO: Currently Defined Types sollte implizit klar sein. -->
 
-      <xsl:apply-templates select="following-sibling::w:p[1]" mode="specs">
-        <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
-      </xsl:apply-templates>
-
-      <xsl:apply-templates select="following-sibling::w:p[1]" mode="strengths">
+      <xsl:apply-templates select="following-sibling::w:p[1]" mode="tags">
         <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
       </xsl:apply-templates>
 
-      <xsl:apply-templates select="following-sibling::w:p[1]" mode="attribute">
-        <xsl:with-param name="attribute">Commercial Examples</xsl:with-param>
+      <xsl:apply-templates select="following-sibling::w:p[1]" mode="specs">
         <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
       </xsl:apply-templates>
 
-      <xsl:apply-templates select="following-sibling::w:p[1]" mode="tags">
+      <xsl:apply-templates select="following-sibling::w:p[1]" mode="strengths">
         <xsl:with-param name="id"><xsl:value-of select="$id0"/></xsl:with-param>
       </xsl:apply-templates>
 
@@ -541,7 +543,8 @@
     <xsl:choose>
       <xsl:when test="contains($tags, ' ')">
         <xsl:element name="tag">
-          <xsl:value-of select="substring-before($tags, ' ')"/>
+	  <!-- we have to adjust some tag names -->
+          <xsl:value-of select="str:replace(str:replace(str:replace(str:replace(str:replace(str:replace(substring-before($tags, ' '),'fermenting','fermented'),'fermentation','fermented'),'any-fermented','any-fermentation'),'session-beer','session-strength'),'sour-ale-family','sour'),'specialty-family','specialty-beer')"/>
         </xsl:element>
         <xsl:call-template name="tag">
           <xsl:with-param name="tags">
diff --git a/xsl/bjcp-2015-styleguide-split.xsl b/xsl/bjcp-2015-styleguide-split.xsl
index 695800450fa501ad42be53b0c5f0ab60b243cec8..dc0257ae8eef52aae394cb9884e7ca2e1928aa48 100644
--- a/xsl/bjcp-2015-styleguide-split.xsl
+++ b/xsl/bjcp-2015-styleguide-split.xsl
@@ -1,6 +1,8 @@
 <?xml version="1.0"?>
 <xsl:stylesheet 
     version="1.0" 
+    xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015"
+    xmlns:bjcp="http://heimbrauconvention.de/bjcp-styleguide/2015"
     xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
     xmlns:xhtml="http://www.w3.org/1999/xhtml"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
@@ -16,16 +18,16 @@
 
 
 
-  <xsl:template match="/styleguide">
-    <xsl:apply-templates select="chapter"/>
-    <xsl:apply-templates select="category"/>
-    <xsl:apply-templates select="category/subcategory"/>
-    <xsl:apply-templates select="category/subcategory/subcategory"/>
+  <xsl:template match="/bjcp:styleguide">
+    <xsl:apply-templates select="bjcp:chapter"/>
+    <xsl:apply-templates select="bjcp:category"/>
+    <xsl:apply-templates select="bjcp:category/bjcp:subcategory"/>
+    <xsl:apply-templates select="bjcp:category/bjcp:subcategory/bjcp:subcategory"/>
   </xsl:template>
 
 
 
-  <xsl:template match="/styleguide/chapter">
+  <xsl:template match="/bjcp:styleguide/bjcp:chapter">
     <xsl:variable name="filename">
       <xsl:text>orig/</xsl:text>
       <xsl:value-of select="@id"/>
@@ -43,7 +45,7 @@
 
 
 
-  <xsl:template match="/styleguide/category">
+  <xsl:template match="/bjcp:styleguide/bjcp:category">
     <xsl:variable name="filename">
       <xsl:text>orig/</xsl:text>
       <xsl:value-of select="@id"/>
@@ -61,7 +63,7 @@
 
 
 
-  <xsl:template match="/styleguide/category/subcategory">
+  <xsl:template match="/bjcp:styleguide/bjcp:category/bjcp:subcategory">
     <xsl:variable name="filename">
       <xsl:text>orig/</xsl:text>
       <xsl:value-of select="@id"/>
@@ -82,7 +84,7 @@
 
 
 
-  <xsl:template match="/styleguide/category/subcategory/subcategory">
+  <xsl:template match="/bjcp:styleguide/bjcp:category/bjcp:subcategory/bjcp:subcategory">
     <xsl:variable name="filename">
       <xsl:text>orig/</xsl:text>
       <xsl:value-of select="@id"/>
diff --git a/xsl/bjcp-2015-styleguide-translate.xsl b/xsl/bjcp-2015-styleguide-translate.xsl
index 2e99db2dc2de102648ee7854babce0acb47f3b83..e253a16e211ebf5c6111dd6305c4421fc9a21ea9 100644
--- a/xsl/bjcp-2015-styleguide-translate.xsl
+++ b/xsl/bjcp-2015-styleguide-translate.xsl
@@ -1,5 +1,7 @@
 <?xml version="1.0"?>
 <xsl:stylesheet version="1.0" 
+    xmlns="http://heimbrauconvention.de/bjcp-styleguide/2015"
+    xmlns:bjcp="http://heimbrauconvention.de/bjcp-styleguide/2015"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:exsl="http://exslt.org/common"
     xmlns:dyn="http://exslt.org/dynamic"
@@ -15,7 +17,7 @@
 
 
 
-  <xsl:template match="*">
+  <xsl:template match="bjcp:*">
     <xsl:element name="{local-name(.)}">
       <xsl:apply-templates select="@*"/>
       <xsl:apply-templates/>
@@ -24,7 +26,7 @@
 
 
 
-  <xsl:template match="chapter">
+  <xsl:template match="bjcp:chapter">
     <xsl:variable name="d">
       <xsl:text>../</xsl:text>
       <xsl:value-of select="$lang"/>
@@ -44,7 +46,7 @@
 
 
 
-  <xsl:template match="category">
+  <xsl:template match="bjcp:category">
     <xsl:variable name="d">
       <xsl:text>../</xsl:text>
       <xsl:value-of select="$lang"/>
@@ -69,7 +71,7 @@
 
 
 
-  <xsl:template match="category/subcategory">
+  <xsl:template match="bjcp:category/bjcp:subcategory">
     <xsl:variable name="d">
       <xsl:text>../</xsl:text>
       <xsl:value-of select="$lang"/>
@@ -94,7 +96,7 @@
 
 
 
-  <xsl:template match="category/subcategory/subcategory">
+  <xsl:template match="bjcp:category/bjcp:subcategory/bjcp:subcategory">
     <xsl:variable name="d">
       <xsl:text>../</xsl:text>
       <xsl:value-of select="$lang"/>
@@ -119,7 +121,7 @@
 
 
 
-  <xsl:template match="chapter" mode="chapter">
+  <xsl:template match="bjcp:chapter" mode="chapter">
     <xsl:param name="t"/>
     <xsl:variable name="p">
       <xsl:value-of select="$t"/>
@@ -139,11 +141,11 @@
 
 
 
-  <xsl:template match="name|description|overall-impression|aroma|appearance|flavor|mouthfeel|comments|history|characteristic-ingredients|style-comparison|entry-instructions|commercial-examples">
+  <xsl:template match="bjcp:name|bjcp:description|bjcp:overall-impression|bjcp:aroma|bjcp:appearance|bjcp:flavor|bjcp:mouthfeel|bjcp:comments|bjcp:history|bjcp:characteristic-ingredients|bjcp:style-comparison|bjcp:entry-instructions|bjcp:commercial-examples">
     <xsl:param name="t"/>
     <xsl:variable name="p">
       <xsl:value-of select="$t"/>
-      <xsl:text>/</xsl:text>
+      <xsl:text>/bjcp:</xsl:text>
       <xsl:value-of select="local-name(.)"/>
     </xsl:variable>
     <xsl:element name="{local-name(.)}">
@@ -162,7 +164,7 @@
 
 
   <!-- suppress these tags in translations -->
-  <xsl:template match="tags|specs">
+  <xsl:template match="bjcp:tags|bjcp:specs">
   </xsl:template>