我想要做的是采取一种XML文件,让我们说 http://example.org/data.xml 并显示它有一个XSL的样式表中的应用。(我不能修改该文件本身,并添加一项指令)

因此,有几个实用XML文件是这样的:

wrapper.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>

展开。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>

因此,要总结:样式表。xsl是写的 http://example.org/data.xml, ,浏览器是指出wrapper.xml 和用户应该看到改变 http://example.org/data.xml.

这是一个罕见的情况下工作的,因为预计在即(和铬),但没有Firefox。

据我所知Firefox支持外部XML实体,但它似乎是他们是无形的,在XSL代码。我找到了 这篇文章 从2006年起,它描述了这个问题在火狐1.5(我采用3.5.3)

是否有任何解决方法吗?

有帮助吗?

解决方案

XML看起来很熟悉 ;)

目前,火狐将不负荷的外部DTD和实体引用,因为安全和拒绝服务问题。 例如: http://en.wikipedia.org/wiki/Billion_laughs

有打开的 Mozilla错误 描述原因和冗长的辩论是否使它的东西是配置: https://bugzilla.mozilla.org/show_bug.cgi?id=22942

那里确实出现了一个解决方法来装载Dtd, 但我猜这可能不是一个可行的解决办法,为你.

Firefox将负荷 本地 DTD文件

如果你把它们放在这个目录窗口:

C:\Program Files\Mozilla Firefox\res\dtd\...

目录用于Linux:

/**mileage may vary**/MozillaFirefox/lib/res/dtd/

一想法得到使用的实体参考: 如果你可以控制的内容wrapper.xml然后你可以获取的内容 http://example.org/data.xml (服务器方)和回它作为的全部内容包装的文件,与另外的样式表处理指令(假设你已经有些动态服务器侧能力)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top