使用xslt将rsgin doctype根元素转换为来自html的rss?

时间:2011-01-06 00:44:38

标签: xslt

我正在尝试将rss-doctype添加到使用xslt呈现的xml文档中。如何更改根元素?

目前的情况如下:

<!DOCTYPE html PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "about:legacy-compat"> 

我想:

<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "about:legacy-compat">

这是我的outputnode:

<xsl:output
method="xml"
version="1.0"
encoding="UTF-8"
doctype-public="-//Netscape Communications//DTD RSS 0.91//EN"
indent="yes"
/>

2 个答案:

答案 0 :(得分:1)

您必须包含DTD(请参阅http://www.stylusstudio.com/xsllist/200405/post70520.html并回答http://www.stylusstudio.com/xsllist/200405/post90520.html,其中David Carlisle指出了这一点)。以下是正确的语法 - 您将需要找到DTD

<xsl:output method="xml" indent="yes" encoding="UTF-8"
doctype-system="http://foo.org/dont.know.the.dtd"
doctype-public="-//Netscape Communications//DTD RSS 0.91//EN"/>

答案 1 :(得分:0)

以下是一个简单示例

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"
 doctype-system="http://www.silmaril.ie/software/rss2.dtd"
 doctype-public="-//Netscape Communications//DTD RSS 0.91//EN"/>
 <xsl:template match="/">
  <rss>
   <channel/>
  </rss>
 </xsl:template>
</xsl:stylesheet>

使用此转换处理任何XML文档(未使用)时,会生成所需的正确结果

<!DOCTYPE rss
  PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://www.silmaril.ie/software/rss2.dtd">
<rss>
   <channel/>
</rss>