Was wurde aus XML und XSLT?

Cartoonhafte Blätter mit Aufschrift XML und XSLT fliehen aus einer blauen Mülltonne

Die tote Webtechnologie, die keiner vermisst

Meta-Description:
XML und XSLT sollten einst das Web revolutionieren – doch was wurde wirklich aus den beiden? Ein zynischer Blick auf tote Technologien, überladene Tags und moderne Alternativen.


1. Einleitung: Der Traum vom semantischen Web

Es war einmal, im finsteren Zeitalter vor HTML5, da träumten Webentwickler von einer besseren Welt. Einer Welt, in der man sich seine Tags selbst aussuchen konnte. Einer Welt, in der Design und Inhalt so konsequent getrennt waren, dass man beide hassen lernte. Einer Welt… mit XML und XSLT.

XML – das Extensible Markup Language – klang nach Fortschritt, nach Struktur, nach Ordnung im HTML-Chaos. Und XSLT? Das war der Versuch, Stylesheets mit einer Gehirnverdrehung zu kombinieren. Wenn du jemals versucht hast, ein <xsl:for-each> mit einem Namespace zu debuggen, dann hast du wahrscheinlich heute noch Albträume in UTF-8.

Doch was wurde eigentlich aus dieser glorreichen Vision? Warum sieht das Web heute aus wie React-Komponenten mit CSS-Grütze – und nicht wie ein gepflegtes XML-Skulpturenmuseum?

Willkommen im Gruselkabinett der Webentwicklung.
Wir graben aus, was längst vergessen schien – und zeigen dir, warum das vielleicht auch besser so ist.


2. XML: Die Sprache der Hoffnung – und des Wahnsinns

In den späten 90ern war XML das neue heiße Ding. Die Idee: HTML ist zu fest verdrahtet, zu unflexibel. XML dagegen lässt dich selbst bestimmen, wie deine Tags heißen. Statt <div> und <p> konntest du plötzlich <produkt>, <preis> oder <superMegaDatenModul> verwenden.

Das versprach Semantik, Struktur, Zukunft – und endete in Chaos, Namespaces und nicht enden wollenden DTDs. Der Mensch war frei. Viel zu frei.

3. XSLT: Wenn Stylesheets Albträume bekommen

Dann kam XSLT – das „eXtensible Stylesheet Language Transformations“. Der Name allein klingt schon nach XML-Sekte. Die Idee war eigentlich clever: Statt HTML mit Layout zu schreiben, schreibst du XML mit Inhalt – und XSLT formt es zu hübschem HTML.

Oder zu dem, was man damals für hübsch hielt.

Aber XSLT war nicht CSS. Es war XPath, Templates, Bedingungshölle und eine Schreibweise, bei der jedes < doppelt und jedes </ dreifach gezählt werden musste. Wer damit arbeiten musste, lernte schnell: Das Web ist nicht freundlich.


4. 🧟 Das Gruselkabinett: Ein extremes, aber valides XML+XSLT-Beispiel

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rezept-style.xsl"?>

<kochbuch xmlns="https://prokrastinerd.de/rezept"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://prokrastinerd.de/rezept rezept.xsd">

  <rezept datum="2025-04-14T12:34:56" vegetarisch="true">
    <titel>XML-Auflauf mit XSLT-Kruste</titel>
    <autor>Gray The Zebra</autor>
    <zutaten>
      <zutat menge="200g">Verzweiflung</zutat>
      <zutat menge="100ml">Tränen von Entwicklern</zutat>
      <zutat menge="1 EL">Namespace-Magie</zutat>
    </zutaten>
    <zubereitung>
      Alles in eine Datei werfen, mehrfach validieren,
      bei Fehlern laut fluchen und dann im Browser servieren.
    </zubereitung>
  </rezept>

</kochbuch>

