Schematron
Schematron är ett regelbaserat valideringsspråk för att göra påståenden om närvaron eller frånvaron av mönster i XML -träd. Det är ett strukturellt schemaspråk uttryckt i XML med ett litet antal element och XPath .
I många implementeringar bearbetas Schematron-schemat XML till normal XSLT- kod för distribution överallt där XSLT kan användas.
Schematron kan uttrycka begränsningar på sätt som andra XML-schemaspråk som XML Schema och DTD inte kan. Det kan till exempel kräva att innehållet i ett element kontrolleras av ett av dess syskon. Eller det kan begära eller kräva att rotelementet, oavsett vilket element det är, måste ha specifika attribut. Schematron kan också specificera nödvändiga relationer mellan flera XML-filer.
Begränsningar och innehållsregler kan vara associerade med "vanligt engelska" (eller något språk) valideringsfelmeddelanden, vilket möjliggör översättning av numeriska Schematron-felkoder till meningsfulla användarfelmeddelanden.
Den nuvarande ISO- rekommendationen är Informationsteknologi, Document Schema Definition Languages (DSDL), Del 3: Regelbaserad validering, Schematron (ISO/IEC 19757-3:2020).
Används
Begränsningar specificeras i Schematron med ett XPath-baserat språk som kan distribueras som XSLT-kod, vilket gör det praktiskt för applikationer som följande:
- Tillägg till strukturell validering
- Genom att testa för begränsningar av samtidig förekomst, icke-regelbundna begränsningar och begränsningar mellan dokument, kan Schematron utöka valideringarna som kan uttryckas på språk som DTDs , RELAX NG eller XML Schema .
- Lightweight Business Rules Engine
- Schematron är inte en heltäckande Rete- regelmotor, men den kan användas för att uttrycka regler om komplexa strukturer med ett XML-dokument.
- XML Editor Syntax Markeringsregler
- Vissa XML-redigerare använder Schematron-regler för att villkorligt markera XML-filer för fel. Inte alla XML-redigerare stöder Schematron.
Versioner
Schematron uppfanns av Rick Jelliffe vid Academia Sinica Computing Centre, Taiwan. Han beskrev Schematron som "en dammduk för att nå de delar som andra schemaspråk inte kan nå".
De vanligaste versionerna av Schematron är:
- Schematron 1.0 (1999)
- Schematron 1.3 (2000): Denna version använde namnutrymmet http://xml.ascc.net/schematron/ . Det stöddes av en XSLT-implementering med en plug-in-arkitektur.
- Schematron 1.5 (2001): Denna version implementerades i stor utsträckning och kan fortfarande hittas.
- Schematron 1.6 (2002): Denna version var basen för ISO Schematron och föråldrad av den.
- ISO Schematron (2006): Denna version reglerar flera funktioner och tillhandahåller ett XML-utdataformat, Schematron Validation Report Language (SVRL). Den använder den nya namnrymden http://purl.oclc.org/dsdl/schematron .
- ISO Schematron (2010): Denna version lade till stöd för XSLT2.
- ISO Schematron (2016):
- ISO Schematron (2020): Denna version lade till stöd för XSLT3.
Schematron som en ISO-standard
Schematron har standardiserats av ISO som informationsteknologi, Document Schema Definition Languages (DSDL) , Del 3: Regelbaserad validering, Schematron (ISO/IEC 19757-3:2020).
Denna standard är för närvarande inte listad på ISO:s publikt tillgängliga specifikationer- lista. Pappersversioner kan köpas från ISO eller nationella standardiseringsorgan.
Schema som använder ISO/IEC FDIS 19757-3 bör använda följande namnområde:
http://purl.oclc.org/dsdl/schematron
Exempelregel
Schematronregler kan skapas med en vanlig XML-redigerare eller XForms -applikation. Följande är ett exempelschema:
<schema xmlns= "http://purl.oclc.org/dsdl/schematron" > <pattern> <title> Datumregler </title> <rule context= "Contract" > <assert test= "ContractDate > aktuellt datum" ()" > ContractDate bör ligga i det förflutna eftersom framtida kontrakt inte är tillåtna. </assert> </rule> </pattern> </schema>
Den här regeln kontrollerar att XML-elementet ContractDate har ett datum som ligger före det aktuella datumet. Om denna regel misslyckas kommer valideringen att misslyckas och ett felmeddelande som är huvuddelen av ansökningselementet kommer att returneras till användaren.
Genomförande
Schematron-scheman är lämpliga för användning i XML-pipelines , vilket gör det möjligt för arbetsflödesprocessdesigner att bygga och underhålla regler med hjälp av XML-manipuleringsverktyg. W3C:s XPoc- pipeliningspråk har till exempel inbyggt stöd för Schematron-schemabearbetning genom steget "validera-med-schematron".
Eftersom Schematron-scheman kan omvandlas till XSLT- formatmallar, kan dessa själva användas i XML-pipelines som stöder XSLT-transformation. En Apache Ant -uppgift kan användas för att konvertera Schematron-regler till XSLT-filer.
Det finns också inbyggd Schematron-implementering, som Java-implementeringen från Innovimax/ INRIA , QuiXSchematron , som också gör streaming .
Se även
- XML Schema Language comparison - Jämförelse med andra XML Schema-språk.
- Service Modeling Language - Service Modeling Language använder Schematron.
- Dokumentschema definitionsspråk