因此,我正在尝试编写一个 XSLT 脚本,它将 YouTube 播放列表的默认 RSS 提要转换为视觉上更令人愉悦的格式。我想我的代码或多或少已经被关闭了,但我遇到了我认为命名空间的问题。
基本上,我的 XSLT 解析器似乎卡住了一个<yt:videoid>
和一个<media:description>
标记,我不确定如何修复它(原始文档中从未定义过命名空间)。我的代码如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="feed/entry">
<item>
<title><xsl:value-of select="title" /></title>
<description>
<![CDATA[<img src="http://i.ytimg.com/vi/{yt:videoid}/hqdefault.jpg">
<br />
<br />
<xsl:value-of select="media:description">
<br />
<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/{yt:videoid}" frameborder="0" allowfullscreen></iframe>]]>
</description>
<link>http://www.youtube.com/watch?v={yt:videoid}</link>
<guid isPermaLink="false">http://www.youtube.com/watch?v={yt:videoid}</guid>
<pubDate><xsl:value-of select="updated" /></pubDate>
</item>
当我运行它时,它编译时会出现一堆“未定义 Y 上的命名空间前缀 X”错误,并且在我包含{yt:videoid}
或media:description
显示为纯文本而不是适当值的任何地方。
另一个更小的问题是 XML 文档是用
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:openSearch='http://a9.com/-/spec/opensearch/1.1/' xmlns:gd='http://schemas.google.com/g/2005' xmlns:yt='http://gdata.youtube.com/schemas/2007' gd:etag='W/"Ak8EQX47eCp7I2A9WhdSEkQ."'>
它甚至不会解析,除非我手动将其削减为<feed>
. 同样,这是一个小得多的问题,我更愿意解决第一个问题。如果有人有任何建议,我将不胜感激!
亚当