无法使用XSLT正确转换

时间:2011-10-03 06:02:31

标签: xml xslt

我尝试将XSLT转换(如下所示)用于此类型的RSS但没有结果。那是为什么?

<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?>

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUACQXg6fyp7ImA9WhdUFUo.&quot;">

,它的结构是

<feed>
tags tags tags like <title></title>
<entry><published></published><title></title><content></content>....</entry>
</feed>

XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:include href="identity.xsl"/>

<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="node() | @*" />
  </xsl:copy>
</xsl:template>

<xsl:template match="entry"/>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

您的样式表是为默认的XML命名空间(xmlns =“”)构建的。 RSS源具有定义的Atom(xmlns =“http://www.w3.org/2005/Atom”)命名空间,如果您具有嵌套的XML内容,则可能包含其他命名空间。

要“匹配”该命名空间中的任何内容,您还需要在样式表中定义它。您可能希望使用如下前缀定义Atom:xmlns:a =“http://www.w3.org/2005/Atom”。然后你的比赛将成为

<xsl:template match="a:entry"/>

此外,以上匹配条目,但您没有做任何事情。您可能希望它在您获得条目时打印出转换后的值,但上述内容只是将其从结果中排除。