Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите трансформировать 2РДФЛ / 13 сообщений из 13, страница 1 из 1
09.09.2008, 16:06
    #35530131
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
Здравствуйте. Помогите трансформировать XML файл в XML.
Исходные данные выглядят таким образом:
Код: 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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
<Справка>
      <ОбщСвИЧ>
         <ГодДох> 2007 </ГодДох>
         <НомСпр> 1 </НомСпр>
         <ДатаСпр> 27 . 03 . 2008 </ДатаСпр>
         <ИФНСНА>****</ИФНСНА>
      </ОбщСвИЧ>
      <ИстДох>
         <СвНАЮЛ>
            <ИННЮЛ>**************</ИННЮЛ>
            <КПП>***************</КПП>
            <НаимОрг>ООО Рога и копыта</НаимОрг>
            <ОКАТО>***********</ОКАТО>
            <Телефон>**********</Телефон>
         </СвНАЮЛ>
      </ИстДох>
      <ПолучДох>
         <ИННФЛ>**************</ИННФЛ>
         <ФИО>
            <Фамилия>Иванов</Фамилия>
            <Имя>Иван</Имя>
            <Отчество>Иванович</Отчество>
         </ФИО>
         <Статус> 1 </Статус>
         <ДатаРожд> 09 . 10 . 1980 </ДатаРожд>
         <Гражданство> 643 </Гражданство>
         <УдЛичн>
            <КодУдЛичн>********</КодУдЛичн>
            <СерНомДок>***********</СерНомДок>
         </УдЛичн>
         <АдрМЖРФ>
            <Индекс>**********</Индекс>
            <КодРегион>********</КодРегион>
            <Район>*********р-н</Район>
            <НасПункт>*************рп</НасПункт>
            <Улица>************</Улица>
            <Дом>*******</Дом>
         </АдрМЖРФ>
      </ПолучДох>
      <СвДохСтав>
         <Ставка> 13 </Ставка>
         <ДохВыч>
            <НомМес> 01 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 22562 . 10 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 02 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 15567 . 40 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 03 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 36982 . 30 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 04 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 23494 . 00 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 05 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 24205 . 80 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 06 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 34062 . 80 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 07 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 20854 . 60 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 07 </НомМес>
            <КодДоход> 2012 </КодДоход>
            <СумДоход> 23499 . 28 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 08 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 23357 . 50 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 08 </НомМес>
            <КодДоход> 2760 </КодДоход>
            <СумДоход> 250 . 00 </СумДоход>
            <КодВычет> 503 </КодВычет>
            <СумВычет> 250 . 00 </СумВычет>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 09 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 46402 . 90 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 10 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 25543 . 70 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 11 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 41135 . 60 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 12 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 103941 . 80 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 12 </НомМес>
            <КодДоход> 2760 </КодДоход>
            <СумДоход> 250 . 00 </СумДоход>
            <КодВычет> 503 </КодВычет>
            <СумВычет> 250 . 00 </СумВычет>
         </ДохВыч>
         <СГДНалПер>
            <СГДСумм> 442109 . 78 </СГДСумм>
            <ОблСумм> 441609 . 78 </ОблСумм>
            <НИОблСумм> 57409 </НИОблСумм>
            <НУОблСумм> 57409 </НУОблСумм>
            <ВозврСуммПЛ> 0 </ВозврСуммПЛ>
            <ЗачСуммПЛ> 0 </ЗачСуммПЛ>
            <УдСуммПЛ> 0 </УдСуммПЛ>
            <ДолгНП> 0 </ДолгНП>
            <ДолгНА> 0 </ДолгНА>
            <ВзыскИФНС> 0 </ВзыскИФНС>
         </СГДНалПер>
      </СвДохСтав>
   </Справка>

Необходимо получить такую структуру.
Код: 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.
<Справка>
            <Фамилия>Иванов</Фамилия>
            <Имя>Иван</Имя>
            <Отчество>Иванович</Отчество>
         <ДохВыч>
            <НомМес> 01 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 22562 . 10 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 02 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 15567 . 40 </СумДоход>
         </ДохВыч>
        .....
         <ДохВыч>
            <НомМес> 12 </НомМес>
            <КодДоход> 2000 </КодДоход>
            <СумДоход> 103941 . 80 </СумДоход>
         </ДохВыч>
         <ДохВыч>
            <НомМес> 12 </НомМес>
            <КодДоход> 2760 </КодДоход>
            <СумДоход> 250 . 00 </СумДоход>
            <КодВычет> 503 </КодВычет>
            <СумВычет> 250 . 00 </СумВычет>
         </ДохВыч>
   </Справка>
