Para la reposición de archivo por el Labor Day en Estados Unidos, el editor de Daily WTF Remy Porter recupera un envío de la lectora Stella, quien heredó un esquema XML pensado para validar un lenguaje de consulta casero usado en un sistema de reservas de viajes.
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 = "#" nameEl lenguaje, llamado "Source", permite referenciar datos de reserva estructurados mediante rutas separadas por puntos, como Product.Accommodation.SellingAccom.Unit.SellingUnit, Product.OnewayFlight.BookingClass, Product.ReturnFlight.Inbound, Product.ReturnFlight.Outbound o Product.Addon.Service.ServiceFeature. Las consultas también pueden llevar un prefijo opcional de indicadores ordenados: alcance (local o global), tipo de componente (real, virtual o ComponentType.all), jerarquía (self, ancestors, descendants o Hierarchy.all) y asignación de día (first, last o DayAllocation.all), separados de la ruta por dos puntos.
En lugar de expresar esa gramática mediante tipos XSD anidados, el predecesor de Stella empaquetó todo el conjunto de reglas en una sola expresión regular xs:pattern, de 1.310 caracteres, dentro de un xs:simpleType llamado SourceAttributeType. Stella tuvo que localizar y corregir un error en esa expresión, describiendo la depuración como algo que mata "unos pocos gatitos" cada vez que se evalúa el patrón.
El esquema sí incluye documentación, en alemán e inglés, que explica la misma gramática en prosa legible justo encima del regex ilegible que se supone debe hacerla cumplir.




Comentarios
Aún no hay comentarios — escribe el primero.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.