我正在使用以下代码进行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关于大多数行不允许非白色空格。
请帮忙。
答案 0 :(得分:2)
是的,XSLT处理器首先要验证和编译样式表。 (你为什么要问?只是引入错误,看看会发生什么!)
您可能会发现设置ErrorListener以确保您的应用程序可以捕获错误消息很有用。
如果您对许多转换重复使用相同的样式表,则使用newTemplates()创建Templates对象会更有效,因此您只需执行一次验证/编译。将Templates对象视为已编译的样式表。