Einführung in XSpec

Was macht XSpec?

In einer XSpec-Datei stehen im Wesentlichen drei Dinge: Was wird aufgerufen? Welche Daten bekommt es? Was soll herauskommen? XSpec führt die Tests aus und stellt das tatsächliche Ergebnis dem erwarteten Ergebnis gegenüber. Das funktioniert mit XSLT, XQuery, Schematron und in der hier verwendeten Version auch mit XProc.

Ein kleines Beispiel: Eine Funktion soll aus der Spaltennummer 27 den Excel-Spaltennamen AA machen. Dafür brauchen wir weder eine komplette Excel-Datei noch ein installiertes Office. Wir rufen nur die Funktion auf und prüfen ihren Rückgabewert:

examples/04-columns/column-name.xspec

<x:scenario xmlns:x="http://www.jenitennison.com/xslt/xspec" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:f="urn:example:columns"
  xmlns:e="urn:example:errors" label="Column 27 is AA">
    <x:call function="f:column-name"><x:param select="27"/></x:call>
    <x:expect label="Return AA" select="'AA'" result-type="xs:string"/>
  </x:scenario>

x:call ruft die Funktion auf, x:param übergibt die Zahl und x:expect enthält das erwartete Ergebnis. Das Präfix f gehört zu unserer Beispielbibliothek. In der vollständigen Datei im Download sind auch der Namensraum und der Pfad zum Stylesheet angegeben.

Damit ist eine klar umrissene Aufgabe abgesichert. Liefert die Funktion nach einer Änderung etwas anderes als AA, fällt der Test auf. Weitere Eingaben lassen sich als weitere Szenarien ergänzen.

Woher kommt XSpec?

XSpec wurde von Jeni Tennison initiiert und gemeinsam mit Florent Georges weiterentwickelt. Als Vorbild diente RSpec aus der Ruby-Welt. Daher stammt auch die Idee, das gewünschte Verhalten in gut lesbaren Szenarien zu beschreiben. XSpec greift damit Ideen des Behavior-Driven Development, kurz BDD, auf. Für den Einstieg brauchen wir daraus vor allem einen Gedanken: Ein Test soll verständlich zeigen, was der Code leisten soll.

Das Projekt lag zunächst auf Google Code und wechselte später zu GitHub. Seit 2016 wurde es wieder aktiv weiterentwickelt. Bei data2type haben wir XSpec bereits im Jahr 2013 in einer Schulung eingesetzt. Zwei Aufgaben daraus greifen wir hier wieder auf: Initialen in Absätzen und die Berechnung von Excel-Spaltennamen. Die Beispiele sind für dieses Paket neu aufbereitet.

Mit welcher Version arbeiten die Beispiele?

Das Paket verwendet XSpec 4.0.3 vom 19. Juni 2026. Beim Versionscheck am 21. September 2026 war das die neueste stabile Ausgabe. Die 4.0-Reihe ergänzt unter anderem Tests für eigene XProc-3-Schritte. Version 4.0.3 behebt Fehler bei Schematron-Tests und der XSLT-Codeabdeckung und enthält SchXslt2 1.11.1.

Die feste Versionsnummer hilft beim Nachmachen: Alle arbeiten mit derselben Grundlage. In der Online-Dokumentation sind manche Funktionen bereits für die kommende Version 4.1 beschrieben. Solche Beispiele lassen sich nicht ohne Weiteres mit 4.0.3 verwenden.

<< zurück                                                                                                             vor >>