XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] Are there invariants in XML processing?

Forgive me, but I'm trying to understand the use of the noun "invariant". This is the first I've seen it used, and it is being bandied about. Rick's post using it extensively is dated 2016, so I feel very much out of the loop.

Is an invariant any different than a constraint?

Does the use of this noun come from another discipline where the use is common?

When does it help the listener/reader to use the noun "invariant" rather than "constraint" or some other word?

Thanks for your patience with my questions ... I'm just curious.

. . . . . Ken

At 2022-05-01 14:08 +1000, Rick Jelliffe wrote:
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>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

--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/x/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |
Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS