schematron.com Open in urlscan Pro
103.127.18.104  Public Scan

Submitted URL: http://schematron.com/
Effective URL: https://schematron.com/
Submission Tags: tranco_l324
Submission: On May 25 via api from DE — Scanned from AU

Form analysis 1 forms found in the DOM

POST /search.html?question=

<form novalidate="novalidate" action="/search.html?question=" method="post" class="v-form s-search-field-form">
  <div class="v-input s-search-field v-input--hide-details theme--light v-text-field v-text-field--single-line v-text-field--solo v-text-field--is-booted v-text-field--enclosed v-text-field--placeholder">
    <div class="v-input__control">
      <div class="v-input__slot grey lighten-3">
        <div class="v-text-field__slot"><label for="site-search" class="v-label theme--light" style="left: 0px; right: auto; position: absolute;">Search</label><input role="combobox" autocomplete="off" aria-label="Search"
            aria-controls="autocomplete-site-search" hide-no-data="" aria-haspopup="true" aria-expanded="false" id="site-search" type="search"></div>
        <div class="v-input__append-inner">
          <div class="v-input__icon v-input__icon--clear"><button disabled="disabled" type="button" aria-label="clear icon" class="v-icon notranslate v-icon--disabled v-icon--link theme--light"><svg xmlns="http://www.w3.org/2000/svg"
                viewBox="0 0 24 24" role="img" aria-hidden="true" class="v-icon__svg">
                <path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"></path>
              </svg></button></div>
        </div>
        <div class="v-input__append-inner"><button type="submit" class="mr-n3 v-btn v-btn--icon v-btn--round theme--light v-size--default"><span class="v-btn__content"><svg class="s-icon icon-search grey--text text--darken-1" title="search"
                viewBox="0 0 512 512" role="img">
                <title>search icon</title>
                <path
                  d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z">
                </path>
              </svg></span></button></div>
      </div>
    </div>
  </div>
  <div class="v-menu"><!----></div>
</form>

Text Content

Skip to search Skip to navigation Skip to content
Search

search icon

Schematron angle-down icon


News angle-down icon

Hints angle-down icon

Opinion angle-down icon

Academic
Citing
Implementation
Off-Topic
Open Licenses
Overview
Who Uses?
WhyIsSchematronDifferent?





A language for making assertions about the presence or absence of patterns in
linked XML documents.




New Book

Schematron: A Language for Validating XML

Erik Siegel’s new book is a systematic and thorough introduction explaining all
elements and attributes of Schematron with common ways to use them.

Developers will appreciate the large XPath primer, together with appendixes on
Schematron, Namespaces, SVRL and Schematron Quick Fix. It follows the most
recent version of the ISO Standard and is geared for XPath3.

The 260 page XML Press  book is available in paperback; electronic versions are
available in ePub, mobi (Kindle), and PDF.  Release announced with
overview: XML.COM (November 2022.)

A book review by Rick Jelliffe is here.

Erik also introduces Schematron in two YouTube videos from  Declarative
Amsterdam (1 and 2)  Nov 7-9, 2022. 









About
schematron.com

A website for all things Schematron. 

 * Scores of articles on topics about Schematron, XML, Standards and more. Use
   the Search panel at the top, or browse them using the menu for News,
   Standards, Hints, Opinion, and Off-Topic.
 * Links to Open things: implementations, standards, licenses, documentation
 * Specialist material: preferred academic citation conventions, procurement
   best practise.
 * New: Dave Pawson's Schematron Tutorial is coming.
 * New: The Schematron Open Documentation project is coming (4Q 2021)




OVERVIEW

What Makes Schematron Unique?

Who Uses Schematron?






WHAT IS SCHEMATRON USED FOR?

Schematron is used for business rules validation, data reporting, general
validation, quality control, quality assurance, firewalling, filtering,
constraint checking, naming and design rules checking, statistical consistency,
data exploration, transformation testing, feature extraction, house-style-rules
checking.

It is use in sectors such as finance, health, aerospace, homeland security, tax,
scientific computing, and publishing.

NEWS: Schematron has helped our fight against COVID: in the US, real-time data
on Emergency Medical admissions and causes is collected by National Emergency
Medical Services Information System (NEMSIS). Schematron has allowed them a
practical route to having subject-matter experts specify rules in plain English,
then developers implement exactly those rules. Read their excellent Schematron
Guide, or see their online Library of national and state-level Schematron Rules.
(Hint: try “PA”)



--------------------------------------------------------------------------------


OPEN SOURCE IMPLEMENTATIONS

There are two Open Source implementations of Schematron for XSLT at GitHub:

 * The skeleton implementation, which was the original code by Rick Jelliffe
   with numerous contributions.  It is not expected that this code will be
   developed further.
   
   
 * SchXslt [ʃˈɛksl̩t], a cleaner re-implementation by David Maus, very
   compatible with the skeleton. The initial version only took 704 lines of
   code!

Search the web for implementations of Schematron in your language of choice:
from Ant to Scala; these typically host the XSLT scripts and look after
housekeeping.

