Html XML文件中的本地XSL引用
首先是简短的任务描述: 有一个XML文件引用*.dll中的xsl样式表。 此XML的开头如下所示:Html XML文件中的本地XSL引用,html,xml,xslt,environment-variables,filereference,Html,Xml,Xslt,Environment Variables,Filereference,首先是简短的任务描述: 有一个XML文件引用*.dll中的xsl样式表。 此XML的开头如下所示: 此xml文件可以在Internet Explorer中打开并显示为HTML,并且只能在IE中显示。 (xsl将xml转换为html) 如您所见,它引用了保存dll文件的win32系统文件夹。 使用“res://”进行引用确实有效 但是现在我不想将我的dll存储在系统文件夹中,而是放在不同的文件夹下,比如说%ALLUSERSPROFILE%(环境变量),例如在Windows XP上是C:\Doc
此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中。)
到目前为止,我已尝试将参考线更改为以下内容:
对于根文件夹c,我也尝试过同样的方法:即使没有绝对路径,所有文件(xml和dll)都在同一个文件夹中。
所有不带res://的尝试都会产生以下错误消息:
系统找不到指定的资源。
处理资源“”时出错file:///C:/Documents 和设置/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'?>
我可以通过在Windows文件资源管理器的导航栏中输入以下内容来访问此文件:
file:///%ProgramFiles%/CodeGear/Delphi for PHP/2.0/privacy.txt
请注意,反斜杠已转换为正斜杠,无需转义空格。这已经过测试,并且有效。res协议上的等价物还没有经过测试,但它应该以相同的方式工作,当然res协议略有不同,因为它还包括一个资源索引号
请参阅语法。还需要将空格编码为%20才能工作。我相信前斜杠不起作用。是的,它现在起作用了,这很好。多谢各位!是否可以在res:标记后面指定一些内容,例如从环境变量读取文件夹%ALLUSERSPROFILE%。这是我需要的,因为引用的文件总是在环境变量下的文件夹中,并且系统之间会发生变化。XML、JavaScript或Visual Basic脚本中是否存在这种可能性。我试图找到,但没有成功。@Byron LimTimothySteffan:你的评论是错误的。一般来说,不需要转义空间。它们只需要转义到http(称为URL编码)。对于本地XSLT,情况并非如此。向前斜杠也能起作用。如果他们不这样做,那将是荒谬的。正斜杠是协议词典的一个基本部分,不可能在res:protocol或普通XSLT中映射特殊文件夹。但是,也可以通过特定于供应商的浏览器或XSLT扩展或通过应用程序实现。要回答这个问题,需要更多关于上下文的信息。这段代码是否嵌入到html页面中?页面是由PHP还是纯HTML呈现的?或者转换是在服务器端进行的?嗯,经过进一步的研究,我认为可以在res:protocol内完成。现在相应地调整答案。
file:///%ProgramFiles%/CodeGear/Delphi for PHP/2.0/privacy.txt