Как разбить древовидную структуру XML-документа на желаемый? - PullRequest
2 голосов
/ 14 декабря 2009

Для меня было большой проблемой написать код XSLT, чтобы получить желаемый результат ..

Вот мой XML-ввод .., который я тестирую на ..

<aaa id="1">
  <bbb id="2">text1</bbb>
  <ccc>text2</ccc>
  <ddd id="3">
    <eee att="4d">text3</eee>
    <fff>
      <ggg att="3d">
        <yyy>text4</yyy>
        <iii attr="jj"/>
      </ggg>
    </fff>
    <sss>
      <ttt info="Y">
        <nnn delete="N">
          <mmm>text5</mmm>
        </nnn>
      </ttt>
    </sss>
  </ddd>
</aaa>

Желаемый результат:

<root>
  <aaa id="1"/>
  <bbb id="2">text1</bbb>
  <ccc>text2</ccc>
  <ddd id="3"/>
  <eee att="4d">text3</eee>
  <fff/>
  <ggg att="3d"/>
  <yyy>text4</yyy>
  <iii attr="jj"/>
  <sss/>
  <ttt info="Y"/>
  <nnn delete="N"/>
  <mmm>text5</mmm>
</root>

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

1 Ответ

5 голосов
/ 14 декабря 2009

Как то так?

<xsl:template match="/">
  <root>
    <xsl:apply-templates select="*"/>
  </root>
</xsl:template>
<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*|text()"/>
  </xsl:copy>
  <xsl:apply-templates select="*"/>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...