0

そこで、YouTubeプレイリストのデフォルトのRSSフィードをより視覚的に心地よい形式に変換するXSLTスクリプトを作成しようとしています。コードは多かれ少なかれダウンしていると思いますが、名前空間の問題だと思うことに遭遇しています。

基本的に、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

もう1つの小さな問題は、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/&quot;Ak8EQX47eCp7I2A9WhdSEkQ.&quot;'>

手動でに切り詰めない限り、解析すらできません<feed>。繰り返しになりますが、これははるかに小さな問題であり、最初の問題を解決したいと思います。何かアドバイスがあれば、本当にありがたいです!

アダム

4

1 に答える 1

0

問題を要約すると、XSLTにはXMLに存在する名前空間がありませんでした。したがって、XMLに次の名前空間が含まれている場合:

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'

それも要素に追加する必要があります。以下のXML名前空間の理解については、以下をよく読んでください。

http://msdn.microsoft.com/en-us/magazine/cc302166.aspx

于 2012-04-20T01:24:53.217 に答える