在XSLT转换期间,msxml无法正确关闭<link />标记

时间:2009-09-24 16:23:31

标签: .net xslt msxml

我正在尝试使用C#解析RSS提要,我需要使用XSLT对其进行转换。这是我的XSLT片段:

<xsl:output encoding="UTF-8" method="html" omit-xml-declaration="yes"/>
<xsl:template match="/">
    <xsl:apply-templates select="rss/channel/item" />
</xsl:template>
<xsl:template match="rss/channel/item">
    <item>
    <link><xsl:value-of select="normalize-space(./link)" /></link>
      </item>
</xsl:template>

使用random RSS (the corriere della serra),这可以正确呈现XML Spy:

<item>
<link>http://www.corriere.it/este(...)2aabc.shtml</link>
</item>
<item>
<link>http://www.corriere.it/cron(...)22a-11de-bb1e-00144f02aabc.shtml</link>
</item>
...

但是当使用Microsoft .net工具(使用我的代码或使用Visual Studio XSLT调试器)时,我得到:

<item>
<link>http://www.corriere.it(...)11de-aaa2-00144f02aabc.shtml
    </item>
    <item>
    <link>http://corrieredelmezzogiorno.corriere.it/le(...)03131900.shtml
        </item>
    <item>

根本不输出</link>标记。如果我更改“XXX”的“链接”,这可以很好地工作,但遗憾的是这不是一个选项。

知道这里发生了什么???

1 个答案:

答案 0 :(得分:1)

对于那些想知道的人,msxml在method="html"模式下不会关闭链接标记。如果您将第一行更改为

<xsl:output encoding="UTF-8" method="xml" omit-xml-declaration="yes"/>

以上代码完美无缺......