Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите составить XSLT преобразование / 5 сообщений из 5, страница 1 из 1
22.01.2010, 09:43
    #36424343
Не важно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSLT преобразование
Здравствуйте.
есть 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
23.01.2010, 01:45
    #36426371
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSLT преобразование
Код: 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
23.01.2010, 15:09
    #36426675
Не важно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSLT преобразование
Спасибо большое !
...
Рейтинг: 0 / 0
26.01.2010, 08:09
    #36430507
Не важно
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSLT преобразование
Получил образец данных - он отличается от ранее предоставленного.
Подскажите, пожалуйста, как переделать такое
Код: 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
26.01.2010, 22:44
    #36432465
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSLT преобразование
Так и не понял логики преобразования.

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

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


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