Re: Are there invariants in XML processing?

Rick Jelliffe <[email protected]>
Newsgroups gmane.text.xml.devel
Message-ID <CADUdYQVj7CZqfyLXOaFKTEazgt0_mGRyGPHj6f90B=iRPFV3gQ@mail.gmail.com>
For a Schematron introduction to this, including *document* invariants
(fixed and co-occurrence) and* input/output* invariants, and
*round-trip *invariants,
see Six Kinds of Validation using Schematron at
https://www.schematron.com/document/279.html

For people interest in the practical theory of invariants, Bertam Meyers'
work on Design by Contact still is a great place to start: he couches it in
functional terms of pre-condition, invariant,  post-condition, which I
think is more systematic than just "invariants".

For the example, the Schematron IO validation (output to input) might be
(roughly)

<sch:pattern id="publicMilitaryIndicator-nullTransform"
documents="'input.xml'">

     <sch:rule context="publicMilitaryIndicator">
             <sch:let name="matching-output"
value="myFunc:findMatchingRow(., 'output.xml')" />

              <sch:assert test="TYPE = 'A' or TYPE = 'B' or TYPE = 'C'"
role="pre-condition" >Every publicMilitaryIndicator input should have a
TYPE  with value A, b, or C (i.e., Civil, Joint, Military)</sch:assert>

               <sch:assert test="$matching-output/TYPE = 'A' or
$matching-output/TYPE = 'B' or $matching-output/TYPE = 'C'"
role="post-condition" >Every publicMilitaryIndicator output should have a
TYPE  with value A, b, or C (i.e., Civil, Joint, Military)</sch:assert>

             <sch:assert test="$matching-output" role="invariant">Every
input publicMilitaryIndicator should have a matching output</sch:assert>

             <sch:assert test="$matching-output/TYPE= ./TYPE"
role="invariant" >Every input publicMilitaryIndicator TYPE value should be
carried through to the output</sch:assert>

</sch:rule></sch:pattern>

Rick
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.