小编tom*_*mgi的帖子

xslt:Saxon 9.4与Saxon 9.6的消息

我正在尝试从使用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)

java xml xslt saxon

6
推荐指数
2
解决办法
628
查看次数

标签 统计

java ×1

saxon ×1

xml ×1

xslt ×1