Schematronvalidatie: verschil tussen versies

Uit informatiestandaarden
Ga naar: navigatie, zoeken
Regel 1: Regel 1:
==Schematronvalidatie==
 
 
Op te testen bestanden kan Schematronvalidatie toegepast worden. Hiervoor is een XSL processor nodig. Aanbevolen is [https://sourceforge.net/projects/saxon/files/Saxon-HE/ Saxon-HE], een krachtige open source applicatie.
 
Op te testen bestanden kan Schematronvalidatie toegepast worden. Hiervoor is een XSL processor nodig. Aanbevolen is [https://sourceforge.net/projects/saxon/files/Saxon-HE/ Saxon-HE], een krachtige open source applicatie.
  

Versie van 12 apr 2017 om 16:10

Op te testen bestanden kan Schematronvalidatie toegepast worden. Hiervoor is een XSL processor nodig. Aanbevolen is Saxon-HE, 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