Объединить повторяющиеся теги с использованием XSL - PullRequest
4 голосов
/ 30 ноября 2011

У меня странно отформатированный документ XML, в котором есть несколько повторяющихся тегов; но мне нужно обработать эти данные с помощью инструмента, который не поддерживает повторяющиеся теги.

Таким образом, мне нужен способ объединения данных в повторяющихся тегах.

Мой первоначальный документ выглядит следующим образом:

<root>
    <irrelevantTag1>irrelevantData1</irrelevantTag1>
    <irrelevantTag2>irrelevantData2</irrelevantTag2>
    <irrelevantTag3>
        <irrelevantTag4>irrelevantData4</irrelevantTag4>
        <keyword>one</keyword>
        <keyword>two</keyword>
    </irrelevantTag3>
    <irrelevantTag5>irrelevantData5</irrelevantTag5>
</root>

Мне нужна таблица стилей, чтобы объединить значения с двумя тегами «ключевого слова» и создать один тег ключевого слова, как показано в следующем выводе:

<root>
    <irrelevantTag1>irrelevantData1</irrelevantTag1>
    <irrelevantTag2>irrelevantData2</irrelevantTag2>
    <irrelevantTag3>
        <irrelevantTag4>irrelevantData4</irrelevantTag4>
        <keyword>one,two</keyword>
    </irrelevantTag3>
    <irrelevantTag5>irrelevantData5</irrelevantTag5>
</root>

1 Ответ

4 голосов
/ 30 ноября 2011

Эти два шаблона должны сделать свое дело:

<xsl:template match="keyword[1]">
   <keyword>
      <xsl:for-each select="../keyword">
         <xsl:if test=". != ../keyword[1]">,</xsl:if>
         <xsl:value-of select="."/>
      </xsl:for-each>
   </keyword>
</xsl:template>
<xsl:template match="keyword"/>

Используйте apply-шаблоны для соответствия родительскому элементу или просто подключите их к преобразованию идентичности.

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