使用ph-sch2xslt-maven-plugin将schematron编译为xslt后的ph-schematron:名称空间前缀错误

时间:2015-09-25 14:44:32

标签: xslt schematron

我正在使用ph-sch2xslt-maven-plugin 3.0.0将以下简单的schematron编译为xslt:

final ISchematronResource isr = schematronResourceXSLT.fromFile(aSchematronFile);
if (!isr.isValidSchematron ())
   throw new IllegalArgumentException ("Invalid Schematron!");

该插件将schematron编译为xslt文件。但是,尝试使用已编译的xslt文件会导致“未声明的名称空间前缀”错误。

使用ph-schematron 3.0.0,以下代码段:

[main] INFO com.helger.schematron.xslt.SchematronResourceXSLTCache - Compiling XSLT instance [file=/opt/temp/phschematron/schematron-model/src/main/resources/xslt/movies.xslt]
[main] ERROR com.helger.commons.xml.transform.LoggingTransformErrorListener - [fatal_error] Transformation fatal error (net.sf.saxon.trans.XPathException: Undeclared namespace prefix {m})
[main] ERROR com.helger.commons.xml.transform.LoggingTransformErrorListener - [fatal_error] Transformation fatal error (net.sf.saxon.trans.XPathException: Undeclared namespace prefix {m})
[main] ERROR com.helger.schematron.xslt.SchematronProviderXSLTPrebuild - XSLT read/compilation error for [file=/opt/temp/phschematron/schematron-model/src/main/resources/xslt/movies.xslt]

产生这个:

isValidSchematron()

直接使用schematron时,它可以工作,final ISchematronResource aResPure = SchematronResourcePure.fromFile(aSchematronFile); if (!aResPure.isValidSchematron ()) throw new IllegalArgumentException ("Invalid Schematron!"); 返回true:

byteArray

有人可以解释导致命名空间错误的原因吗?

1 个答案:

答案 0 :(得分:1)

这是带有ph-schematron的issue,已于2016年7月5日发布的4.0.1中修复。