Заменить корневой элемент doctype на rss из html, используя xslt? - PullRequest
1 голос
/ 06 января 2011

Я пытаюсь добавить rss-doctype в xml-документ, отображаемый с использованием xslt.Как мне изменить корневой элемент?

Вот как это выглядит в данный момент:

<!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">

Вот мой выходной узел:

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

Ответы [ 2 ]

1 голос
/ 06 января 2011

Вы должны включить DTD (см. http://www.stylusstudio.com/xsllist/200405/post70520.html и ответ http://www.stylusstudio.com/xsllist/200405/post90520.html, где Дэвид Карлайл указывает на это).Ниже приведен правильный синтаксис - вам нужно будет найти 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"/>
0 голосов
/ 06 января 2011

Вот простой пример :

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...