Zum Feiertag Labor Day in den USA holt Daily-WTF-Redakteur Remy Porter eine ältere Einsendung der Leserin Stella hervor, die ein XML-Schema erbte, das eine hausgemachte Abfragesprache für ein Reisebuchungssystem validieren sollte.
source = ( Feature1+Feature2+... ":" )? steps
Feature1 = "local" | "global"
Feature2 = "real" | "virtual" | "ComponentType.all"
Feature3 = "self" | "ancestors" | "descendants" | "Hierarchy.all"
Feature4 = "first" | "last" | "DayAllocation.all"
steps = oneOrMoreNameSteps | zeroOrMoreNameSteps | componentSteps
nameStep = "#" nameDie Sprache namens "Source" erlaubt es, über punktgetrennte Pfade auf strukturierte Buchungsdaten zuzugreifen, etwa Product.Accommodation.SellingAccom.Unit.SellingUnit, Product.OnewayFlight.BookingClass, Product.ReturnFlight.Inbound, Product.ReturnFlight.Outbound oder Product.Addon.Service.ServiceFeature. Optional lässt sich dem Pfad ein Präfix aus geordneten Flags voranstellen: Scope (local oder global), Komponententyp (real, virtual oder ComponentType.all), Hierarchie (self, ancestors, descendants oder Hierarchy.all) und Tageszuordnung (first, last oder DayAllocation.all), getrennt vom Pfad durch einen Doppelpunkt.
Statt diese Grammatik über verschachtelte XSD-Typen abzubilden, hatte Stellas Vorgänger das komplette Regelwerk in einen einzigen xs:pattern-Ausdruck gepresst, 1.310 Zeichen lang, innerhalb eines xs:simpleType namens SourceAttributeType. Stella musste darin einen Fehler aufspüren und beheben und beschrieb das Debugging als etwas, bei dem jedes Mal "ein paar kleine Kätzchen sterben", wenn der Ausdruck ausgewertet wird.
Das Schema enthält immerhin Dokumentation auf Deutsch und Englisch, die dieselbe Grammatik in lesbarer Prosa direkt über dem unlesbaren Regex erklärt, der sie eigentlich durchsetzen soll.




Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.