html - XML 文件中的本地 XSL 引用

标签 html xml xslt environment-variables filereference

首先是一个简短的任务描述:

有一个 XML 文件引用了 *.dll 中的 xsl 样式表。 此 XML 的开头如下所示:

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type='text/xsl' href='res://name_xsl.dll/frameset.xsl'?>

此 xml 文件可以在 Internet Explorer 中打开并显示为 HTML,并且只能在 IE 中显示。 (xsl 将 xml 转换为 html)

如您所见,它引用了保存 dll 文件的 win32 系统文件夹。 使用“res://”引用确实有效。

但现在我不想将我的 dll 存储在系统文件夹中,而是在一个不同的文件夹 下让我们说 %ALLUSERSPROFILE%(环境变量),例如在 Windows XP 上是 C:\Documents and Settings\All Users 或在 Win7 上是 C:\Users\Public(不确定那个)。

如何引用位于该文件夹中的 dll? 是否可以使用环境变量来做到这一点,使其独立于系统? 你会推荐什么解决方案。 (所有html、xsl数据都保存在本地计算机的dll中。)

到目前为止,我已尝试将引用线更改为以下内容:

<?xml-stylesheet type='text/xsl' href='file:///c:/Documents and Settings/All Users/name_xsl.dll/frameset.xsl'?>

我也尝试过对根文件夹 c: 进行相同的操作,即使没有绝对路径,所有文件(xml 和 dll)都在同一文件夹中。 所有不带 res://的尝试都会导致以下错误消息:

系统找不到指定的资源。 处理资源时出错 'file:///C:/Documents and Settings/All Users/name_xsl.dll/... 或 'file:///C:/name_xsl.dll/frameset.xsl'

你能帮帮我吗?为什么找不到文件? (文件名是虚构的)

最佳答案

这是解决方案:

<?xml-stylesheet type='text/xsl' href='res://C:%5CDocuments and Settings%5CAll Users%5Cname_xsl.dll/frameset.xsl'?>

注意事项:

  1. 您必须使用 res://协议(protocol)访问文件中的资源。
  2. 文件系统反斜杠可以编码为 %5C 。可能正斜杠也可以。

例子: 我针对 file://协议(protocol)测试了这个示例,但它的工作方式应该与 res: 协议(protocol)相同。在我的系统上,我有一个文本文件位于:

C:\Program Files\CodeGear\Delphi for PHP\2.0\privacy.txt

我可以通过放入 Windows 文件资源管理器的导航栏来访问此文件:

file:///%ProgramFiles%/CodeGear/Delphi for PHP/2.0/privacy.txt

注意反斜杠转换为正斜杠,不需要转义空格。这已经过测试并且有效。 res 协议(protocol)上的等效项尚未经过测试,但它应该以相同的方式工作,当然 res 协议(protocol)略有不同,因为它还包含资源索引号。

引用http://msdn.microsoft.com/en-us/library/ie/aa767740(v=vs.85).aspx语法。

关于html - XML 文件中的本地 XSL 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375283/

相关文章:

javascript - 根据当前日期获取 XML 文件

php - 找不到类 "XSLTProcessor'

java - XALAN 注册扩展函数,就像 SAXON 中一样

xslt - 使用 XSLT 的 where 子句中的 bool 运算符 OR

testing - 使用 <x :expect test = ""/> in Xspec

html - CSS 在 IE 9 与 IE 10 或 chrome 中的表现不同

html - CSS动态文本对齐取决于文本的长度

javascript - JQuery addClass 以一种非常奇怪的方式工作

javascript - keydown 事件是如何工作的?

xml - 在 VBA 中获取 XML 响应中的值