<!-- rezept-style.xsl -->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:rez="https://prokrastinerd.de/rezept"
    exclude-result-prefixes="rez">

  <xsl:output method="html" encoding="UTF-8"/>

  <xsl:template match="/">
    <html>
      <head>
        <title><xsl:value-of select="//rez:titel"/></title>
        <style>
          body { font-family: monospace; background: #fffbf0; padding: 2em; }
          h1 { color: darkred; }
          ul { list-style-type: square; }
        </style>
      </head>
      <body>
        <h1><xsl:value-of select="//rez:titel"/></h1>
        <p><strong>Von:</strong> <xsl:value-of select="//rez:autor"/></p>

        <xsl:if test="//rez:rezept/@vegetarisch='true'">
          <p><em>Geeignet für Vegetarier</em></p>
        </xsl:if>

        <h2>Zutaten:</h2>
        <ul>
          <xsl:for-each select="//rez:zutat">
            <li><xsl:value-of select="@menge"/> <xsl:value-of select="."/></li>
          </xsl:for-each>
        </ul>

        <h2>Zubereitung:</h2>
        <p><xsl:value-of select="//rez:zubereitung"/></p>

        <footer>
          <small>Stand: <xsl:value-of select="//rez:rezept/@datum"/></small>
        </footer>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>


5. 🔁 Und heute?

// rezept.json
{
  "titel": "XML-Auflauf mit XSLT-Kruste",
  "autor": "Gray The Zebra",
  "vegetarisch": true,
  "datum": "2025-04-14T12:34:56",
  "zutaten": [
    { "menge": "200g", "name": "Verzweiflung" },
    { "menge": "100ml", "name": "Tränen von Entwicklern" },
    { "menge": "1 EL", "name": "Namespace-Magie" }
  ],
  "zubereitung": "Alles in eine Datei werfen, mehrfach validieren, bei Fehlern laut fluchen und dann im Browser servieren."
}

<!-- index.html -->
<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <title>Rezept</title>
  <style>
    body { font-family: sans-serif; background: #f0f8ff; padding: 2em; }
    h1 { color: seagreen; }
    ul { list-style-type: disc; }
  </style>
</head>
<body>
  <div id="rezept"></div>

  <script>
    fetch('rezept.json')
      .then(response => response.json())
      .then(data => {
        const container = document.getElementById('rezept');
        container.innerHTML = `
          <h1>${data.titel}</h1>
          <p><strong>Von:</strong> ${data.autor}</p>
          ${data.vegetarisch ? '<p><em>Geeignet für Vegetarier</em></p>' : ''}
          <h2>Zutaten:</h2>
          <ul>
            ${data.zutaten.map(z => `<li>${z.menge} ${z.name}</li>`).join('')}
          </ul>
          <h2>Zubereitung:</h2>
          <p>${data.zubereitung}</p>
          <footer><small>Stand: ${data.datum}</small></footer>
        `;
      });
  </script>
</body>
</html>


6. Fazit: XML lebt – aber bitte im Maschinenraum

XML ist nicht tot. Es ist nur dahin zurückgekehrt, wo es hingehört: tief in die dunklen Eingeweide von Maschinenprotokollen, Konfigurationsdateien, E-Book-Formaten und Industrienormen.

Und XSLT? Hat sich dort in einer .xsl-Datei zusammengerollt und schläft. Hoffentlich für immer.

Aber wir danken ihnen für ihren Dienst.
Möge der Validator immer mit euch sein. Amen.

Comicstil-Grabstein mit Aufschrift XML & XSLT – „Zu strukturiert fürs echte Leben.“

Und falls du dir dieses Kapitel aus der Web-Geschichte ins Bücherregal stellen willst, gibt’s da noch XSLT Cookbook: Solutions and Examples for XML and XSLT Developers* (bezahlter Link) – über 700 Seiten Nostalgie und Schmerz.

Für besonders Mutige: Das offizielle XSLT-Tutorial vom W3C – mit eingebauter Frustgarantie.