我正在尝试从使用Saxon时包含来自xsl:message标签的消息的java代码中抛出异常.
使用以下xslt文件
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:message terminate="yes">exception message</xsl:message>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
在Saxon 9.4上使用以下代码
public static void main(String[] args) throws TransformerException {
try {
TransformerFactory fact = new net.sf.saxon.TransformerFactoryImpl();
Transformer newTransformer = fact.newTransformer(new StreamSource(new File("throw.xslt")));
((net.sf.saxon.Controller)newTransformer).setRecoveryPolicy(Configuration.DO_NOT_RECOVER);
((net.sf.saxon.Controller)newTransformer).setMessageEmitter(new MessageWarner());
newTransformer.transform(new StreamSource(new File("input.xml")), new StreamResult(new File("output.xml")));
} catch (TransformerException e) {
System.out.println("THIS IS EXCEPTION: " + e.getMessage() + " <<<");
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
它给出了THIS IS EXCEPTION: exception message <<<,这是我期待的行为.
但是对于Saxon 9.6而言,由于API的变化而调整了一些代码
public static void main(String[] …Run Code Online (Sandbox Code Playgroud)