<?xml version="1.0" encoding="UTF-8"?>
<strings>
    <!-- String used for HTML report -->
    <report>Schematron report</report>
    <report.alt>Schematron contact-information is at the end of this page</report.alt>
    <title>Schematron validation for ISO 19115(19139)</title>
    
    <isorule>ISO rules</isorule>
    <M6>CharacterString must have content or it&apos;s parent must have a valid nilReason attribute.</M6>
    <M7>CRS attributes constraints</M7>
    <M8>[ISOFTDS19139:2005-TableA1-Row24] - name required</M8>
    <M9>[ISOFTDS19139:2005-TableA1-Row07] - otherConstraints required if otherRestrictions</M9>
    <M10>[ISOFTDS19139:2005-TableA1-Row16] - units required for values</M10>
    <M11>[ISOFTDS19139:2005-TableA1-Row13] - description required if no sourceExtent</M11>
    <M12>[ISOFTDS19139:2005-TableA1-Row14] - sourceExtent required if no description</M12>
    <M13>[ISOFTDS19139:2005-TableA1-Row10] - content mandatory for dataset or series</M13>
    <M14>[ISOFTDS19139:2005-TableA1-Row11] - source required if no statement or processStep</M14>
    <M15>[ISOFTDS19139:2005-TableA1-Row12] - processStep required if no statement or source</M15>
    <M16>[ISOFTDS19139:2005-TableA1-Row08] - dataset must have report or lineage</M16>
    <M17>[ISOFTDS19139:2005-TableA1-Row09] - levelDescription needed unless dataset or series</M17>
    <M18>[ISOFTDS19139:2005-TableA1-Row17] - units required for density values</M18>
    <M19>[ISOFTDS19139:2005-TableA1-Row18] - MD_Format required</M19>
    <M20>[ISOFTDS19139:2005-TableA1-Row23] - element required</M20>
    <M21>[ISOFTDS19139:2005-TableA1-Row04] - dataset must have extent</M21>
    <M22>[ISOFTDS19139:2005-TableA1-Row05] - dataset or series must have topicCategory</M22>
    <M23>[ISOFTDS19139:2005-TableA1-Row06] - either aggregateDataSetName or aggregateDataSetIdentifier must be documented</M23>
    <M24>[ISOFTDS19139:2005-TableA1-Row01] - language indication</M24>
    <M25>[ISOFTDS19139:2005-TableA1-Row02] - character set indication</M25>
    <M26>[ISOFTDS19139:2005-TableA1-Row19] - detail required unless simple term</M26>
    <M27>[ISOFTDS19139:2005-TableA1-Row20] - condition</M27>
    <M28>[ISOFTDS19139:2005-TableA1-Row21] - domainCode</M28>
    <M29>[ISOFTDS19139:2005-TableA1-Row22] - shortName</M29>
    <M30>[ISOFTDS19139:2005-TableA1-Row15] - checkPointDescription required if available</M30>
    <userrule>User defined rules</userrule>
    
    <source>Schematron Report by David Carlisle.
        <a href="http://www.ascc.net/xml/resource/schematron/schematron.html"
                  title="Link to the home page of the Schematron, a tree-pattern schema language">
                  <font color="#FF0080">The Schematron</font>
               </a> by
        <a href="mailto:ricko@gate.sinica.edu.tw"
                  title="Email to Rick Jelliffe (pronounced RIK JELIF)">Rick Jelliffe</a>,
        <a href="http://www.sinica.edu.tw" title="Link to home page of Academia Sinica">Academia Sinica Computing Centre</a>.
    </source>
    
    
    <!-- String used for JS alert report on editor. Do not forget to use HTML characters for special character -->
    <alert.M6.>topicCategory is mandatory if MD_Metadata.hierarchyLevel equal &quot;dataset&quot; or &quot;series&quot; or doesn\&apos;t exist.</alert.M6.>
    <alert.M6.characterString>CharacterString must have content or parent\&apos;s nilReason attribute must be legitimate.</alert.M6.characterString>
    <alert.M6.directPosition>The presence of a dimension attribute implies the presence of the srsName attribute.</alert.M6.directPosition>
    <alert.M7.axisAndSrs>The presence of an axisLabels attribute implies the presence of the srsName attribute.</alert.M7.axisAndSrs>
    <alert.M7.uomAndSrs>The presence of an uomLabels attribute implies the presence of the srsName attribute.</alert.M7.uomAndSrs>
    <alert.M7.uomAndAxis>The presence of an uomLabels attribute implies the presence of the axisLabels attribute and vice versa.</alert.M7.uomAndAxis>
    <alert.M8>You must specify one or more of individualName, organisationName or positionName.</alert.M8>
    <alert.M9.access>otherConstraints: documented if accessConstraints or useConstraints = &quot;otherRestrictions.&quot;</alert.M9.access>
    <alert.M9.use>otherConstraints: documented if accessConstraints or useConstraints = &quot;otherRestrictions.&quot;</alert.M9.use>
    <alert.M9>&quot;units&quot; is mandatory if &quot;maxValue&quot; or &quot;minValue&quot; are provided.</alert.M9>
    <alert.M11>&quot;description&quot; is mandatory if &quot;sourceExtent&quot; is not documented.</alert.M11>
    <alert.M12>&quot;description&quot; is mandatory if &quot;sourceExtent&quot; is not documented.</alert.M12>
    <alert.M13>If(count(source) + count(processStep) =0) and (DQ_DataQuality.scope.level = \&apos;dataset\&apos; or \&apos;series\&apos;) then statement is mandatory.</alert.M13>
    <alert.M14>&quot;source&quot; role is mandatory if LI_Lineage.statement and &quot;processStep&quot; role are not documented.</alert.M14>
    <alert.M15>&quot;processStep&quot; role is mandatory if LI_Lineage.statement and &quot;source&quot; role are not documented.</alert.M15>
    <alert.M16>&quot;report&quot; or &quot;lineage&quot; role is mandatory if scope.DQ_Scope.level = \&apos;dataset\&apos;.</alert.M16>
    <alert.M17>&quot;levelDescription&quot; is mandatory if &quot;level&quot; notEqual &quot;dataset&quot; or &quot;series&quot;.</alert.M17>
    <alert.M18>&quot;densityUnits&quot; is mandatory if &quot;density&quot; is provided.</alert.M18>
    <alert.M19>count (distributionFormat + distributor/MD_Distributor/distributorFormat) &gt; 0.</alert.M19>
    <alert.M20>count(description + geographicElement + temporalElement + verticalElement) &gt; 0.</alert.M20>
    <alert.M21>MD_Metadata.hierarchyLevel = &quot;dataset&quot; (i.e. the default value of this property on the parent) implies count (extent.geographicElement.EX_GeographicBoundingBox) + count (extent.geographicElement.EX_GeographicDescription) &gt;=1.</alert.M21>
    <alert.M22>Either &quot;aggregateDataSetName&quot; or &quot;aggregateDataSetIdentifier&quot; must be documented.</alert.M22>
    <alert.M23>language not present.</alert.M23>
    <alert.M26.obligation>if &quot;dataType&quot; notEqual \&apos;codelist\&apos;, \&apos;enumeration\&apos; or \&apos;codelistElement\&apos; then &quot;obligation&quot; is mandatory.</alert.M26.obligation>
    <alert.M26.maximumOccurence>if &quot;dataType&quot; notEqual \&apos;codelist\&apos;, \&apos;enumeration\&apos; or \&apos;codelistElement\&apos; then &quot;maximumOccurence&quot; is mandatory.</alert.M26.maximumOccurence>
    <alert.M26.domainValue>if &quot;dataType&quot; notEqual \&apos;codelist\&apos;, \&apos;enumeration\&apos; or \&apos;codelistElement\&apos; then &quot;domainValue&quot; is mandatory.</alert.M26.domainValue>
    <alert.M27>if &quot;obligation&quot; = \&apos;conditional\&apos; then &quot;condition&quot; is mandatory.</alert.M27>
    <alert.M28>if &quot;dataType&quot; = \&apos;codelistElement\&apos; then &quot;domainCode&quot; is mandatory.</alert.M28>
    <alert.M29>if &quot;dataType&quot; not equal to \&apos;codelistElement\&apos; then &quot;shortName&quot; is mandatory.</alert.M29>
    <alert.M30>&quot;checkPointDescription&quot; is mandatory if &quot;checkPointAvailability&quot; = 1 or true.</alert.M30>
</strings>
