Я пытаюсь использовать API Bing Image, но не могу заставить его работать. Я пытаюсь преобразовать результат, но преобразование не возвращает ничего полезного. Я думаю, это потому, что я делаю что-то не так с пространствами имен, потому что я нахожу это ужасно запутанным во всех языках, связанных с XML ...
вот пример того, что я получаю от Bing:
<?xml version="1.0" encoding="utf-8" ?> <?pageview_candidate?> <SearchResponse xmlns="http://schemas.microsoft.com/LiveSearch/2008/04/XML/element" Version="2.2"> <Query> <SearchTerms>natalie portman</SearchTerms> </Query> <mms:Image xmlns:mms="http://schemas.microsoft.com/LiveSearch/2008/04/XML/multimedia"> <mms:Total>644000</mms:Total> <mms:Offset>0</mms:Offset> <mms:Results> <mms:ImageResult> <mms:Title>Natalie Portman/natalie-portman-83</mms:Title> <mms:MediaUrl>http://www.bestidol.pl/natalieportman/slides/natalie-portman-83.jpg</mms:MediaUrl> <mms:Url>http://www.bestidol.pl/natalieportman/slides/natalie-portman-83.php</mms:Url><mms:DisplayUrl>http://www.bestidol.pl/natalieportman/slides/natalie-portman-83.php</mms:DisplayUrl> <mms:Width>1024</mms:Width> <mms:Height>768</mms:Height> <mms:FileSize>95173</mms:FileSize> <mms:ContentType>image/jpeg</mms:ContentType> <mms:Thumbnail> <mms:Url>http://ts1.mm.bing.net/images/thumbnail.aspx?q=809383506038& amp;id=b829ae4c6df8866b6a07325bedca4bbd</mms:Url> <mms:ContentType>image/jpeg</mms:ContentType> <mms:Width>160</mms:Width> <mms:Height>120</mms:Height> <mms:FileSize>3838</mms:FileSize> </mms:Thumbnail></mms:ImageResult> <mms:ImageResult> ... other ImageResults and closing tags.
вот мое текущее xslt преобразование:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mms="http://schemas.microsoft.com/LiveSearch/2008/04/XML/multimedia"> <xsl:template match="/"> <list> <xsl:for-each select="//mms:ImageResult" > <element> <image> <url><xsl:value-of select="/mms:MediaUrl" /></url> <width><xsl:value-of select="/mms:Width" /></width> <height><xsl:value-of select="/mms:Height" /></height> </image> </element> </xsl:for-each> </list> </xsl:template> </xsl:stylesheet>
кто-нибудь видит мою ошибку? потому что это преобразование возвращает меня:
<list xmlns:mms="http://schemas.microsoft.com/LiveSearch/2008/04/XML/multimedia"> <element> <image> <url/> <width/> <height/> </image> </element> ... </list>
Должен быть ...
<url><xsl:value-of select="mms:MediaUrl" /></url> <width><xsl:value-of select="mms:Width" /></width> <height><xsl:value-of select="mms:Height" /></height>