diff --git a/hyperbook/book/spiele/25_hase-und-igel/xml.md b/hyperbook/book/spiele/25_hase-und-igel/xml.md
index 5d37e582..f421a2ba 100644
--- a/hyperbook/book/spiele/25_hase-und-igel/xml.md
+++ b/hyperbook/book/spiele/25_hase-und-igel/xml.md
@@ -1,6 +1,5 @@
---
name: XML-Dokumentation
-permaid: xml
---
# XML-Elemente des Spiels Hase und Igel
diff --git a/hyperbook/book/spiele/26_piranhas/xml.md b/hyperbook/book/spiele/26_piranhas/xml.md
new file mode 100644
index 00000000..ef92c33d
--- /dev/null
+++ b/hyperbook/book/spiele/26_piranhas/xml.md
@@ -0,0 +1,177 @@
+---
+name: XML Dokumentation
+permaid: xml
+---
+
+# XML-Elemente des Spiels Piranhas
+
+Diese Dokumentation beschreibt die spielspezifischen Elemente des [XML-Protokolls](/xml/protokoll)
+für das Spiel Piranhas.
+
+## Spielstatus
+
+Die folgende XML-Struktur beschreibt den regelmäßig mitgeteilten Spielstatus.
+Gesendet wird diese Nachricht immer dann, wenn sich was am Spielfeld ändert,
+d.h. wenn ein Spieler einen Zug gespielt hat.
+
+Ein Status enthält das aktuelle Spielfeld und den zuletzt gespielten Zug.
+Das Spielbrett ist ein 2-Dimensionales Grid an Feldern,
+mit dem Koordinatenursprung (0 , 0) unten links in der Ecke.
+Entsprechend überträgt der Server das Spielfeld aufgeteilt
+in die einzelnen Reihen und beginnt dabei mit der untersten Reihe.
+Die Reihen werden von links nach rechts beschrieben.
+Der zuletzt im Spiel gespielte Zug `lastMove` ist wie ein gewöhnlicher
+[Zug](/spiele/26_piranhas/xml#zug-senden) aufgebaut.
+
+```xml
+
+
+
+
+
+ UP_RIGHT
+
+
+
+ TWO_S
+ TWO_S
+ TWO_S
+ EMPTY
+ EMPTY
+ EMPTY
+ EMPTY
+ TWO_L
+ TWO_M
+ EMPTY
+
+
+ ONE_S
+ EMPTY
+ EMPTY
+ EMPTY
+ SQUID
+ EMPTY
+ EMPTY
+ ONE_M
+ EMPTY
+ EMPTY
+
+ ...
+
+ EMPTY
+ TWO_M
+ ...
+ TWO_M
+ EMPTY
+
+
+
+
+
+```
+
+### Felder
+
+Die Felder werden wie folgt codiert:
+
+- Leeres Feld: `EMPTY`
+- Krakenfeld: `SQUID`
+- Feld mit Fisch: `TEAM_GRÖßE` (z.B. `ONE_S` für den kleinen Fisch des Spielers 1, meist Rot)
+ - wobei TEAM `ONE` oder `TWO` ist
+ - und GRÖßE `S`, `M` oder `L` ist, der Größe des Fisches
+
+## Spiel betreten ohne Reservierungscode
+
+Betritt ein beliebiges offenes Spiel:
+
+```xml
+
+```
+
+Sollte kein Spiel offen sein, wird so ein neues erstellt.
+Je nachdem ob `paused` in `server.properties` true oder false ist,
+wird das Spiel pausiert gestartet oder nicht.
+
+## Spielzug
+
+### Aufforderung
+
+Wenn der eigene Client am Zug ist, folgt nach dem Spielstatus diese
+Aufforderung, dass der Server einen Zug erwartet:
+
+```xml
+
+
+
+```
+
+### Zug senden
+
+Ein Zug im Spiel Pirnhas besteht immer aus einer Startposition,
+auf dem ein Fisch des eigenen Teams liegen muss
+und einer Richtung, in welcher sich dieser Fisch bewegen soll:
+
+```xml
+
+
+
+ LEFT
+
+
+```
+
+Die Richtung ist codiert als einer der folgenden acht Optionen:
+
+`UP` `UP_RIGHT` `RIGHT` `DOWN_RIGHT` `DOWN` `DOWN_LEFT` `LEFT` `UP_LEFT`
+
+## Spielergebnis
+
+Wenn das Spiel vorbei ist, erhalten die Clients das Ergebnis der Partie:
+
+```xml
+
+
+
+
+ SUM
+ true
+
+
+ AVERAGE
+ true
+
+
+
+
+
+
+ 0
+ 2
+
+
+
+
+
+ 2
+ 5
+
+
+
+
+
+
+```
+
+Unter `scores` werden jeweils die beiden Spieler mit den erreichten Punkten aufgezählt.
+Was genau die Werte in `part` bedeuten, steht in der `definition`.
+Für Piranhas ist das die Anzahl der Siegpunkte,
+die im Wettkampfsystem angerechnet werden
+und die am Ende des Spiel erreichte Schwarmgröße.
+
+In diesem Beispiel sieht man, dass Spieler 2 mit einer Schwarmgröße von 5 diese Runde gewonnen hat.
+
+Bei einem Unentschieden erhalten beide Spieler jeweils einen Siegpunkt und der `winner`-Tag führt kein Team:
+
+```xml
+
+```
\ No newline at end of file