'XSLT stylesheet isn't applied to XML in Firefox. How to fix it?
I have no idea why my code isn't cooperating, with me and my xml. I'm sorry for giving pics, but when i'm giving code, site is displaying end result, not the code it self, and I have no idea how to change it.
<?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>
my XML code
<?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>
my XSLT code I really don't know whats wrong, it seems like they are connected to each other in a wrong way, but im still clueless.
Solution 1:[1]
This seems to be the usual problem that newer versions of Firefox apply a stricter policy regarding the source of the XML-XSLT combination. If the XML and XSLT are local files, Firefox will block/ignore the reference to the XSLT.
The solution is changing one setting in about:config
: Set
privacy.file_unique_origin
to false
. This is the preferred modification, as suggested by @evilpie.
This should make your XML display as desired. It is discussed here: Firefox 68: local files now treated as cross-origin (1558299).
Solution 2:[2]
Firstly: I strongly recommend you use a local http server instead of modifying any preferences in Firefox that make you less secure.
Since around Firefox 68 treats local files as always cross-origin. (See "local HTML file can lead to file stealing") This prevents various security and privacy issues such as an attack exfiltrating local data in the same folder as a downloaded HTML file. See also the article "Restrictions on File Urls".
Unlike what zx485 recommended you can set privacy.file_unique_origin
to false
in about:config.
Changing security.fileuri.strict_origin_policy
is more insecure and should not be done, because it allows access to all files on your computer.
Solution 3:[3]
Mozilla recommends to run a local server. Just install Python 3.x on your machine and serve your working directory with you XML and XSL by launching a batch file from it, with this line:
cmd.exe /c "\Python38-32\python.exe -m http.server"
With the correct path to your Python, of course. Firefox will find 'your_bewdiful.xml' in http://localhost:8000/your_bewdiful.xml
.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | evilpie |
Solution 3 | RolfBly |