在多个网页中显示XML文件

Phi*_*ard 0 xml xslt

我有一个XML文件,我想在两个单独的网页上显示,有两个不同的样式表.问题是样式表是在XML文件中指定的,通常会将其排除在外.我试图通过从转换本身拆分数据并将其作为单独的文件包含来解决这个问题.像这样的东西:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="news.xsl" type="text/xsl"?>
<!DOCTYPE doc [
<!ENTITY items SYSTEM "news_items.xml">
]>
<wrapper>
&items;
</wrapper>
Run Code Online (Sandbox Code Playgroud)

这里news_items.xml是一个纯XML文件,没有头文件和一个根节点,如下所示:

<items>
  <item>
    ---
  </item>
  <item>
    ---
  </item>
  <item>
    ---
  </item>
</items>
Run Code Online (Sandbox Code Playgroud)

样式表news.xsl遍历重复节点,并生成格式良好的输出.这种安排允许我用不同的样式表重复练习,而不重复数据.它适用于Chrome,但不适用于IE或我定位的任何webkit浏览器.

有一个更好的方法吗?我希望能够使用单个XML文件,因为内容是相当动态的.

后来:我实际上使用PHP XSLTProcessor类在服务器端解决了这个问题.根据提出的问题条款,这不是一个选项,为此我道歉.这不是我特别熟悉的领域,即使他们提交了一个完美的解决方案,我也无法向所有人颁发赏金.对于那个很抱歉.

And*_*eas 6

您可以使用虚拟XML文件,而不包含包含样式表调用的实际数据:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="YOUR_STYLESHEET.xsl"?>
<root/>
Run Code Online (Sandbox Code Playgroud)

样式表本身不使用虚拟数据,而是通过"document()"获取真实数据:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:apply-templates select="document('YOUR_DATA_FILE.xml')/YOUR_XPATH"/>
  </xsl:template>
  ...use templates to do something...
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)