В конце, например, видно что месяц 12 повторяется 2 раза (ну или более раз), то желательно это все сгруппировать и суммировать.
Подскажите пожалуйста получится ли у меня это сделать при помощи XSLT. Если да, то подскажите как, или ссылку где можно почитать.
...
Рейтинг: 0 / 0
09.09.2008, 16:15
    #35530159
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
...
Рейтинг: 0 / 0
09.09.2008, 23:33
    #35530921
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
<xsl:sort> + функция sum()

С уважением, Vasilisk
...
Рейтинг: 0 / 0
10.09.2008, 08:19
    #35531073
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
_Vasilisk_<xsl:sort> + функция sum()
_Vasilisk_ А чуток подробнее можно? Как указать что нужно конкретные теги и их содержимое оставить? XML для меня совсем новое...
...
Рейтинг: 0 / 0
10.09.2008, 12:19
    #35531606
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
я мы книжки можем посоветовать.
...
Рейтинг: 0 / 0
10.09.2008, 23:00
    #35532990
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
shadyXML для меня совсем новое...
Как сказал SuSa на соседнем форуме - боян.

В MSDN все написано
...
Рейтинг: 0 / 0
11.09.2008, 08:46
    #35533229
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
_Vasilisk_Как сказал SuSa на соседнем форуме - боян.
В MSDN все написано
Знаешь, для кого боян, для кого не боян. В MSDN отправить и я могу. Хотя я бы сначала отправил
на http://www.w3.org На котором в свою очередь можно найти и ссылки на русскоязычные статьи (переводы официальных статей). Поэтому если я спрашиваю, это не означает что я даже нигде не искал никакой информации по XML и если остались неясности, о которых я спросил, значит так и есть.
Например есть xml файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="XslTest.xsl"?>

<root>
    <object>
	<LastName>Петров</LastName>
    </object>
    <object>
	<LastName>Сидоров</LastName>
    </object>
</root>
Применяю XSL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method = "xml"/>
<xsl:template match="/">
<xsl:for-each select="/root/object">
<xsl:value-of select="LastName"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
А если < LastName > заменить на < Фамилия >, то я получаю сообщение об ошибке
Код: plaintext
1.
2.
3.
В текстовом комментарии обнаружен недопустимый знак. Ошибка при обработке ресурса ''file:///D:/temp/XSL/XslTest.xsl''. Стр...

<xsl:value-of select="

Так что не надо умничать и отправлять куда-то, если не знаешь как сделать - промолчи, знаешь скажи.
А про MSDN - там написано может и все, но чтобы найти что-то действительно нужное или хотя бы полезное, нужно убить кучу времени и не факт, что найдешь.
...
Рейтинг: 0 / 0
11.09.2008, 12:11
    #35533692
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
А вот это уже сааафсем другой разговор. У тебя xsl в неправильной кодировке.
...
Рейтинг: 0 / 0
11.09.2008, 12:43
    #35533803
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
Добавил
Код: plaintext
encoding="windows-1251"
- заработало. Про параметр encoding в xsl я почему-то забыл.
...
Рейтинг: 0 / 0
11.09.2008, 12:58
    #35533862
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
А можно как-нить теперь получить (или сгенерировать с помощью xsl трансформации) XML файл такого содержания?
Код: plaintext
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251"?>
<Фамилии>
<Фамилия>Петров</Фамилия>
<Фамилия>Сидоров</Фамилия>
</Фамилии>
...
Рейтинг: 0 / 0
11.09.2008, 13:04
    #35533873
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
любые теги можно вставлять
Код: plaintext
<Фамилия><xsl:value-of select="LastName"/></Фамилия>
...
Рейтинг: 0 / 0
11.09.2008, 13:29
    #35533954
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
А где указать что вывод я хочу получить не в Internet Explorer, а в файл NewXSLTest.XML
...
Рейтинг: 0 / 0
11.09.2008, 13:47
    #35534025
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите трансформировать 2РДФЛ
например, тут
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите трансформировать 2РДФЛ / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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