我正在尝试从youtube api中获取大量的视图,它对标题,网址和缩略图很有用,但它不适用于大量的观看次数。
这是我想要获取的XML代码(看一下最后一行):
<feed xmlns:gml="http://www.opengis.net/gml" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:georss="http://www.georss.org/georss" xmlns:app="http://purl.org/atom/app#" xmlns:media="http://search.yahoo.com/mrss/" xmlns:gd="http://schemas.google.com/g/2005" xmlns="http://www.w3.org/2005/Atom">
<id>http://gdata.youtube.com/feeds/api/standardfeeds/on_the_web</id>
<updated>2012-03-21T03:32:37.000-07:00</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://gdata.youtube.com/schemas/2007#video"/>
<title type="text">On the Web</title>
<logo>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</logo>
<link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/standardfeeds/on_the_web"/>
<link rel="http://schemas.google.com/g/2005#batch" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/standardfeeds/on_the_web/batch"/>
<link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/standardfeeds/on_the_web?start-index=1&max-results=25"/>
<link rel="next" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/standardfeeds/on_the_web?start-index=26&max-results=25"/>
<author>
<name>YouTube</name>
<uri>http://www.youtube.com/</uri>
</author>
<generator version="2.1" uri="http://gdata.youtube.com">YouTube data API</generator>
<openSearch:totalResults>192</openSearch:totalResults>
<openSearch:startIndex>1</openSearch:startIndex>
<openSearch:itemsPerPage>25</openSearch:itemsPerPage>
<entry>
<id>http://gdata.youtube.com/feeds/api/videos/LSNxrEa3Usw</id>
<published>2012-03-07T01:09:29.000Z</published>
<updated>2012-03-21T10:32:34.000Z</updated>
<category scheme="http://schemas.google.com/g/2005#kind" term="http://gdata.youtube.com/schemas/2007#video"/>
<category scheme="http://gdata.youtube.com/schemas/2007/categories.cat" term="Entertainment" label="Entertainment"/>
<category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="makena"/>
<category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="adele"/>
<category scheme="http://gdata.youtube.com/schemas/2007/keywords.cat" term="singing"/>
<title type="text">2yr old Makena sings Adele...so cute</title>
<content type="text">My 2yr old daughter loves Adele and sings along!</content>
<link rel="alternate" type="text/html" href="http://www.youtube.com/watch?v=LSNxrEa3Usw&feature=youtube_gdata"/>
<link rel="http://gdata.youtube.com/schemas/2007#video.responses" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/LSNxrEa3Usw/responses"/>
<link rel="http://gdata.youtube.com/schemas/2007#video.related" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/videos/LSNxrEa3Usw/related"/>
<link rel="http://gdata.youtube.com/schemas/2007#mobile" type="text/html" href="http://m.youtube.com/details?v=LSNxrEa3Usw"/>
<link rel="self" type="application/atom+xml" href="http://gdata.youtube.com/feeds/api/standardfeeds/on_the_web/v/LSNxrEa3Usw"/>
<author>
<name>heatherfedorick</name>
<uri>http://gdata.youtube.com/feeds/api/users/heatherfedorick</uri>
</author>
<gd:comments>
<gd:feedLink rel="http://gdata.youtube.com/schemas/2007#comments" href="http://gdata.youtube.com/feeds/api/videos/LSNxrEa3Usw/comments" countHint="2433"/>
</gd:comments>
<yt:hd/>
<media:group>
<media:category label="Entertainment" scheme="http://gdata.youtube.com/schemas/2007/categories.cat">Entertainment</media:category>
<media:content url="http://www.youtube.com/v/LSNxrEa3Usw?version=3&f=standard&app=youtube_gdata" type="application/x-shockwave-flash" medium="video" isDefault="true" expression="full" duration="105" yt:format="5"/>
<media:content url="rtsp://v5.cache6.c.youtube.com/CiQLENy73wIaGwnMUrdGrHEjLRMYDSANFEgGUghzdGFuZGFyZAw=/0/0/0/video.3gp" type="video/3gpp" medium="video" expression="full" duration="105" yt:format="1"/>
<media:content url="rtsp://v5.cache6.c.youtube.com/CiQLENy73wIaGwnMUrdGrHEjLRMYESARFEgGUghzdGFuZGFyZAw=/0/0/0/video.3gp" type="video/3gpp" medium="video" expression="full" duration="105" yt:format="6"/>
<media:description type="plain">My 2yr old daughter loves Adele and sings along!</media:description>
<media:keywords>makena, adele, singing</media:keywords>
<media:player url="http://www.youtube.com/watch?v=LSNxrEa3Usw&feature=youtube_gdata_player"/>
<media:restriction type="country" relationship="deny">DE</media:restriction>
<media:thumbnail url="http://i.ytimg.com/vi/LSNxrEa3Usw/0.jpg" height="360" width="480" time="00:00:52.500"/>
<media:thumbnail url="http://i.ytimg.com/vi/LSNxrEa3Usw/1.jpg" height="90" width="120" time="00:00:26.250"/>
<media:thumbnail url="http://i.ytimg.com/vi/LSNxrEa3Usw/2.jpg" height="90" width="120" time="00:00:52.500"/>
<media:thumbnail url="http://i.ytimg.com/vi/LSNxrEa3Usw/3.jpg" height="90" width="120" time="00:01:18.750"/>
<media:title type="plain">2yr old Makena sings Adele...so cute</media:title>
<yt:duration seconds="105"/>
</media:group>
<gd:rating average="4.9061623" max="5" min="1" numRaters="18159" rel="http://schemas.google.com/g/2005#overall"/>
<yt:statistics favoriteCount="3144" viewCount="3134579"/>
</entry>
这是用于获取数据并将其放入自己定义的xml格式的代码:
<?xml version="1.0" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="http://www.w3.org/2005/Atom"
xmlns:media='http://search.yahoo.com/mrss/'>
xmlns:yt='http://gdata.youtube.com/schemas/2007'
<xsl:template match="/">
<xsl:for-each select="/a:feed/a:entry">
<item>
<xsl:attribute name="type">youtube</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="a:title" />
</xsl:attribute>
<xsl:attribute name="author">
<xsl:value-of select="a:author/a:name" />
</xsl:attribute>
<xsl:attribute name="url">
<xsl:value-of select="a:link/@href" />
</xsl:attribute>
<xsl:attribute name="image">
<xsl:value-of select="media:group/media:thumbnail[@width='120']/@url" />
</xsl:attribute>
<xsl:attribute name="score">
<xsl:value-of select="yt:statistics/@viewCount" />
</xsl:attribute>
</item>
</xsl:for-each>
</xsl:template>
虽然行:
<xsl:attribute name="score">
<xsl:value-of select="yt:statistics/@viewCount" />
</xsl:attribute>
根本不会返回我的分数:(
知道我做错了什么?
答案 0 :(得分:1)
您发布的样式表格格式不正确,特别是
中带有前缀yt
的名称空间声明
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="http://www.w3.org/2005/Atom"
xmlns:media='http://search.yahoo.com/mrss/'>
xmlns:yt='http://gdata.youtube.com/schemas/2007'
错位,需要
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:a="http://www.w3.org/2005/Atom"
xmlns:media='http://search.yahoo.com/mrss/'
xmlns:yt='http://gdata.youtube.com/schemas/2007'>
据我所知,这就是错误。但是,我希望任何XSLT处理器都能报告该错误,因此可能在您的实际代码中存在其他或进一步的问题。如果您仍有问题,请发布最小但完整的示例,以便我们重现该问题,包括您获得的任何错误消息以及XSLT处理器的名称和版本。