转换时进行XSL验证

问题描述 投票:1回答:1

我正在使用下面的代码来进行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

请帮助。enter code here

java validation xslt
1个回答
3
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.