As well, several systems are available which support Schematron embedded in
other Schema languages: for example, the Apache Daffodil system allows
Schematron embedded in the XSD-subset DFDL.

Implementation

--------------------------------------------------------------------------------


OPEN STANDARD

The international standard is ISO/IEC 19757-3. Available for $300 AUD.

The schemas for Schematron from the international standard are Open Source/Open
Standards: they are available at this GitHub site.

 * Release comments on the 3rd edition, 2020
 * Release comments on the 2nd edition, 2016

ISO Schematron is an open standard, in the sense of the IEEE, ISOC, W3C, IETF,
IAB, Foundation for Free Information Interchange (FFII), Free Software
Foundation Europe (FSFE), requiring a formal, open process and unencumbered use.

--------------------------------------------------------------------------------


OPEN LICENSING


See here for details on the free and  Open Source licenses for Schematron and
material on this site.

--------------------------------------------------------------------------------

In the long run, I think Schematron may well be the XML project’s greatest
technical legacy to the world.
Simon St Laurent, Technical Journalist and O’Reilly Editor, xml-DEV list, 19 May
2016



--------------------------------------------------------------------------------


COMMUNITY

Schematron is remarkable in how few questions people have about it. This is
because the language is so small, and many questions people might have are
actually XPath questions.

 * Andrew Sales hosts the Schematronist  mail-list. 
 * Betty Harvey's schematron-love-in mail list is no longer active but has
   archives.
 * To raise issues for the ISO Schematron standard, use the GitHub Issues
   facilities on  Tony Graham's schematron-enhancement-proposals.

--------------------------------------------------------------------------------


ON HOLD: OPEN DOCUMENTATION AND TUTORIAL

To assist users, implementers and evaluators,  Schematron.com will be hosting
two projects (under preparation):

Dave Pawson's  Schematron Tutorial

A file-html iconguided tour for XSLT-based  implementations of ISO Schematron
(2006),  with information and examples.

The "Schematron Open Documentation" Project

Let's develop an unofficial, free and openly-available document that explains
the technology of ISO Schematron!

(For discussion on how Schematron Open Documentation relates to Open Standard,
see  Procurement Best Practise for an Open Standard of Schematron.)

--------------------------------------------------------------------------------


SCHEMATRON TOPICS

PESKY HUMANS

 * Seven different styles of assertion text
 * Error messages and diagnostics should be inputs to the developer not outputs
    * Schematron and Scrum
    * Integrating Schematron with syslog

 * How to make your markup language pleasant
 * Step out of Time
 * A mind map (UML package diagram) for Schematron

FUNDAMENTAL CONCEPTS

 * Fundamental Structural Patterns Bolognese
 * Highly Generic Schemas
    * A three-layer model for XML with Schematron

 * Quasi-static and quasi-dynamic constraints
 * Islands of validity
 * Standard severity levels
    * What is the difference between Schematron's role and flag attributes?

 * The most common programming error with Schematron
 * file-pdf iconFrom Grammars to the Schematroneye icon (PDF) (1999) - the first
   public presentation of Schematron, at ASCC, Academia Sinica, Taiwan, explaned
   in terms of cohesion and coupling.

UNDERSTANDING ASSERTIONS

 * Alan Turing and Tony Hoare on assertions
    * Patterns in Time

 * Six kinds of validation using Schematron
 * Correct and Robust
 * Global exclusions are so easy in Schematron

 * “Schemas do not imply any semantics of documents”

PERFORMANCE

 * Validation result caching using a keystore
 * Be smart in your choice of XSLT engine
 * Optimizing Schematron using @saxon:memo-function
 * SOA validation logging: reducing first-response latency
 * "Schematron is inefficient"?

DOCUMENT METRICS AND TESTING

 * Three text-based complexity metrics for Schematron
 * Fanout versus Confusion: two complexity metrics
 * How many documents do you need to test?
 * Using Schematron to test transformations
 * Unit testing your Schematron schema with XSpec
 * Is the Software Design Crisis caused by unexecutable design criteria?

CONVERTING XML SCHEMAS TO SCHEMATRON

xsd2sch

It may seem impossible, or mad, to attempt to convert XSD to Schematron; or,
rather, to partly implement XSD in XSLT 2 through Schematron.  In 2007-2008,
JSTOR funded an exploratory project at Allette Systems to write such a converter
from XSD to Schematron, for a large subset they specified.

The techniques we developed were detailed in a long series of articles on the O'
Reilly website: Converting XML Schemas to Schematron, which are now collected
here with the related articles from the same time.

The XSLT2 code is available on GitHub under the MIT license.

 * What kind of content models do users of conventiona schema languages use?
 * Converting Schematron to XSD (the reverse!)
 * Jürgen Rennau’s Location Trees welcomed
 * Can Schematron use grammars to test assertions?
 * Could Schematron be used for Content Completion in editors?

SOFTWARE

Current

 * SchXslt - Schematron engine in XLST
    * XSLT 1,2,3
    * uses same pre-processors as the skeleton

Recent

 * Schematron skeleton - Schematron engine in XSLT
    * XSLT 1,2
    * not actively maintained now

Ancient

 * Topologi Schematron Validator  - 20-year old desktop application in VB
    * Pre-ISO Schematron 1.6
    * Free to use, not open source
    * Supports xsd, RELAX NG, DTD, schematron in XSD or RELAX NG

SCHEMATRON EXTENDED

 * Schematron QuickFix
 * Schematron re-imagined for JSON
 * Validating complex text, embedded in XML without  markup, in Schematron
 * Validation of Markdown with Schematron
 * Using XPath to make assertions is now a common technique
 * Can I assert patterns in Java Objects with Schematron?


BEYOND SCHEMATRON

RAN 乱 - A MODERNIZED XML FOR PARALLEL PARSING

Rapid Access Notation

Rapid Access Notation is a thought bubble that examines what an XML revised to
support modern parallel CPUs (SIMD, multi-core, cached, mutli-threaded, GPUS,
etc) could look like.

APATAK - STREAMING VALIDATION OF ARBITRARY SEGMENTS

Apatak

One good bubble deserves another. If RAN is a markup language which can be
divided into separate fragments and parsed by separate threads, it must also
need a validation language that also can work on arbitrary segments without
requiring content.

Apatak has some similarities in its pairwise approach to 2002's one-element Hook
schema language.

FEATURE GRAMMARS - A LITTLE LANGUAGE FOR FEATURE EXTRACTION

Feature extraction discovers some general property of an XML document, to direct
subsequet processing.  Is it a New Zealand document or a Fijian?  Does it use
the old tags or the new ones?  Is it a tax return with no income?  Is it a form
where the person claims to be both single and married? This can certainly be
done with Schematron and SVRL.

However, Feature Grammars provides a simpler and more direct language and XSLT
for it.

PRESTO - ALL DOCUMENTS; EACH GRAIN; ANY FORMATS; EVERY URL

PRESTO

"All documents, views and metadata at all significant levels of granularity and
composition should be available in the best formats practical from their own
permanent hierarchical URIs.”

file-pdf iconPRESTO: WWW Information Architecture for Legislation and Public
Information Systemseye icon  (PDF) is a 2008 informatics proposal that
influenced how laws are published online. Here is a old blog post discussing it,
plus Jenni Tennison's excellent follow-up. 

THOUGHT PATTERNS AND SCHEMA LANGUAGES

 * The most interesting class of computer languages
 * Analysis and synthesis: are we atuned to each kind of thinking?
 * How many developers think different?
 * Design motivations of different schema languages
    * Schemas: different strokes from different folks  (XML.COM)

 * So when is it a good idea to throw theory out?

XML BEYOND XML

 * RAN - Rapid Access Notation (2021) - remove barriers to parallel
   lexing/parsing
    * RAN - Raw Access Notation  (2021)  (initial PDF, obsolete)
    * The Goals of XML at 25: and the one change that XML really needs now

 * The X Refactor (2018) - XML ecosystem refactored into 5 layers
 * XMON combining XML and JSON (2017) - allow structs in start-tags
 * Editor's Concrete Syntax (2002) - a lexical profile of SGML for coloring
   editors

SCHEMA LANGUAGES REAL AND IMAGINED

 * Feature Grammars  - a little language for extracting general features of
   documents
 * Hook - a one-element schema language using partial ordering
 * RAN Apatak - streaming validation of arbitrary segments
 * SHRVL - Schematron Hierarchical Report View Language - nested version of SVRL
 * Probabilistic schemas, hidden Markov models, neural nets for XML
 * Sugar-Free XSD - resolved XSD subset with Schematron validator
 * Lightweight schemas above structs  - inline Attribute Grammars in PIs
 * XML Notation Schemas (1999) - a framework with pluggable mini-validators
 * Weak Validation (1999) -the basics of "feasible validation" later implemented
 * Using XSLT as a validation language (1999) - the start of the line of
   thinking that lead to Schematron
 * Family Tree of Schema Languages for XML (2007) (PNG)

COMPUTER LANGUAGES, LIBRARIES

Updates

 * What’s in Java 18 for XML Developers?
 * What's in Java 17 for XML Developers?
 * What's in Java 13-16 for XML Developers?
 * What's in Java 11 for XML Developers?
 * What's in Java 10 (and 9) for XML developers?
 * XPath 3.1 adds Maps and Arrays, and new operators '!' '?' - so ~ LISP?
 * Overview of Rust and Pony
 * Can Intel ISPC help stagnant C get its mojo back?
 * The Fastest Growing Programming Language of 2018?
 * Using C++ Instrinsic Function For Pipelined Text Processing

Issues

 * Assertions in Java
 *  Sorting out Log4J 2.0-s string schemas
 * Top 3 hints for avoiding and diagnosing character encoding problems


Close
angle-up icon Go to top

© 1999–2021 Rick Jelliffe.  PageSeeder and hosting generously provided by
Allette Systems (Australia)

2024.05-01