как сделать родительский тег с помощью вложенного тега - PullRequest
2 голосов
/ 14 июня 2019

У меня есть XML-файл, который выглядит следующим образом:

<SNS>
<SN>aaaa</SN>
<SN>bbbb</SN>
<LN>cccc</LN>
<SN>dddd</SN>
<SN>eeee</SN>
<LN>ffff</LN>
</SNS>

Требуемый вывод:

<SN>aaaa</SN>
<LN>cccc</LN>
<SN>bbbb</SN>
<LN>cccc</LN>
<SN>dddd</SN>
<LN>ffff</LN>
<SN>eeee</SN>
<LN>ffff</LN>

Как добавить каждый тег <SN> с <LN>?

1 Ответ

2 голосов
/ 14 июня 2019

Просто обработайте все SN элементы и в их шаблон скопируйте следующий брат LN:

  <xsl:template match="SNS">
      <xsl:apply-templates select="SN"/>
  </xsl:template>  

  <xsl:template match="SN">
      <xsl:copy-of select="., following-sibling::LN[1]"/>
  </xsl:template>

https://xsltfiddle.liberty -development.net / pPzifq2

В XSLT 3 вы также можете просто обработать каждый SN и его брат LN и протолкнуть их через преобразование идентичности:

  <xsl:mode on-no-match="shallow-copy"/>

  <xsl:template match="SNS">
      <xsl:apply-templates select="SN!(., following-sibling::LN[1])"/>
  </xsl:template>

https://xsltfiddle.liberty -development.net / pPzifq2 / 1

...