powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите составить XSLT преобразование
5 сообщений из 5, страница 1 из 1
Помогите составить XSLT преобразование
    #36424343
Не важно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
есть XML такого вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <MyNode>
        <ID> 1 </ID>
        <Name>Pole1</Name>
        <Value>Value1</Value>
    </MyNode>
    <MyNode>
        <ID> 1 </ID>
        <Name>Pole2</Name>
        <Value>Value2</Value>
    </MyNode>
    <MyNode>
        <ID> 2 </ID>
        <Name>Pole3</Name>
        <Value>Value3</Value>
    </MyNode>
</ROOT>

В такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <Group ID="1">
        <Pole1>Value1</Pole1>
        <Pole2>Value2</Pole2>
    </Group>
    <Group ID="2">
        <Pole3>Value3</Pole3>
    </Group>
</ROOT>
...
Рейтинг: 0 / 0
Помогите составить XSLT преобразование
    #36426371
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
  <xsl:template match="/ROOT">
    <ROOT>
      <xsl:apply-templates select="*"/>
    </ROOT>
  </xsl:template>

  <xsl:template match="MyNode">
    <xsl:variable name="id" select="ID"/>
    <xsl:if test="not(preceding-sibling::MyNode[ID = $id])">
      <Group ID="{$id}">
        <xsl:apply-templates select="../MyNode[ID = $id]" mode="show"/>
      </Group>
    </xsl:if>
  </xsl:template>

  <xsl:template match="MyNode" mode="show">
    <xsl:element name="{Name}">
      <xsl:value-of select="Value"/>
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Помогите составить XSLT преобразование
    #36426675
Не важно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое !
...
Рейтинг: 0 / 0
Помогите составить XSLT преобразование
    #36430507
Не важно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получил образец данных - он отличается от ранее предоставленного.
Подскажите, пожалуйста, как переделать такое
Код: plaintext
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<ROOT>
    <MyNODE>
        <GroupNum> 1 </GroupNum>
        <ID> 4 </ID>
        <ColumnName>TA_Code</ColumnName>
        <Value/>
    </MyNODE>
    <MyNODE>
        <GroupNum> 1 </GroupNum>
        <ID> 4 </ID>
        <ColumnName>TA_Name</ColumnName>
        <Value>Name1</Value>
    </MyNODE>
    <MyNODE>
        <GroupNum> 1 </GroupNum>
        <ID> 4 </ID>
        <ColumnName>TA_Info</ColumnName>
        <Value>Name2</Value>
    </MyNODE>
    <MyNODE>
        <GroupNum> 1 </GroupNum>
        <ID> 6 </ID>
        <ColumnName>TA_Code</ColumnName>
        <Value> 5675 </Value>
    </MyNODE>
    <MyNODE>
        <GroupNum> 1 </GroupNum>
        <ID> 6 </ID>
        <ColumnName>TA_Name</ColumnName>
        <Value>Name3</Value>
    </MyNODE>
    <MyNODE>
        <GroupNum> 9 </GroupNum>
        <ID> 18 </ID>
        <ColumnName>CName</ColumnName>
        <Value> 567567 </Value>
    </MyNODE>
    <MyNODE>
        <GroupNum> 9 </GroupNum>
        <ID> 18 </ID>
        <ColumnName>CType</ColumnName>
        <Value>Name4</Value>
    </MyNODE>
</ROOT>
В это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <Group_TA>
        <TA_Elem>
            <TA_Code/>
            <TA_Name>Name1</TA_Name>
            <TA_Info>Name2</TA_Info>
        </TA_Elem>
        <TA_Elem>
            <TA_Code> 5675 </TA_Code>
            <TA_Name>Name3</TA_Name>
        </TA_Elem>
    </Group_TA>
    <Group_CT>
        <CT_Elem>
            <CName> 567567 </CName>
            <CType>Name4</CType>
        </CT_Elem>
    </Group_CT>
</ROOT>

XML отличается от написанного в первом посте тем, что помимо принадлежности к группе в узле появился признак принадлежности к элементу в этой группе.
...
Рейтинг: 0 / 0
Помогите составить XSLT преобразование
    #36432465
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и не понял логики преобразования.

P.S. Не кажется ли Вам, что уже пора почитать книжки?

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


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