Как вставить XML в другой файл XML с помощью XSLT?

Я посмотрел на эту ветку, чтобы узнать, как вставить XML в XML с помощью XSLT Вставить узел XML в определенную позицию существующего документа.

Но у меня есть проблема, так как мне нужно вставить XML между двумя большими дочерними узлами. Например я хочу вставить <s>...</s> между <r>...</r> а также <t>...</t> в этом файле

<root>
  <child1>
    <a>...</a>
    <r>...</r>
    <t>...</t>
    <z>...</z>
  </child1>
</root>

создать этот файл

<root>
  <child1>
    <a>...</a>
    <r>...</r>
    <s>...</s>
    <t>...</t>
    <z>...</z>
  </child1>
</root>

Спасибо за вашу помощь.

1 ответ

Стандартное "преобразование идентичности" плюс один шаблон для соответствия элементу <r> и вставить <s>...</s> впоследствии:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
  <xsl:output method="xml" indent="yes"/>
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="r">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
    <s>...</s>
  </xsl:template>
</xsl:stylesheet>
Другие вопросы по тегам