用于在Windows上查找相关文件路径的XSL导入用法

Pau*_*aul 3 xslt

我有一个简单的XSL文件,看起来像:

<?xml version='1.0'?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

<xsl:import href="html/docbook.xsl"/> 

</xsl:stylesheet>  
Run Code Online (Sandbox Code Playgroud)

我有一个XSL文件,位于磁盘上的文件夹中(不在Web上).它的相对于我的XSL文件的路径(上图)是:

..\..\..\Dependencies\XSL\xsl\htmlhelp\htmlhelp.xsl

<xsl:import href="..\..\..\Dependencies\XSL\xsl\htmlhelp\htmlhelp.xsl"/> 
Run Code Online (Sandbox Code Playgroud)

要么

<xsl:import href="../../../Dependencies/XSL/xsl/htmlhelp/htmlhelp.xsl"/> 
Run Code Online (Sandbox Code Playgroud)

似乎没有工作(我得到 - 无法找到文件 - 来自xslproc工具的错误.)

在XSL中编写相对路径的正确方法是什么:import?

提前致谢,

保罗

Mad*_*sen 5

如果您描述了如何运行样式表,将会很有帮助.

Java中包含/导入的相对路径的一个常见问题:当您将XSLT作为StreamSource加载并且未设置SystemID时,处理器不知道XSLT的"位置"并且无法解析相对路径.

http://www.onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=5

通过提供系统标识符作为StreamSource的参数,您告诉XSLT处理器在哪里查找commonFooter.xslt.如果没有此参数,则当处理器无法解析此URI时,您可能会遇到错误.简单的解决方法是调用setSystemId()方法,如下所示:

// construct a Source that reads from an InputStream
Source mySrc = new StreamSource(anInputStream);
// specify a system ID (a String) so the 
// Source can resolve relative URLs
// that are encountered in XSLT stylesheets
mySrc.setSystemId(aSystemId);
Run Code Online (Sandbox Code Playgroud)

另外要仔细检查的是你的相对路径确实是正确的.浏览到XSLT在命令提示符下的位置,然后cd到该相对路径以查看它是否找到该文件.