获取CDATA内容即幻灯片

时间:2014-07-29 17:04:03

标签: xml xslt

我有一个由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() &lt; 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添加到其路径中的所有节点,但是没有访问节点。

请建议

1 个答案:

答案 0 :(得分:0)

为了获得CDATA,您不需要做任何特殊的事情,它只是一种在XML中转义文本的方法。只需获取节点的值,即通过执行<xsl:value-of select="slideshow" />,它将为您提供任何数据。请注意,未转义的CDATA将以这种方式输出。要在输出中再次使用CDATA,请将cdata-elements属性添加到<xsl:output />(不确定它是否已在XSLT 1.0中可用)。

要使用命名空间,还必须使用xmlns:xx绑定命名空间,其中xx是前缀。之后,您可以在XPath NameTest表达式中使用该前缀。

要在任何命名空间中获取元素,请使用*:elementname