使用相对路径导入 xslt 样式表
Importing xslt stylesheet with relative path
我有一个 XSLT 文件,它使用 xsl:import 元素来加载一些常用模板。
我想在 ?xml-stylesheet 声明中使用它来将一些 XML 转换为 HTML (使其对用户可读)。
问题是用于托管 xsl 文件的服务器将取决于具体部署,不能预先硬编码(所以对我来说没有绝对路径)。
我很乐意使用相对路径,但是当我尝试将 import href 更改为相对路径(如“/other.xsl”或“other.xsl”时,浏览器无法导入通用样式表。
更具体一点 - 主 xsl 文件的 url 如下所示:
https://test.com/some/path/servlet.jsp/service/stles/main.xsl
并且浏览器尝试从以下地址加载导入的 xsl:
https://test.com/other.xsl
other.xsl 样式表位于此处:
https://test.com/some/path/servlet.jsp/service/stles/other.xsl
为什么相对地址在这种情况下不起作用?
有没有办法强制它工作(除了重写服务器上的 xsl 文件内容以更改导入 url)。
我想我可能遗漏了一些重要的部分,这些部分稍微改变了这个问题。
我尝试了一些实现,我认为我将标准 xml-stylesheet 与 js 混合在一起。
最终版本是通过 js XSLTProcessor 使用 xslt 转换。
样式表加载了 fetch -> xml dom xsl 对象 -> importStyleSheet(xslDomObj)。问题是 xsl 包含计算错误相对路径的导入元素(这可能是由于 xsl 是通过 dom 对象而不是 url 加载的)。
我为导入的 src 添加了简单的替换,将相对路径更改为绝对路径,这解决了我的问题(至少是眼前的问题 - 因为据我所知,这并没有解决导入的问题导入的 xsl)。
我有一个 XSLT 文件,它使用 xsl:import 元素来加载一些常用模板。 我想在 ?xml-stylesheet 声明中使用它来将一些 XML 转换为 HTML (使其对用户可读)。
问题是用于托管 xsl 文件的服务器将取决于具体部署,不能预先硬编码(所以对我来说没有绝对路径)。 我很乐意使用相对路径,但是当我尝试将 import href 更改为相对路径(如“/other.xsl”或“other.xsl”时,浏览器无法导入通用样式表。
更具体一点 - 主 xsl 文件的 url 如下所示:
https://test.com/some/path/servlet.jsp/service/stles/main.xsl
并且浏览器尝试从以下地址加载导入的 xsl:
https://test.com/other.xsl
other.xsl 样式表位于此处:
https://test.com/some/path/servlet.jsp/service/stles/other.xsl
为什么相对地址在这种情况下不起作用? 有没有办法强制它工作(除了重写服务器上的 xsl 文件内容以更改导入 url)。
我想我可能遗漏了一些重要的部分,这些部分稍微改变了这个问题。 我尝试了一些实现,我认为我将标准 xml-stylesheet 与 js 混合在一起。
最终版本是通过 js XSLTProcessor 使用 xslt 转换。 样式表加载了 fetch -> xml dom xsl 对象 -> importStyleSheet(xslDomObj)。问题是 xsl 包含计算错误相对路径的导入元素(这可能是由于 xsl 是通过 dom 对象而不是 url 加载的)。
我为导入的 src 添加了简单的替换,将相对路径更改为绝对路径,这解决了我的问题(至少是眼前的问题 - 因为据我所知,这并没有解决导入的问题导入的 xsl)。