转换时的XSL验证

时间:2013-05-22 04:59:51

标签: java validation xslt

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

请帮忙。

1 个答案:

答案 0 :(得分:2)

是的,XSLT处理器首先要验证和编译样式表。 (你为什么要问?只是引入错误,看看会发生什么!)

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

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