2016-08-19 14 views
0

私は作成していない友人のウェブサイトを維持しています。これはSymphony CMSを使用しており、私のXML/XSLT/XPATHの知識は基本的には基本的なものです。 Instagramのフィードセクションを持つページがあります。このセクションでは、最近画像の表示が停止していて、Altのテキスト「Instagram」が表示されます。RSSフィード内のデータの選択Symphony CMSのXSLTを使用したXML名前空間

そのテンプレートから該当するコードは次のとおりです。私が言うことができるものから

<rss xmlns:admin="http://webns.net/mvcb/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" version="2.0"> 
    <channel> 
    <title>vubrew's feed - WEBSTA</title> 
    <link>https://widget.websta.me/rss/n/vubrew</link> 
    <description> 
     WEBSTA's RSS Feed - Websta is the best Instagram Web Viewer 
    </description> 
    <dc:language>en</dc:language> 
    <dc:creator>WEBSTA</dc:creator> 
    <pubDate>Fri, 19 Aug 2016 07:01:29 +0900</pubDate> 
    <atom:link href="https://widget.websta.me/rss/n/vubrew" rel="self" type="application/rss+xml"/> 
    <item> 
     <pubDate>Fri, 19 Aug 2016 00:32:44 +0900</pubDate> 
     <title>Fri, 19 Aug 2016 00:32:44 +0900</title> 
     <description> 
     Join Veterans United, Pit Sisters, and The Jed Fund tonight from 6 to 9 for the Mission Pawsible: TAILS kickoff event! There will be a food truck, raffles, and a silent auction, and $1 from every pint sold during the event will be donated to this great cause. 
     </description> 
     <atom:link href="https://websta.me/p/1319648356028404744_761313738"/> 
     <media:thumbnail url="https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/13696890_1570626159907795_1849825203_n.jpg?ig_cache_key=MTMxOTY0ODM1NjAyODQwNDc0NA%3D%3D.2"/> 
     <guid>https://websta.me/p/1319648356028404744_761313738</guid> 
    </item> 
    <item>...</item> 
    ... 
    </channel> 
</rss> 

<section> 
    ... 
    <xsl:for-each select="instagram/rss/channel/item[position() &lt; '5']"> 
    <div class="one-quarter left"> 
     <img class="border" src="{image/url}" alt="Instagram" /> 
    </div> 
    </xsl:for-each> 
    ... 
</section> 

このセクションからデータソースの青写真がhttps://websta.me/rss/n/vubrewでRSSフィードから描くダイナミックXMLですWEBSTAがXMLフィードの形式を最近変更した可能性があります。{image/url}は画像を選択できなくなりました。media名前空間media:thumbnail/urlの下に表示されます。

InstagramデータソースのSymphony管理コントロールパネルに新しいmedia名前空間を追加しました。具体的なURIはhttp://search.yahoo.com/mrss/です。

画像ソースを{thumbnail/url}に変更しようとしましたが、これは同じ結果(アルトテキストのみ)と{media:thumbnail/url}になりました。これにより、無効なエラーが表示されます名前空間接頭辞:

XSLTProcessor::transformToXml(): 
    Undefined namespace prefix 
    xmlXPathCompiledEval: evaluation failed 
    XPath evaluation returned no result. 

ブラウザでhttp://search.yahoo.com/mrss/media URIをプルアップしようとするには、Yahooのホームページにリダイレクトし、そして私は、この仕様は、現在他の場所で維持される可能性があることを示すいくつかの情報を見つけましたが、私はように見えることはできません別のURIを探します。だから私はこれが問題の一部かどうか疑問に思いますか?

私のXML/XSLT/XPATHの知識は薄いので、要素を正しく指定していないか、問題がメディアネームスペースURIに関連している可能性があります。また、データソース内の新しい名前空間を認識するためにシンフォニーをリフレッシュする必要があるかもしれないと考えましたが、それを達成するための何も表示されません。

私は洞察を深めることができます。

答えて

1

私はSymphonyを知らないので、XSLTの観点から答えを出しますが、通常はルートxsl:stylesheet要素に名前空間を宣言します。例えば、この特定のケースでは、それは次のようになります。

その後
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       version="1.0" 
       xmlns:media="http://search.yahoo.com/mrss/" 
       exclude-result-prefixes="media"> 

は、XSLTのどこにその名前空間を使用して問題はないはずですので、あなたの<img>タグは、これがこの(urlであることに注意してくださいになりますあなたが唯一の交響曲でテンプレートを変更することが許可されるに制限場合は、実際に、あまりにもテンプレート自体の名前空間を宣言することができることをあなたがそれに応じ@接頭辞を使用する必要があるので、属性、)

<img class="border" src="{media:thumbnail/@url}" alt="Instagram" /> 

注意。したがって、テンプレートを次のように書くことができます:

<xsl:template match="/" xmlns:media="http://search.yahoo.com/mrss/"> 
    <section> 
     <xsl:for-each select="rss/channel/item[position() &lt; 5]"> 
      <div class="one-quarter left"> 
       <img class="border" src="{media:thumbnail/@url}" alt="Instagram" /> 
      </div> 
     </xsl:for-each> 
    </section> 
</xsl:template> 
関連する問題