How-to update schematron rules to ISO 19757-3 ?

GeoNetwork (before 2.5.0) was using Schematron 1.x series which has been taken over by ISO Schematron implementation. This how-to describes the way to update rules define in 1.x to be used in ISO Schematron.

More information:

Update namespace

Namespace in ISO Schematron is:

-<sch:schema xmlns:sch="">
+<sch:schema xmlns:sch="">

Use sch:title instead of sch:pattern/@name

sch:title is now used to store the title of the rule.


-       <sch:pattern name="$loc/strings/M6">
+       <sch:pattern>
+               <sch:title>$loc/strings/M6</sch:title>

(optional) Improve report

In order to improve report information, the use of sch:let to test the existence of an element in combinaison with sch:assert in case of error and sch:report in case of success improve report readability.

sch:value-of could be use to report variable information in report.

            <sch:let name="language" value="gmd:language/gco:CharacterString"/>
            <sch:let name="localeAndNoLanguage" value="not(gmd:locale and gmd:language/@gco:nilReason='missing')
                and not(gmd:locale and not(gmd:language))"/>
            <!--  Check that main language is not defined and gmd:locale element exist. -->
            <sch:assert test="$localeAndNoLanguage"
            <sch:report test="$localeAndNoLanguage"
                ><sch:value-of select="$loc/strings/report.M500"/> "<sch:value-of select="$language"/>"</sch:report>


Then use the "ant schematron" in schematron directory to publish your rules to schema folders.

Last modified 7 years ago Last modified on Nov 7, 2013, 9:06:20 AM