The author of Schematron, Rick Jelliffe, has attempted to publish another rule based validation format, whose name is PVL for "Path Validation Language".

The validation format is simple, but not simpler.

The idea behind this is to allow event-based-application (SAX or StAX) to make on the fly validation.

The other difference with Schematron is that PVL define an output where all unnecessary information could be dropped (i.e. whitespaces, comments, etc.).

Here is the core syntax with some adjustment :

    ((((prefix ":")? name)? "/")?         // parent
           ((prefix ":")? (("@")? name))  // element or attribute
            | "#WS"                       // whitespaces
            | "#DATA"                     // datas
            | "#COMMENT"                  // comments
            | "#PI" )                     // PIs
    | "#DOCTYPE"                          // doctype everywhere (at the root I presume !)

For convenience, the namespace has been fixed to "http://pvl.sf.net/pvl/2006"

As a sample here is a PVL validation instance for PVL itself :

<pvl:schema xmlns:pvl="http://pvl.sf.net/pvl/2006">
  <pvl:ns prefix="xpvl" uri="http://pvl.sf.net/pvl/2006"/>
  <pvl:actions>
    /xpvl:schema             +   <!-- root element must be 'schema' with the proper namespace -->
    xpvl:schema/#WS          + - <!-- allow whitespace in schema but trim them -->
    xpvl:schema/xpvl:ns      +   <!-- allow 'ns' (namespaces) element      # notice : we cannot enforce cardinality -->
    xpvl:schema/xpvl:actions +   <!-- allow 'actions' element              # notice : we cannot enforce cardinality -->
    xpvl:actions/#DATA       +   <!-- allow data content in actions -->
    xpvl:ns/@prefix          +   <!-- allow 'prefix' attribute -->
    xpvl:ns/@uri             +   <!-- allow 'uri' attribute -->
    #COMMENT                 + - <!-- allow comments in schema but trim them -->
    #PI                      + - <!-- allow PI in schema but trim them -->
    #DOCTYPE                 w - <!-- warn about doctype but remove it -->
  </pvl:actions>
</pvl:schema>

This schema implied a lot of fallback : all what isn't precised is error of type 'X 0'

More information will be available soon on http://pvl.sf.net

Information caught via XMLfr