Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > XSL преобразование (XML->XML)


Автор: Borisk13 2.2.2017, 15:38
Добрый день. Стоит задача преобразовать XML из одной структуры в другую. Вроде бы простейшее преобразование (объединение нескольких полей в одно), но, т.к. плохо знаю XSL, уже сломал всю голову...
Может, кто подскажет? Спасибо.

Исходный XML:
Код

<Dictionary>
  <Dict>
    <NAIM>BAHAMAS</NAIM>
    <KODT11>1</KODT11>
    <KODT12>2</KODT12>
    <KODT13>3</KODT13>
    <KODT14>4</KODT14>
    <NUMBEGDOC>555</NUMBEGDOC>
  </DictStran>
</DictionaryDictStran>


Что надо получить:
Код

<Dictionary>
  <Dict>
    <NAIM>BAHAMAS</NAIM>
    <KODT>1234</KODT>
    <NUMBEGDOC>555</NUMBEGDOC>
  </DictStran>
</DictionaryDictStran> 


Что удалось придумать (но это не то - match не ищет по маске "KODT"...):
Код

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:strip-space elements="*"/>
 <xsl:output method="xml" indent="yes"/>
 <xsl:template match="/">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="Dictionary">
  <xsl:copy>
   <xsl:apply-templates/>
  </xsl:copy>
 </xsl:template>
 <xsl:template match="Dict">
  <xsl:copy>
   <xsl:apply-templates/>
  </xsl:copy>
 </xsl:template>
  <xsl:template match="NAIM">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="KODT">
    <KODT>
      <xsl:apply-templates/>
    </KODT>
  </xsl:template>
  <xsl:template match="NUMBEGDOC">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)