java - XSLT 导入语句的 Saxon 错误

标签 java xslt saxon

每当我有 XSLT 导入语句时,Saxon 处理器都会给我一个错误。这是错误:

XTSE0165: I/O error reported by XML parser processing file: shared/test.xslt (The system cannot find the path specified):

这是我的 XSLT 文档的样子:

<?xml version='1.0' encoding='UTF-8'?>

<xsl:stylesheet version='2.0' 
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
    xmlns:fn='http://www.w3.org/2005/02/xpath-functions'
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    >

    <xsl:import href="shared/test.xslt"/>

...

我的java代码

TransformerFactory transformerFactory = TransformerFactoryImpl.newInstance();

transformerFactory.setURIResolver(uriResolver);  //my own custom URI resolver

Transformer transformer = transformerFactory.newTransformer(new StreamSource(xsltInputStream));   //this is where the error occurs when I debug!

URI 解析器类永远不会被触发!它在上面的 newTransformer() 方法上出现问题……我尝试了 XsltCompiler 等,同样的事情……如果我删除导入语句,一切正常!它找不到要导入的文件,这很好,但这就是为什么我有解析器类来帮助它找到文件,但它永远不会触发解析器并且无法找到要导入的文件!

我该如何解决?

最佳答案

您可能需要 set the System ID对于您正在加载的 XSLT 的 StreamSource

当您从 StreamSource 加载时,它不知道您的 XSLT“存在”在哪里,并且难以确定如何解析相对路径。

StreamSource source = new StreamSource(xsltInputStream);
source.setSystemId(PATH_TO_THE_XSLT_FILE_ON_THE_FILESYSTEM_OR_URL);
Transformer transformer = transformerFactory.newTransformer(source); 

关于java - XSLT 导入语句的 Saxon 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236291/

相关文章:

java - PHP加法运算

java - XSL XML 转换,更改命名空间值

xslt - Saxon XSLT 2.0和RFC 822日期格式

javascript - XSLT - 将 xml 文档作为参数从 javascript 传递

xml - XSL-FO:在每个 <xi:include> 之间强制分页

xslt - 最简单的 XSLT 样式表,其输出是 XSLT 样式表...用于学习目的

java - 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

java - 创建装饰器,如何获取eclipse插件中的文件信息?

Java:评估后缀表达式

java - 音频文件编解码