Schematronvalidatie

Uit informatiestandaarden
Versie door Marc (overleg | bijdragen) op 12 apr 2017 om 16:09 (Nieuwe pagina aangemaakt met '==Schematronvalidatie== Op te testen bestanden kan Schematronvalidatie toegepast worden. Hiervoor is een XSL processor nodig. Aanbevolen is [https://sourceforge.net...')
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Ga naar: navigatie, zoeken

Schematronvalidatie

Op te testen bestanden kan Schematronvalidatie toegepast worden. Hiervoor is een XSL processor nodig. Aanbevolen is [1], een krachtige open source applicatie.

Gebruik: Wanneer de volgende folderstructuur gebruikt wordt:

 - saxon
   - bin
 - test
   - testbestand.xml
 - schematron
   - controles.sch
   - controles.xsl

kan schematronvalidatie uitgevoerd worden met het volgende commando (dit voorbeeld onder DOS):

 $ saxon\bin\Transform
   -t 
   -s:test\testbestand.xml 
   -xsl:schematron\controles.xsl 
   -o:report.xml

De gebruikte schematron moet de SVRL versie van de Schematron zijn. Voor Nictiz projecten wordt deze meestal meegeleverd. Er staat dan een .xsl versie van ieder .sch bestand, in dezelfde folder of vaak een /svrl folder ernaast. Wanneer er geen SVRL versie is, kan deze gemaakt worden. Instructies en benodigdheden zijn te vinden op Github Schematron.

Dit genereert een report.xml bestand. Een basale HTML versie kan gemaakt worden met de volgende stylesheet: svrl2html.xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:svrl="http://purl.oclc.org/dsdl/svrl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
        <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
                <title>SVRL report</title>
                <style>
                    body {margin:8px;}
                    a[href] {color:blue;}
                </style>
            </head>
            <body>
                <h1>SVRL report</h1>
                <div>Errors: <xsl:value-of select="count(.//svrl:failed-assert)"/></div>
                <xsl:for-each select=".//svrl:failed-assert">
                    <ul>
                        <li><b>Text: <xsl:value-of select="svrl:text"/></b></li>
                        <li>Test: <xsl:value-of select="@test"/></li>
                        <li>See: <xsl:value-of select="@see"/></li>
                        <li>Location: <xsl:value-of select="@location"/></li>
                    </ul>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Deze kan uiteraard ook weer met Saxon uitgevoerd worden:

 $ saxon\bin\Transform
   -t 
   -s:report.xml 
   -xsl:svrl2html.xsl 
   -o:report.html