2013-07-23 79 views
1

我發現Schematron的一個shell腳本,您應該能夠提供一個Schematron模式和一個XML文檔,以便將Schematron規則應用於XML文檔。我發現這裏的腳本:Schematron sh腳本不行爲

https://code.google.com/p/schematron/wiki/RunningSchematronWithGNOMExsltproc

腳本所使用的各種XSL文件是從Schematron的分佈在這裏下載:

http://www.schematron.com/implementation.html

我會在這裏重複shell腳本,用於方便。

#!/bin/bash 

echo Step1 ... 
xsltproc iso_dsdl_include.xsl $1 > step1.xsl 

echo Step2 ... 
xsltproc iso_abstract_expand.xsl step1.xsl > step2.xsl 

echo Step3 ... 
xsltproc iso_svrl_for_xslt1.xsl step2.xsl > step3.xsl 

echo Validation ... 
xsltproc step3.xsl $2 > result.svrl 

我運行該腳本是這樣的:

run_schematron.sh docbook1.sch my_xml.xml

shell腳本生成中間文件,step1.xsl,step2.xsl和step3.xsl 。但我已經出軌在step2.xsl,因爲它看起來像這樣:

<?xml version="1.0"?> 

     @linkend on footnoteref must point to a footnote. 

     @linkend on synopfragmentref must point to a synopfragment. 

這看起來不像一個XSL樣式表給我。有任何想法嗎?

+0

爲'xml'添加標籤。 YOu選擇了所有低追隨者數量變體。祝你好運。 – shellter

回答

1

問題是您對DocBook 5.0使用docbook.sch,而不是ISO Schematron模式(綁定到s:前綴的名稱空間不是http://purl.oclc.org/dsdl/schematron)。

在docbook.sch一些DocBook 5.0,簡單地改變這樣的:

xmlns:s="http://www.ascc.net/xml/schematron" 

這樣:

xmlns:s="http://purl.oclc.org/dsdl/schematron" 

...,它會工作。

對於DocBook 5.1(尚未正式發佈)的docbook.sch,命名空間已更改。

+0

謝謝!我現在肯定會在管道的每個階段獲得有意義的產出。儘管我還在摸索着result.svrl的內容。但絕對進步。 – egilchri