XSLT: как сделать GROUP_BY?

Это пример XML, над которым я работаю:

<NewDataSet>
  <Table>
    <content_id>ID_001</content_id>
    <record_id>Value_1</record_id>
  </Table>
  <Table>
    <content_id>ID_001</content_id>
    <record_id>Value_2</record_id>
  </Table>
  <Table>
    <content_id>ID_002</content_id>
    <record_id>Value_3</record_id>
  </Table>
</NewDataSet>

Я хотел бы преобразовать это в

<Results>
    <Record>
        <id>ID_001
        </id>
        <item>Value_1
        </item>
        <item>Value_2
        </item>
    </Record>
    <Record>
        <id>ID_002
        </id>
        <item>Value_3
        </item>
    </Record>
</Result>

Проблема в том, что я не могу выполнить GROUP BY <content_id> в XSL, чтобы получить результат.

Могу ли я получить какую-либо помощь в этом?


person Swayam    schedule 12.04.2017    source источник
comment
Найдите тег muenchian-grouping, который я добавил, чтобы найти решение вашей проблемы. .   -  person zx485    schedule 12.04.2017


Ответы (1)


Вы не указали версию XSLT, но если вы можете использовать версию 2.0, используйте for-each-group.

См., например. http://www.w3.org/TR/xslt20/#element-for-each-group (или бесчисленное количество примеров в Интернете, даже на трассировке стека).

Чтобы получить правильную группировку, используйте атрибут group-by="Table/content_id".

person Valdi_Bo    schedule 12.04.2017
comment
Спасибо ! это если для 1.0. - person Swayam; 12.04.2017
comment
У меня есть предложение group-by. Это помогло бы, но как иметь два отдельных элемента для ‹record_id›. то есть ‹Record› ‹id›ID_001 ‹/id› ‹item›Value_1 ‹/item› ‹item›Value_2 ‹/item› ‹/Record› group-by будет иметь эти два значения value_1 и value_2 вместе. Я бы хотел, чтобы они были отдельными элементами, сгруппированными под content_id - person Swayam; 12.04.2017