powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / XSL преобразование
2 сообщений из 2, страница 1 из 1
XSL преобразование
    #39396488
Borisk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Стоит задача преобразовать XML из одной структуры в другую. Вроде бы простейшее преобразование (объединение нескольких полей в одно), но, т.к. плохо знаю XSL, уже сломал всю голову...
Может, кто подскажет? Спасибо.

Исходный XML:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Dictionary>
  <Dict>
    <NAIM>BAHAMAS</NAIM>
    <KODT11>1</KODT11>
    <KODT12>2</KODT12>
    <KODT13>3</KODT13>
    <KODT14>4</KODT14>
    <NUMBEGDOC>555</NUMBEGDOC>
  </DictStran>
</DictionaryDictStran>


Что надо получить:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<Dictionary>
  <Dict>
    <NAIM>BAHAMAS</NAIM>
    <KODT>1234</KODT>
    <NUMBEGDOC>555</NUMBEGDOC>
  </DictStran>
</DictionaryDictStran> 



Что удалось придумать (но это не то - match не ищет по маске "KODT"...):
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?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>
...
Рейтинг: 0 / 0
XSL преобразование
    #39400404
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Borisk,

Это поправить соотвествие маски ( проверить )
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?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="*[starts-with(name(.), 'KODT')]">
    <KODT>
      <xsl:apply-templates/>
    </KODT>
  </xsl:template>
  <xsl:template match="NUMBEGDOC">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>



Но тогда он нагенерирует KODT для каждого значения
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / XSL преобразование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]