Schematron Jest językiem pozwalającym na definiowanie reguł walidacji dokumentów XML. Reguły te zapisywane są w plikach xml (nadaje się im rozszerzenie .sch). Można je też umieszczać w schematach XML Schema (w plikach .xsd) czy też w RNG lub DTD schema. Podczas walidacji dokumentów XML schematronem wykorzystuje się mechanizm transformacji XSL (nierzadko kilkustopniowy). Specyfikacja schematrony stała się standardem ISO 19757-3. Standard ten był początkowo udostępniany nieodpłatnie. W 2020 roku dokonano aktualizacji standardu. Nowszą wersję standardu zaczęto udostępniać odpłatnie. Starszą wersję standardu w postaci dokumentu pdf można pobrać ze strony:https://standards.iso.org/ittf/PubliclyAvailableStandards/c055982_ISO_IEC_19757-3_2016.zip Zestawy szablonów xsl stosowanych podczas walidacji schematronem można znaleźć na githubie. Oryginalna implementacja szablonów xsldla schematronu ("skeleton" XSLT implementation of ISO) dostępna jest pod adresem: https://github.com/Schematron/schematron Nowsza implementacja (schxslt) dostępna jest pod adresem: https://github.com/schxslt/schxslt Walidacja dokumentów xml za pomocą schematronu polega w ogólności na (https://schematron.com/front-page/the-schematron-skeleton-implementation/):
1. transformacji schematu schematronowego do dokumentu XSL

Zwykle wiąże się to z uruchomieniem łańcucha przetwarzania:
    xslt -stylesheet iso_dsdl_include.xsl  theSchema.sch > theSchema1.sch
    xslt -stylesheet iso_abstract_expand.xsl  theSchema1.sch > theSchema2.sch
    xslt -stylesheet iso_svrl_for_xsltn.xsl  theSchema2.sch > theSchema.xsl

2. Wykorzystaniu uzyskanego dokumentu XSL do transformacji walidowanego dokumentu do dokumentu svrl (Schematron Validation Report Language)

Wiąże się to z uruchomieniem komendy:
    xslt -stylesheet theSchema.xsl  myDocument.xml > myResult.xml
Oczywiście xsl w powyższych poleceniach powinno być zamienione odpowiednią nazwą wykorzystywanego narzędzia. Jeśli schemat schematronowy używa XSLT2/Xpath 2, wtedy rekomendowane jest użycie Saxon XSLT library. Przykłady wywołań z linii komend (wymagane jest zainstalowanie bibliotek xerces i saxon): # przygotowanie szablonu xsl (tmp.xsl) przy zadanych regułach schematronu (simple.sch), produkującego wyjście tekstowe - obsługiwane szablonem iso_schematron_text.xsl java -mx250m -ms250m -cp .;ścieżka_do_biblioteki\SaxonHE10-5J\saxon-he-10.5.jar;ścieżka_do_biblioteki\xerces-2_12_1\xercesImpl.jar net.sf.saxon.Transform -x:org.apache.xerces.parsers.SAXParser -o:tmp.xsl simple.sch iso_schematron_text.xsl # przygotowanie szablonu xsl (tmp.xsl) przy zadanych regułach schematronu (simple.sch), produkującego wyjście svrl - obsługiwane szablonem iso_svrl_for_xslt2.xsl, # Uwaga: jeśli już pracuje się z sxlt2, to schematron w simple.sch powinien posiadać atrybut: queryBinding="xslt2" java -mx250m -ms250m -cp .;ścieżka_do_biblioteki\SaxonHE10-5J\saxon-he-10.5.jar;ścieżka_do_biblioteki\xerces-2_12_1\xercesImpl.jar net.sf.saxon.Transform -x:org.apache.xerces.parsers.SAXParser -o:tmp.xsl simple.sch iso_svrl_for_xslt2.xsl # przygotowanie szablonu xsl (tmp.xsl) przy zadanych regułach schematronu (simple.sch), produkującego wyjście svrl - obsługiwane szablonem iso_svrl_for_xslt2.xsl - podejście nowe java -mx250m -ms250m -cp .;ścieżka_do_biblioteki\SaxonHE10-5J\saxon-he-10.5.jar;ścieżka_do_biblioteki\xerces-2_12_1\xercesImpl.jar net.sf.saxon.Transform -x:org.apache.xerces.parsers.SAXParser -o:tmp.xsl simple.sch ścieżka_do_zestawu_szablonów\schxslt-1.7.1\2.0\pipeline-for-svrl.xsl # zastosowanie szblonu xsl (tmp.xsl) do walidacji zadanego pliku xml (simpleInput.xml), z wyjściem do tmp.out java -mx250m -ms250m -cp .;ścieżka_do_biblioteki\SaxonHE10-5J\saxon-he-10.5.jar;ścieżka_do_biblioteki\xerces-2_12_1\xercesImpl.jar net.sf.saxon.Transform -x:org.apache.xerces.parsers.SAXParser -o:tmp.out simpleInput.xml tmp.xsl Narzędzia: Walidator (przykład, jak uruchomić z linii komend oraz z kodu java) https://github.com/itplr-kosit/validator Biblioteka https://sourceforge.net/projects/saxon/files/Saxon-HE/10/Java/SaxonHE10-5J.zip/download