我不能让这个为我的生活而工作。这是我从itunes affiliate的RSS提要获得的xml片段。我想要在标签中打印顶部值,但我不能出于某种原因:
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:im="http://itunes.apple.com/rss" xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<id>http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppaidapplications/sf=143441/limit=100/genre=6014/xml</id><title>iTunes Store: Top Paid Applications</title><updated>2010-03-24T15:36:42-07:00</updated><link rel="alternate" type="text/html" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewTop?id=25180&popId=30"/><link rel="self" href="http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppaidapplications/sf=143441/limit=100/genre=6014/xml"/><icon>http://phobos.apple.com/favicon.ico</icon><author><name>iTunes Store</name><uri>http://www.apple.com/itunes/</uri></author><rights>Copyright 2008 Apple Inc.</rights>
<entry>
<updated>date</updated>
<id>someID</id>
<title>a</title>
<im:name>b</im:name>
</entry>
<entry>
<updated>date2/updated>
<id>someID2</id>
<title>a2</title>
<im:name>b2</im:name>
</entry>
</feed>
如果我尝试<xsl:apply-templates match="entry"/>
,它会吐出文件的全部内容。如果我使用<xsl:call-template name="entry">
它只显示一个条目,我必须使用<xsl:value-of select="//*[local-name(.)='name']"/>
来获取名称,但这是一个黑客。我之前使用xslt for xml没有名称空间和xml有正确的父子关系但不喜欢这个RSS feed。通知条目不包含在条目或任何内容中。
感谢任何帮助。我想使用xslt因为我想改变itunes链接以通过我的联盟帐户 - 所以自动化的东西对我不起作用。
答案 0 :(得分:1)
您匹配的是没有命名空间的元素,但XML文档中的实际元素属于(deafult)namspace :xmlns="http://www.w3.org/2005/Atom"
。
因此,您需要在样式表中声明命名空间,比如说xmlns:atom="http://www.w3.org/2005/Atom"
。然后不仅匹配{elementName}而且匹配{atom:elementName},其中{elementName}在你的情况下是:“entry”。