【问题标题】:XSL validation while transformation转换时的 XSL 验证
【发布时间】:2013-05-22 04:59:51
【问题描述】:

我正在使用以下代码进行 XSL 转换:

Source source = new StreamSource(new StringReader(request.toString()));
Source xsl = new StreamSource(XSLPath);
                
StringWriter destination = new StringWriter();
Result result = new StreamResult(destination);
        
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer;
transformer = transFactory.newTransformer(xsl);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);

XSLPath 变量将文件位置传递给.xsl 文件。

我需要知道transFactory.newTransformer(xsl) 是否首先对xsl 文件本身进行任何类型的内部验证。如果没有,那么有没有办法在执行转换之前验证 xsl 文件?

我有一个验证 xsd 文件的代码,但是,我相信相同的代码不适用于 xsl。我仍然尝试过,但它总是抛出一些或其他 SAXException 关于大多数行上不允许使用非空格。

【问题讨论】:

    标签: java validation xslt


    【解决方案1】:

    是的,XSLT 处理器做的第一件事就是验证和编译样式表。 (为什么要问?只要引入一个错误,看看会发生什么!)

    您可能会发现设置 ErrorListener 以确保您的应用程序可以捕获错误消息很有用。

    如果您在多次转换中重复使用相同的样式表,使用 newTemplates() 创建模板对象会更有效,因此您只需进行一次验证/编译。将 Templates 对象视为已编译的样式表。

    【讨论】:

    • 感谢您的回复,迈克尔。这正是我的想法!只是想确认这种方法是否可行,或者是否有其他行业标准需要遵循。
    猜你喜欢
    • 2012-05-24
    • 2015-05-29
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多