Помогите отобразить данные XML в таблице - PullRequest
0 голосов
/ 10 июня 2010

Ниже приводится выдержка из набора данных XML:

<instance>
    <ID>1</ID>
    <start>5.8633333333</start>
    <end>29.8216666667</end>
    <code>Player 1</code>
</instance>
<instance>
    <ID>2</ID>
    <start>28.4566666667</start>
    <end>51.1450000000</end>
    <code>Player 2</code>
</instance>
<instance>
    <ID>3</ID>
    <start>49.8383333333</start>
    <end>71.1150000000</end>
    <code>Player 3</code>
</instance>
<instance>
    <ID>4</ID>
    <start>72.9850000000</start>
    <end>95.3766666667</end>
    <code>Player 1</code>
</instance>
<instance>
    <ID>5</ID>
    <start>93.9250000000</start>
    <end>116.6883333333</end>
    <code>Player 2</code>
</instance>

Я хочу отобразить эти данные в таблице, где каждая строка содержит уникальный код (как в Player 1, Player 2 и т. Д.), А также все с этим конкретным кодом. Примерно так:

    <tr><td>Player 1</td><td>ID 1; ID 4</td></tr>
    <tr><td>Player 2</td><td>ID 2; ID 5</td></tr>

Я пытался заставить это работать некоторое время, но безуспешно. Любая помощь будет высоко ценится!

Спасибо! Frank

1 Ответ

0 голосов
/ 10 июня 2010

Я бы использовал что-то вроде этого:

<xsl:for-each-group select="instance" group-by="code/text()">
  <tr>
  <td><xsl:value-of select="current-grouping-key()" /></td>
    <td><xsl:apply-templates select="current-group()" /></td>
  </tr>
</xsl:for-each-group>

Он группирует элементы instance вместе на основе текста в элементе кода.Функция current-grouping-key() возвращает строку, которая группирует вещи, а current-group() возвращает последовательность узлов для этого ключа.Вам все равно придется заполнить бит, чтобы ввести точку с запятой, но это не должно быть слишком сложно.

for-each-group - это конструкция XSLT 2.0, поэтому убедитесь, что вы используете процессор XSLT, которыйпонимает это.Саксонский является отличным примером одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...