Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html XML文件中的本地XSL引用_Html_Xml_Xslt_Environment Variables_Filereference - Fatal编程技术网

Html XML文件中的本地XSL引用

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文件引用*.dll中的xsl样式表。 此XML的开头如下所示:


此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