提问人:radunieczek 提问时间:1/3/2021 最后编辑:zx485radunieczek 更新时间:11/18/2023 访问量:5360
XSLT 样式表不适用于 Firefox 中的 XML。如何解决?
XSLT stylesheet isn't applied to XML in Firefox. How to fix it?
问:
我不知道为什么我的代码不与我和我的 xml 合作。我很抱歉提供照片,但是当我提供代码时,网站显示的是最终结果,而不是它自己的代码,我不知道如何更改它。
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="movies.xsl" type="text/xsl" ?>
<collection>
<movie>
<title>hasdasd</title>
<year>1222</year>
<genre>horror</genre>
</movie>
<movie>
<title>wqw</title>
<year>1111</year>
<genre>notporn</genre>
</movie>
<movie>
<title>asdsd</title>
<year>1444</year>
<genre>comedy</genre>
</movie>
</collection>
我的XML代码
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/collection">
<html>
<body> <h1>OEIHFWOEFIHEFOI</h1>
<table border="1">
<tr>
<th>title</th>
<th>Genre</th>
<th>year</th>
</tr>
<xsl:for-each select="movie">
<tr>
<td><xsl:value-of select="title" /></td>
<td><xsl:value-of select="year" /></td>
<td><xsl:value-of select="genre" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我的 XSLT 代码 我真的不知道怎么了,似乎他们以错误的方式相互联系,但我仍然一无所知。
答:
这似乎是一个常见的问题,即较新版本的Firefox对XML-XSLT组合的源应用了更严格的策略。如果 XML 和 XSLT 是本地文件,Firefox 将阻止/忽略对 XSLT 的引用。
解决方案是更改以下设置中的一个设置:about:config
privacy.file_unique_origin
自。正如 @evilpie 所建议的那样,这是首选的修改。false
这应该使你的 XML 按预期显示。这里讨论的是:Firefox 68:本地文件现在被视为跨域 (1558299)。
评论
首先:我强烈建议您使用本地http服务器,而不是在Firefox中修改任何使您不太安全的首选项。
由于 Firefox 68 将本地文件视为始终是跨域的。(请参阅 “本地 HTML 文件可能导致文件窃取”)这可以防止各种安全和隐私问题,例如攻击将本地数据泄露到与下载的 HTML 文件相同的文件夹中。另请参阅文章“对文件 URL 的限制”。
更改是非常不安全的,不应该这样做,因为它允许访问计算机上的所有文件。security.fileuri.strict_origin_policy
编辑:我之前建议使用 ,它不太不安全,但该首选项大约在两年前被删除,今天不起作用。privacy.file_unique_origin
评论
privacy.file_unique_origin
security.fileuri.strict_origin_policy
Mozilla建议运行本地服务器。只需在您的机器上安装 Python 3.x,并通过从中启动批处理文件来为您的工作目录提供 XML 和 XSL,如下行:
cmd.exe /c "\Python38-32\python.exe -m http.server"
当然,使用正确的 Python 路径。Firefox 会在 中找到 'your_bewdiful.xml' 。http://localhost:8000/your_bewdiful.xml
评论