Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Интересный xml / 3 сообщений из 3, страница 1 из 1
06.02.2007, 16:04
    #34309833
NNika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный 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.
- <doroga>
- <Nod nod="Дорога">
- <Region region="По региону">
- <Station station="Все станции" id="">
    <vag_m> 75026 </vag_m> 
    <tn_m> 4571402 . 84 </tn_m> 
  </Station>
 </Region>
 </Nod>
- <Nod nod="КАРТЛ">
- <Region region="По региону">
- <Station station="Все станции" id="8005">
   <vag_m> 17184 </vag_m> 
   <tn_m> 1068812 . 61 </tn_m> 
   </Station>
  </Region>
- <Region region="КАРТЛ">
- <Station station="Все станции" id="800500">
    <vag_m> 17184 </vag_m> 
    <tn_m> 1068812 . 61 </tn_m> 
  </Station>
  </Region>
</doroga>
Нужно получить вот такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
- <doroga>
      <vag_m> 75026 </vag_m> 
       <tn_m> 4571402 . 84 </tn_m> 
    -<Nod nod="КАРТЛ">
          <vag_m> 17184 </vag_m> 
         <tn_m> 1068812 . 61 </tn_m> 
      -<Region region="КАРТЛ">
            <vag_m> 17184 </vag_m> 
            <tn_m> 1068812 . 61 </tn_m> 
           - <Station station="АЛЬМУХАМЕДОВО" id="818209">
               <vag_m> 3 </vag_m> 
               <tn_m> 187 . 60 </tn_m> 
            </Station>
       </Region>
      </Nod>
</doroga>
Использую вот такой sql-запрос:
Код: 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.
isnull(cast([[Станция погр]].[НОД погр]].[MEMBER_CAPTION]]] as varchar), 'Дорога') as nod,
isnull(cast([[Станция погр]].[Регион погр]].[MEMBER_CAPTION]]] as varchar),' По региону') as region,
isnull (cast([[Станция погр]].[Стан погр]].[MEMBER_CAPTION]]] as varchar), ' Все станции') as station,
 [[Measures]].[id]]] as id_st,
 [[Measures]].[Вагоны нрст]]] as vag_m,
cast([[Measures]].[Вес нрст]]] as decimal( 10 ,  2 )) as tn_m,
into #a
from openrowset('MSOLAP.2','Provider=MSOLAP.2; Persist Security Info=True;User ID=sa;Data Source=localhost; Initial Catalog=KSARM;Client Cache Size=25;Auto Synch Period=10000' , 
'with member [Measures].id as '' [Станция погр].Properties("key")''
select {id,[Measures].[Вагоны нрст], [Measures].[Вес нрст], [Measures].[Вагоны], [Measures].[Вес_т], [Measures].[Вагоны сред], [Measures].[Вес сред],
[Measures].[План ваг], [Measures].[План тонн], [Measures].[Заказ ваг], [Measures].[Заказ тн]} on columns,
Filter([Станция погр].AllMembers, [Measures].[Вагоны нрст]>0) on rows
from [Погрузка]
where [Дата].[Все Даты].[2006].&[10].[19]') 

select
  1  as Tag,
 Null as Parent,
  nod as [Nod! 1 !nod],  
 null as [Region! 2 !region],
 null as [Station! 3 !station],
  null as [Station! 3 !vag_m!element],
 null as [Station! 3 !tn_m!element],
 from #a

union 
select
 2 ,
 1 ,
nod,
region,
null,null,null
from #a

union
select
 3 , 2 ,
nod, region,
station,vag_m,tn_m
from #a
order by  nod,[Region! 2 !region]
for xml explicit
drop table #a
Подскажите, как мне получить второй вид
...
Рейтинг: 0 / 0
07.02.2007, 09:31
    #34311215
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный xml
тебе именно на sql нужно или на xslt подойдет?
...
Рейтинг: 0 / 0
07.02.2007, 12:42
    #34312207
NNika
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный xml
Мне нужен был sql.
Но проблему уже решили. Переписали запрос таким образом, чтобы не использовать оператор union, который портил порядок следования xml-тэгов, т.к. данные, кторые мы получали из olap-сервера были упорядочены как надо.Мы вручную проставили значения Tag и Parent, для каждого уровня вложенности и применили for xml explicit и xml построился так как надо.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Интересный xml / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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