xsl xml анализ, преобразование, атрибут - PullRequest
0 голосов
/ 25 ноября 2011

это мой xml файл. я хочу использовать xslt для переноса их в браузер с доступной информацией

<artist rank="1">
<name>Dream Theater</name>
<playcount>1438</playcount>
<mbid>28503ab7-8bf2-4666-a7bd-2644bfc7cb1d</mbid>
<url>http://www.last.fm/music/Dream+Theater</url>
<streamable>1</streamable>
<image size="small">http://userserve-ak.last.fm/serve/34/5535004.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64/5535004.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/5535004.jpg</image>
</artist>

<artist rank="2">
<name>Miles Davis</name>
<playcount>748</playcount>
<mbid>561d854a-6a28-4aa7-8c99-323e6ce46c2a</mbid>
<url>http://www.last.fm/music/Miles+Davis</url>
<streamable>1</streamable>
<image size="small">http://userserve-ak.last.fm/serve/34/4971157.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64/4971157.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/4971157.jpg</image>
</artist>

<artist rank="3">
<name>Dire Straits</name>
<playcount>732</playcount>
<mbid>614e3804-7d34-41ba-857f-811bad7c2b7a</mbid>
<url>http://www.last.fm/music/Dire+Straits</url>
<streamable>1</streamable>
<image size="small">http://userserve-ak.last.fm/serve/34/135149.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64/135149.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/135149.jpg</image>
</artist>

и вот мое решение в моем xsl-файле:

  <td><xsl:value-of select="image"/></td>
  <td><xsl:value-of select="image"/></td>
  <td><xsl:value-of select="image"/></td>

но, как вы можете видеть, художник имеет ранг 1,2,3 ... если я сделаю это как value-of select = "image" ... он может получить только 1-е изображение, прочитанное из файла XML ... так как мне перенести каждого художника в ранг1,2,3 в правильный xsl?

1 Ответ

1 голос
/ 25 ноября 2011

Вам нужно добавить <xsl:for-each select='image'>, чтобы получить каждое изображение, иначе вы просто продолжите получать первый матч.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />

<xsl:template match="/">
<table>
<xsl:for-each select='/xml/artist'>
<xsl:sort order="ascending" data-type="number" select="@rank"/>
<tr>
    <td><xsl:value-of select='name'/></td>
    <xsl:for-each select='image'>
        <td><xsl:value-of select='.'/></td>
    </xsl:for-each>
</tr>
</xsl:for-each>
</table>

</xsl:template>

</xsl:stylesheet>

Производит

<table>
<tr>
<td>Dream Theater</td>
<td>http://userserve-ak.last.fm/serve/34/5535004.jpg</td>
<td>http://userserve-ak.last.fm/serve/64/5535004.jpg</td>
<td>http://userserve-ak.last.fm/serve/126/5535004.jpg</td>
</tr>
<tr>
<td>Miles Davis</td>
<td>http://userserve-ak.last.fm/serve/34/4971157.jpg</td>
<td>http://userserve-ak.last.fm/serve/64/4971157.jpg</td>
<td>http://userserve-ak.last.fm/serve/126/4971157.jpg</td>
</tr>
<tr>
<td>Dire Straits</td>
<td>http://userserve-ak.last.fm/serve/34/135149.jpg</td>
<td>http://userserve-ak.last.fm/serve/64/135149.jpg</td>
<td>http://userserve-ak.last.fm/serve/126/135149.jpg</td>
</tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...