2012-03-31 8 views

Antwort

2

Nach viel Forschung scheint es, dass es nicht wirklich möglich ist. Wir müssen zuerst das xsl-Dokument generieren und es dann zur Validierung verwenden.

6

Aufbauend auf der vorherige Antwort, weil ich das tun musste, und es hat nicht genug Informationen geben (und da mein Skript bereits transformiert ein Dutzend XSL tun - was ist vier mehr)

Basierend auf this website Eine XML-Datei kann über eine Reihe von XSL-Transformationen gegen ein Schematron validiert werden. Da ich auch Informationen brauchte, um mit saxon zu kombinieren - hier sind die Änderungen für saxon, auf einer Windows-Box, mit einer Katalogdatei.

Hier ist, wie ich ein XSLT durch die sächsisch-Befehlszeile auf dem Computer ausgeführt werden (wo FilePath ist systemabhängig):

java -cp "C:\FilePath\saxon9ee.jar;C:\FilePath\resolver.jar";. net.sf.saxon.Transform -s:inputFile.xml -o:outputFile.xml -xsl:C:\FilePath\transform.xsl -catalog:"C:\FilePath\catalog.xml" 

Die große Sache hier, darauf hinzuweisen ist, dass, wenn Sie eine Katalogdatei verwenden Mit Saxon müssen Sie es auf die Datei resolver.jar verweisen.

So mit

XSLT = java -cp "C:\FilePath\saxon9ee.jar;C:\FilePath\resolver.jar";. net.sf.saxon.Transform -catalog:"C:\FilePath\catalog.xml" 

Dann wird die Info von der Website sinnvoll ist (nachdem gefunden, die notwendigen xsl Dateien in oXygen):

XSLT -input=xxx.sch -output=xxx1.sch -stylesheet=iso_dsdl_include.xsl 
XSLT -input=xxx1.sch -output=xxx2.sch -stylesheet=iso_abstract_expand.xsl 
XSLT -input=xxx2.sch -output=xxx.xsl -stylesheet=iso_svrl.xsl 
XSLT -input=document.xml -output=xxx-document.svrl -stylesheet=xxx.xsl 

Sie nehmen die Schematron-Datei, es durch drei Lauf transformiert, um eine xsl-Datei zu erhalten, die Sie dann auf dem ursprünglichen xml-Dokument ausführen. Dies macht es eigentlich relativ einfach zu schreiben.

Der letzte Befehl hat nie wirklich eine Ausgabedatei für mich gefüllt. Da es ohne eine gut läuft und die Nachrichten an STOUT ablegt, lasse ich es einfach weg und sammle die Ergebnisse von dort.

Tut mir leid, dass ich mehr ins Detail gehe, als es wahrscheinlich notwendig ist, aber ich wünschte, ich hätte das alles schon gehabt.