【发布时间】:2009-10-03 03:58:19
【问题描述】:
我想要做的是获取一个 XML 文档,比如http://example.org/data.xml,并使用 XSL 样式表显示它。 (我无法修改文档本身并添加指令)
所以有几个像这样的实用 XML 文件:
包装器.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wrapper [
<!ENTITY content SYSTEM "http://example.org/data.xml">
]>
<?xml-stylesheet type="text/xsl" href="unwrap.xsl" ?>
<wrapper>
&content;
</wrapper>
unwrap.xsl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="stylesheet.xsl"/>
<xsl:template match="/wrapper/node()[1]">
<xsl:apply-imports/>
</xsl:template>
</xsl:stylesheet>
总结一下:stylesheet.xsl 是为http://example.org/data.xml 编写的,浏览器指向 wrapper.xml,用户应该会看到转换后的http://example.org/data.xml。
这是在 IE(和 Chrome)中按预期运行但在 Firefox 中无法正常运行的极少数情况之一。
AFAIK Firefox 支持外部 XML 实体,但它们似乎在 XSL 代码中不可见。我从 2006 年发现 this article,它在 Firefox 1.5 中描述了这个问题(我使用的是 3.5.3)
有什么解决方法吗?
【问题讨论】:
标签: firefox xslt entity doctype