XSL Как создать строку динамической таблицы - PullRequest
1 голос
/ 26 января 2012

Мой xml выглядит так

<catalog>
<cd>
 <title>Empire Burlesque</title>
 <artist>Bob Dylan</artist>
 <country>USA</country>
 <company>Columbia</company>
 <price>10.90</price>
 <year>1985</year>
</cd>
<cd>
 <title>Hide your heart</title>
 <artist>Bonnie Tyler</artist>
 <country>UK</country>
 <company>CBS Records</company>
 <price>9.90</price>
 <year>1988</year>
</cd>
</catalog>

что я хочу достичь - это html-таблица, в которой число строк является динамическим, например:

таблица должна выглядеть так:

TABLE HEADER
<tr>
 <td>Title</td>
 <td>Empire Burlesque</td>
</tr>
<tr>
 <td>Artist</td>
 <td>Bob Dylan</td>
</tr>
<tr>
 <td>country</td>
 <td>USA</td>
</tr>

Продолжается Для всех узлов, доступных для кд.

Все, что я хочу, чтобы иметь возможность зацикливаться на количестве узлов, доступных в <cd>, и генерировать отдельные <tr> для каждого узла в выводе html. Так что мне не нужно использовать <xsl:value-of select> с определенным именем узла xml.

Может ли кто-нибудь помочь мне понять основы этой части? Спасибо.

1 Ответ

0 голосов
/ 26 января 2012
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="catalog">
    <table>
      <xsl:apply-templates select="cd/*"/>
    </table>
  </xsl:template>

  <xsl:template match="cd/*">
    <tr>
      <td>
        <xsl:value-of select="name()"/>
      </td>
      <td>
        <xsl:value-of select="."/>
      </td>
    </tr>
  </xsl:template>

</xsl:stylesheet>

Выход:

<table>
  <tr>
    <td>title</td>
    <td>Empire Burlesque</td>
  </tr>
  <tr>
    <td>artist</td>
    <td>Bob Dylan</td>
  </tr>
  <tr>
    <td>country</td>
    <td>USA</td>
  </tr>
  <tr>
    <td>company</td>
    <td>Columbia</td>
  </tr>
  <tr>
    <td>price</td>
    <td>10.90</td>
  </tr>
  <tr>
    <td>year</td>
    <td>1985</td>
  </tr>
  <tr>
    <td>title</td>
    <td>Hide your heart</td>
  </tr>
  <tr>
    <td>artist</td>
    <td>Bonnie Tyler</td>
  </tr>
  <tr>
    <td>country</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>company</td>
    <td>CBS Records</td>
  </tr>
  <tr>
    <td>price</td>
    <td>9.90</td>
  </tr>
  <tr>
    <td>year</td>
    <td>1988</td>
  </tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...