我正在使用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
有人可以解释导致命名空间错误的原因吗?