2

我正在使用以下代码进行 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关于大多数行上不允许非空格的问题。

4

1 回答 1

4

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

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

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

于 2013-05-22T07:22:07.087 回答