我有一个由http://feeds.contenthub.aol.com/syndication/2.0/feed/53d27420b4075代表的XML。我能够通过我的xsl访问标题和链接,看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:media="http://search.yahoo.com/mrss/">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<rss xmlns:georss="http://www.georss.org/georss" xmlns:twitter="http://api.twitter.com" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<author>
<xsl:text>Content-Feed-Pics</xsl:text>
</author>
<xsl:for-each select="rss/channel/item[position() < 30]">
<item>
<title><xsl:value-of select="title"/></title>
<!--author><xsl:value-of select="dc:rss/dc:channel/dc:item/dc:creator"/></author-->
<!--icon>
<xsl:value-of select="concat(entities/media//media_url,':thumb')"/>
</icon-->
<link><xsl:value-of select="link"/></link>
<description><xsl:value-of select="description"/></description>
<pubDate><xsl:value-of select="pubDate"/></pubDate>
</item>
</xsl:for-each>
</channel>
</rss>
</xsl:template>
</xsl:stylesheet>
这两个问题是获取节点的CDATA内容,幻灯片显示在%%内。 第二个问题是某些节点喜欢和使用命名空间。我尝试将dc:namespace添加到其路径中的所有节点,但是没有访问节点。
请建议
答案 0 :(得分:0)
为了获得CDATA,您不需要做任何特殊的事情,它只是一种在XML中转义文本的方法。只需获取节点的值,即通过执行<xsl:value-of select="slideshow" />
,它将为您提供任何数据。请注意,未转义的CDATA将以这种方式输出。要在输出中再次使用CDATA,请将cdata-elements
属性添加到<xsl:output />
(不确定它是否已在XSLT 1.0中可用)。
要使用命名空间,还必须使用xmlns:xx
绑定命名空间,其中xx
是前缀。之后,您可以在XPath NameTest表达式中使用该前缀。
要在任何命名空间中获取元素,请使用*:elementname
。