java - 转换时的 XSL 验证

标签 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

最佳答案

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

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

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

关于java - 转换时的 XSL 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683780/

相关文章:

java - IndexOutOfBounds 使用 Javas imageio.write() 创建 png 格式的字节数组

java - 连接池 "Leak"正在开发中。可能是由于 JUnit 测试设置所致?

Java 应用程序在未从命令行运行时挂起

ruby-on-rails - 如何在父类中进行验证,而不是在子类中进行验证

javascript - 使用 jquery 验证器插件设置十进制数的正则表达式

html - 如何将css添加到xsl文件中?

java - 如何将 BIRT 与 Python 集成

javascript - jQuery 验证 Uncaught ReferenceError

C# Parallel.ForEach XslCompiledTransform 与 Saxon 9.7.0.6 HE

xslt - 使用 XSLT 进行数据透视