我使用XSLT转换了一些RSS XML提要。基本上我编辑了两种类型:
1. <rss><channel>some tags about the RSS<item></item></channel></rss>
2. <feed>some tags about the RSS<entry></entry></feed>
使用此样式表。 (它从paths.xml文件中获取一些文件)
<xsl:stylesheet version="1.0" xmlns:f="http://www.w3.org/2005/Atom" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/*">
<NEWrss>
<xsl:for-each select="file">
<xsl:apply-templates
select="document(.)/*//channel | document(.)/f:feed/f:entry">
<xsl:with-param name="file" select="."/>
</xsl:apply-templates>
</xsl:for-each>
</NEWrss>
</xsl:template>
在第一个RSS上,我使用<channel>
和第一个<item>
之间的标记正确输出了输出。这些是包含博客信息的标签,如标题。
然而,在第二个版本中,那些标签(博客的标题...在<feed>
和第一个<entry>
之间找到)在转换后消失了。标签显示正确。
我的问题是如何才能获得这些标签?
第二个结构的样本Feed是http://feeds.feedburner.com/EFENPRESS-
谢谢。
答案 0 :(得分:0)
看起来像命名空间问题。您正在使用命名空间前缀“f”来访问feed和entry元素,但这些元素实际上并不在该命名空间中。 (实际上,entry元素是空的,因此访问它不会呈现任何内容)
答案 1 :(得分:0)
我认为你所说的是你没有看到f:feed元素之前的文字。那是因为你的select语句不包括它 - 它只选择f:feed / f:entry和channel元素。也许你应该尝试处理f:feed而不是f:feed / f:entry?或f:feed / node(),它将同时选择f:feed / text()和f:feed()/ f:entry。