XML-File中的本地XSL引用

时间:2012-02-21 09:45:52

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

如您所见,它引用了 win32系统文件夹,其中保存了dll文件。 使用“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'

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

1 个答案:

答案 0 :(得分:1)

这是解决方案:

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

注意:

  1. 您必须使用res://协议来访问文件中的资源。
  2. 文件系统反斜杠可以编码为%5C。可能正斜杠也可以。
  3. 实施例: 我为file://协议测试了这个例子,但它的工作方式应该与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协议上的等价物尚未经过测试,但它应该以相同的方式工作,当然res协议略有不同,因为它还包括资源索引号。

    请参阅http://msdn.microsoft.com/en-us/library/ie/aa767740(v=vs.85).aspx了解语法。