XSLT解析RSS feed出错仅返回空<update/>标签如何解决
问题原因
你在XSLT的stylesheet声明中错误设置了xpath-default-namespace参数,值为http://purl.org/rss/1.0/modules/content/。该配置会让所有不带前缀的XPath查询,默认匹配该命名空间下的节点。但你提供的RSS源中,<rss>、<channel>、<item>、<title>这些核心元素都不属于任何命名空间,因此XPath无法匹配到对应节点,最终只能输出空的<update/>标签。
修复方案
删除XSLT中xpath-default-namespace="http://purl.org/rss/1.0/modules/content/"这一行配置即可。
修复后的完整XSLT代码如下:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0" exclude-result-prefixes="content"> <xsl:output method="xml" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <xsl:element name="update"> <xsl:apply-templates select="rss/channel/item"/> </xsl:element> </xsl:template> <xsl:template match="rss/channel/item"> <xsl:element name="add"> <xsl:element name="doc"> <xsl:element name="field"> <xsl:attribute name="name">tcngrams_title</xsl:attribute> <xsl:value-of select="title"/> </xsl:element> </xsl:element> </xsl:element> </xsl:template> </xsl:stylesheet>
修改后运行转换即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者Asatur
相关产品推荐
相关产品推荐

