powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Oracle BIP XSLT
4 сообщений из 4, страница 1 из 1
Oracle BIP XSLT
    #39409845
sharkoff_new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день
Никогда не сталкивался с применением XSLT макетов в BI Publisher
Имею такие данные:

Код: 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.
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.
<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Oracle BI Publisher 11.1.1.7.140715 -Dataengine, -->
<DATA_DS><P_DATE_BEGIN>2017-01-01T00:00:00.000+06:00</P_DATE_BEGIN><P_DATE_END>2017-01-01T00:00:00.000+06:00</P_DATE_END>
<G_1>
<CAMPAIGN_ID>5052</CAMPAIGN_ID>
<CAMP_NAME>Cam1</CAMP_NAME>
<G_2>
<ORD>1</ORD>
<CAMPAIGN_ID>5052</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>2</VAL>
<DIALER_STATUS_NAME>Выключен/ вне зоны доступа</DIALER_STATUS_NAME>
<CAMP_NAME>Cam1</CAMP_NAME>
</G_2>
<G_2>
<ORD>2</ORD>
<CAMPAIGN_ID>5052</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>13</VAL>
<DIALER_STATUS_NAME>Попытки звонка прерваны из за нехватки агентов</DIALER_STATUS_NAME>
<CAMP_NAME>Cam1</CAMP_NAME>
</G_2>
<G_2>
<ORD>3</ORD>
<CAMPAIGN_ID>5052</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<CNT>4</CNT>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>4</VAL>
<DIALER_STATUS_NAME>Нет ответа от сети (провайдера)</DIALER_STATUS_NAME>
<CAMP_NAME>Cam1</CAMP_NAME>
<PRC>13.33</PRC>
</G_2>
<G_2>
<ORD>4</ORD>
<CAMPAIGN_ID>5052</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>6</VAL>
<DIALER_STATUS_NAME>Нет сигнала в линии</DIALER_STATUS_NAME>
<CAMP_NAME>Cam1</CAMP_NAME>
</G_2>
<G_2>
<ORD>5</ORD>
<CAMPAIGN_ID>5052</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<CNT>8</CNT>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>8</VAL>
<DIALER_STATUS_NAME>Клиент не поднимает трубку</DIALER_STATUS_NAME>
<CAMP_NAME>Cam1</CAMP_NAME>
<PRC>26.67</PRC>
</G_2>
</G_1>
<G_1>
<CAMPAIGN_ID>5049</CAMPAIGN_ID>
<CAMP_NAME>Cam2</CAMP_NAME>
<G_2>
<ORD>1</ORD>
<CAMPAIGN_ID>5049</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<CNT>25</CNT>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>2</VAL>
<DIALER_STATUS_NAME>Выключен/ вне зоны доступа</DIALER_STATUS_NAME>
<CAMP_NAME>Cam2</CAMP_NAME>
<PRC>18.38</PRC>
</G_2>
<G_2>
<ORD>2</ORD>
<CAMPAIGN_ID>5049</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>13</VAL>
<DIALER_STATUS_NAME>Попытки звонка прерваны из за нехватки агентов</DIALER_STATUS_NAME>
<CAMP_NAME>Cam2</CAMP_NAME>
</G_2>
<G_2>
<ORD>3</ORD>
<CAMPAIGN_ID>5049</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<CNT>23</CNT>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>4</VAL>
<DIALER_STATUS_NAME>Нет ответа от сети (провайдера)</DIALER_STATUS_NAME>
<CAMP_NAME>Cam2</CAMP_NAME>
<PRC>16.91</PRC>
</G_2>
<G_2>
<ORD>4</ORD>
<CAMPAIGN_ID>5049</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>6</VAL>
<DIALER_STATUS_NAME>Нет сигнала в линии</DIALER_STATUS_NAME>
<CAMP_NAME>Cam2</CAMP_NAME>
</G_2>
<G_2>
<ORD>5</ORD>
<CAMPAIGN_ID>5049</CAMPAIGN_ID>
<D_D>2017-01-01T00:00:00.000+06:00</D_D>
<D_D_CHAR>01.01.2017</D_D_CHAR>
<VAL>8</VAL>
<DIALER_STATUS_NAME>Клиент не поднимает трубку</DIALER_STATUS_NAME>
<CAMP_NAME>Cam2</CAMP_NAME>
</G_2>
</G_1>
</DATA_DS>



Сделал template
Код: 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.
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.
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ora="http://www.oracle.com/XSL/Transform/java/" xmlns:xdofo="http://xmlns.oracle.com/oxp/fo/extensions" xmlns:xdoxslt="http://www.oracle.com/XSL/Transform/java/oracle.apps.xdo.template.rtf.XSLTFunctions" xmlns:xdoxliff="urn:oasis:names:tc:xliff:document:1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:msxsl="urn:schemas-microsoft-com:xslt">

 <xsl:template match="/">
  <xsl:processing-instruction name="mso-application">
   <xsl:text>progid="Excel.Sheet"</xsl:text>
  </xsl:processing-instruction>

<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office"
   xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
   xmlns:html="http://www.w3.org/TR/REC-html40">
   <ss:Styles>
    <ss:Style ss:ID="Default" ss:Name="Normal">
     <ss:Font ss:Color="black" ss:Size="10" ss:Bold="1" ss:FontName="Arial"/>
    </ss:Style>
    <ss:Style ss:ID="x1">
     <ss:Font ss:Color="black" ss:Size="10" ss:FontName="Arial"/>
    </ss:Style>
    <ss:Style ss:ID="xdo2">
     <ss:Font  ss:Color="black"  ss:Size="10"  ss:FontName="Arial"/>
     <ss:NumberFormat  Format="$#,##0;[Red]$#,##0"  Bold="0" />
    </ss:Style>
   </ss:Styles>
<!--   <xsl:apply-templates select="DATA_DS"/>-->


<!--   </xsl:template>
   <xsl:template match="DATA_DS">-->
    <xsl:for-each select="/DATA_DS/G_1">
    <Worksheet  Name="{.//CAMP_NAME}">
     <Table x:FullColumns="1" x:FullRows="1">
      <Row>
       <Cell>
        <Data ss:Type="String">col_1_BEGIN</Data>
       </Cell>
       <Cell>
        <Data ss:Type="String">col_2</Data>
       </Cell>
       <Cell>
        <Data ss:Type="String">col_3</Data>
       </Cell>
       <Cell>
        <Data ss:Type="String">col_4</Data>
       </Cell>
       <Cell>
        <Data ss:Type="String">col_5</Data>
       </Cell>
       <Cell>
        <Data ss:Type="String">col_6_END</Data>
       </Cell>
      </Row>
     <xsl:for-each select="/DATA_DS/G_2">
      <Row>
       <Cell ss:StyleID="x1">
        <Data ss:Type="String">
         <xsl:value-of select=".//ORD"/>
        </Data>
       </Cell>
      <Cell ss:StyleID="x1">
       <Data ss:Type="String">
        <xsl:value-of select=".//VAL"/>
       </Data>
      </Cell>
     <Cell ss:StyleID="x1">
      <Data ss:Type="String">
       <xsl:value-of select=".//DIALER_STATUS_NAME"/>
      </Data>
     </Cell>
     <Cell ss:StyleID="x1">
      <Data ss:Type="String">
       <xsl:value-of select=".//CNT"/>
      </Data>
     </Cell>
     <Cell ss:StyleID="x1">
      <Data ss:Type="String">
       <xsl:value-of select=".//PRC"/>
      </Data>
     </Cell>
     <Cell ss:StyleID="x1">
      <Data ss:Type="Number">
       <xsl:value-of select=".//CNT"/>
      </Data>
     </Cell>
    </Row>
   </xsl:for-each>
  </Table>
  </Worksheet>
  </xsl:for-each>
   </Workbook>
 </xsl:template>
</xsl:stylesheet>




смущает что
1. При генерации отчета я не могу получить Excel или XML таблицу (могу получить ТЕКСТ, HTML, XML) файл почему то получить от BI не могу. Как сделать чтобы после генерации отчета получался файл?
2. совсем не отрабатывает <xsl:for-each select="/DATA_DS/G_2">.
3. Может кто нибудь поделится стартовым шаблоном?

В какую сторону копать?
...
Рейтинг: 0 / 0
Oracle BIP XSLT
    #39409855
Jack Carver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Выложите результат отчета в формате TEXT.

2. Он и не будет отрабатывать. У вас в XSL-шаблоне два цикла
...
<xsl:for-each select="/DATA_DS/G_1">
...
<xsl:for-each select="/DATA_DS/G_2">
</xsl:for-each>
...
</xsl:for-each>
...
т.е. вы входите в цикл по "/DATA_DS/G_1",
потом для каждого элемента пытаетесь войти в цикл по "/DATA_DS/G_2",
но слеш в начале говорит об абсолютности пути; а у вас попросту нет узлов "/DATA_DS/G_2".
Используйте во втором цикле путь "./G_2"

3. samples

P.S. Старайтесь не использовать двойные слеши в путях. Они говорят о том, что XSL-трансформатор должен искать вглубь ветви пока не найдет узел с указанным именем. Правильнее указывать явно полный путь (относительный или абсолютный)
...
Рейтинг: 0 / 0
Oracle BIP XSLT
    #39409862
sharkoff_new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jack Carver,
Да спасибо! указал:
<xsl:for-each select="/DATA_DS/G_1/G_2">
<Row>
<Cell ss:StyleID="x1">
<Data ss:Type="String">
<xsl:value-of select=".//ORD"/>
</Data>
...
<>
И все заработало

Спасибо за шаблон!
...
Рейтинг: 0 / 0
Oracle BIP XSLT
    #39411033
sharkoff_new
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jack Carver,

Сделал работающий вариант.
Но что удивительно, он вполне приемлемо работает в XML SPY < 2 минут на фиксированом периоде отчета. (экспортировал данные из паблишера и скармливал XML SPY)
Но на сервере работает в разы дольше, на этом же периоде ~10 минут. С чем это может быть связано? Как можно ускорить?
Я конечно понимаю что я не слишком оптимально нарисовал xslt. Но так ведь не может быть, что могучий сервер обрабатывает xslt на этих же данных в разы медленнее.

Код: 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.
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.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:ora="http://www.oracle.com/XSL/Transform/java/" xmlns:xdofo="http://xmlns.oracle.com/oxp/fo/extensions" xmlns:xdoxslt="http://www.oracle.com/XSL/Transform/java/oracle.apps.xdo.template.rtf.XSLTFunctions" xmlns:xdoxliff="urn:oasis:names:tc:xliff:document:1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
	<xsl:template match="/">
		<xsl:processing-instruction name="mso-application">
			<xsl:text>progid="Excel.Sheet"</xsl:text>
		</xsl:processing-instruction>
		<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
			<ss:Styles>
				<ss:Style ss:ID="x1">
					<ss:Font ss:Color="black" ss:Size="10" ss:FontName="Arial"/>
				</ss:Style>
				<ss:Style ss:ID="xdo2">
					<ss:Font ss:Color="black" ss:Size="10" ss:FontName="Arial"/>
					<ss:NumberFormat Format="$#,##0;[Red]$#,##0" Bold="0"/>
				</ss:Style>
				<Style ss:ID="s3">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
					</Borders>
					<Font ss:FontName="Times New Roman" x:CharSet="204" x:Family="Roman" ss:Bold="1"/>
					<Interior ss:Color="#CCCCCC" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="Default" ss:Name="Normal">
					<Alignment ss:Vertical="Bottom"/>
					<Borders/>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#000000"/>
					<Interior/>
					<NumberFormat/>
					<Protection/>
				</Style>
				<Style ss:ID="s18" ss:Name="Акцент1">
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF"/>
					<Interior ss:Color="#5B9BD5" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s60" ss:Name="Процентный">
					<NumberFormat ss:Format="0%"/>
				</Style>
				<Style ss:ID="m151685352" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Bottom" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
				</Style>
				<Style ss:ID="s61">
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s62">
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#000000" ss:Bold="1"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s63">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#000000" ss:Bold="1"/>
					<Interior ss:Color="#A6A6A6" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Short Date"/>
				</Style>
				<Style ss:ID="s64">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="#,##0"/>
				</Style>
				<Style ss:ID="s111">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Fixed"/>
				</Style>
				<Style ss:ID="s65">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
					<Interior ss:Color="#A6A6A6" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s66">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s67" ss:Parent="s60">
					<Alignment ss:Horizontal="Left" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#00B050"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Percent"/>
				</Style>
				<Style ss:ID="s68">
					<Alignment ss:Horizontal="Left" ss:Vertical="Bottom" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#00B050"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s69">
					<Alignment ss:Horizontal="Left" ss:Vertical="Bottom" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFC000"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s70">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Interior/>
					<NumberFormat ss:Format="#,##0"/>
				</Style>
				<Style ss:ID="s71">
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FF0000"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s72">
					<Alignment ss:Horizontal="Left" ss:Vertical="Bottom" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#C00000"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s74">
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#00B050" ss:Bold="1"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Percent"/>
				</Style>
				<Style ss:ID="s75">
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#C00000" ss:Bold="1"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Percent"/>
				</Style>
				<Style ss:ID="s76" ss:Parent="s60">
					<Alignment ss:Horizontal="Left" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#00B050"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Percent"/>
				</Style>
				<Style ss:ID="s77">
					<Borders>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#00B050" ss:Bold="1"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Percent"/>
				</Style>
				<Style ss:ID="s78">
					<Borders>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#C00000" ss:Bold="1"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="Percent"/>
				</Style>
				<Style ss:ID="s79" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
					<NumberFormat ss:Format="#,##0"/>
				</Style>
				<Style ss:ID="s86" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
					<NumberFormat ss:Format="#,##0"/>
				</Style>
				<Style ss:ID="s87">
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FF0000"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s88">
					<Alignment ss:Horizontal="Left" ss:Vertical="Bottom" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFC000"/>
					<Interior/>
				</Style>
				<Style ss:ID="s89">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
					<NumberFormat ss:Format="0.0%"/>
				</Style>
				<Style ss:ID="s98" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
					<NumberFormat ss:Format="Short Date"/>
				</Style>
				<Style ss:ID="s99" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#C00000" ss:Bold="1"/>
					<NumberFormat ss:Format="Short Date"/>
				</Style>
				<Style ss:ID="s102" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
				</Style>
				<Style ss:ID="s104">
					<Alignment ss:Horizontal="Left" ss:Vertical="Bottom"/>
					<Interior ss:Color="#FFFFFF" ss:Pattern="Solid"/>
				</Style>
				<Style ss:ID="s105" ss:Parent="s18">
					<Alignment ss:Horizontal="Center" ss:Vertical="Center"/>
					<Borders>
						<Border ss:Position="Bottom" ss:LineStyle="Continuous"/>
						<Border ss:Position="Left" ss:LineStyle="Continuous"/>
						<Border ss:Position="Right" ss:LineStyle="Continuous"/>
						<Border ss:Position="Top" ss:LineStyle="Continuous"/>
					</Borders>
					<Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11" ss:Color="#FFFFFF" ss:Bold="1"/>
					<NumberFormat ss:Format="Short Date"/>
				</Style>
				<Style ss:ID="s110">
					<Interior ss:Color="#FF6699" ss:Pattern="Solid"/>
				</Style>
			</ss:Styles>
			<!--   <xsl:apply-templates select="DATA_DS"/>-->
			<!--   </xsl:template>
   <xsl:template match="DATA_DS">-->
			<xsl:variable name="var_first_day" select="/DATA_DS/G_5/D_B"/>
			<xsl:for-each select="/DATA_DS/G_1">
				<xsl:variable name="var_camp" select="CAMPAIGN_ID"/>
				<Worksheet ss:Name="{./CAMP_NAME}">
					<Table ss:ExpandedRowCount="24" x:FullColumns="1" x:FullRows="1" ss:StyleID="s61" ss:DefaultRowHeight="15">
						<Column ss:StyleID="s61" ss:Width="24"/>
						<Column ss:StyleID="s61" ss:AutoFitWidth="0" ss:Width="312.75"/>
						<Column ss:StyleID="s61" ss:AutoFitWidth="0" ss:Width="53.25"/>
						<Column ss:StyleID="s61" ss:AutoFitWidth="0" ss:Width="105"/>
						<Column ss:StyleID="s61" ss:AutoFitWidth="0" ss:Width="53.25" ss:Span="4"/>
						<Column ss:Index="11" ss:StyleID="s61" ss:Width="109.5"/>
						<Column ss:StyleID="s61" ss:Width="90.75"/>
						<!--header begin-->
						<Row/>
						<Row/>
						<Row>
							<Cell ss:StyleID="s102" ss:MergeAcross="1">
								<Data ss:Type="String">Дата</Data>
							</Cell>
							<!--ss:MergeDown="1"-->
							<Cell ss:StyleID="s98">
								<Data ss:Type="String">Средний % за</Data>
							</Cell>
							<Cell ss:StyleID="s99">
								<Data ss:Type="String">MAX % за</Data>
							</Cell>
							<!-- заголовок - выводим даты-->
							<xsl:for-each select="/DATA_DS/G_3/D_D">
								<Cell ss:StyleID="s105" ss:MergeAcross="1">
									<Data ss:Type="String">
										<xsl:value-of select="."/>
									</Data>
								</Cell>
							</xsl:for-each>
						</Row>
						<Row>
							<Cell ss:StyleID="s65">
								<Data ss:Type="String">
								Код
								</Data>
							</Cell>
							<Cell ss:StyleID="s65">
								<Data ss:Type="String">
								Расшифровка
								</Data>
							</Cell>
							<Cell ss:StyleID="s63">
								<Data ss:Type="String">
								Средний % за
								</Data>
							</Cell>
							<Cell ss:StyleID="s63">
								<Data ss:Type="String">
								MAX % за
								</Data>
							</Cell>
							<!-- заголовок - выводим строки кол-во - Даты-->
							<xsl:for-each select="/DATA_DS/G_3/D_D">
								<Cell ss:StyleID="s63">
									<Data ss:Type="String">Кол-во</Data>
								</Cell>
								<Cell ss:StyleID="s63">
									<Data ss:Type="String">%</Data>
								</Cell>
							</xsl:for-each>
						</Row>
						<!--header end-->
						<xsl:for-each select="/DATA_DS/G_4">
							<!--по строкам-->
							<xsl:variable name="var_val" select="./VAL"/>
							<!--<xsl:for-each select="/DATA_DS/G_4/DIALER_STATUS_NAME"/>-->
							<xsl:variable name="var_status" select="./DIALER_STATUS_NAME"/>
							<!--<xsl:variable name="var_val" select="VAL"/>-->
							<Row>
								<!--Левые статич колонки-->
								<Cell ss:StyleID="s66">
									<Data ss:Type="Number">
										<xsl:value-of select="$var_val"/>
									</Data>
								</Cell>
								<Cell ss:StyleID="x1">
									<Data ss:Type="String">
										<xsl:value-of select="$var_status"/>
									</Data>
								</Cell>
								<!--Begin Итоговые средние и максимальное-->
								<Cell ss:StyleID="s111">
									<Data ss:Type="Number">
										<xsl:value-of select="/DATA_DS/G_1/G_2[VAL = $var_val and D_D_CHAR = $var_first_day and CAMPAIGN_ID=$var_camp]/AVG_PRC"/>
									</Data>
								</Cell>
								<Cell ss:StyleID="s111">
									<Data ss:Type="Number">
										<xsl:value-of select="/DATA_DS/G_1/G_2[VAL = $var_val and D_D_CHAR = $var_first_day and CAMPAIGN_ID=$var_camp]/MAX_PRC"/>
									</Data>
								</Cell>
								<!--End Итоговые средние и максимальное-->
								<!--Левые статич колонки-->
								<!--Begin выводим основные данные-->
								<xsl:for-each select="/DATA_DS/G_3/D_D">
									<!--побежали по датам-->
									<xsl:variable name="var_dd" select="."/>
									<Cell ss:StyleID="s64">
										<Data ss:Type="Number">
											<!--		<xsl:value-of select="$var_camp"/>
										 val
											<xsl:value-of select="$var_val"/>
											rrrr
											<xsl:value-of select="$var_dd"/>
											cnt=-->
											<xsl:value-of select="/DATA_DS/G_1/G_2[VAL = $var_val and D_D_CHAR = $var_dd and CAMPAIGN_ID=$var_camp]/CNT"/>
										</Data>
									</Cell>
									<!--подкраска здесь-->
									<xsl:variable name="var_is_color" select="/DATA_DS/G_1/G_2[VAL = $var_val and D_D_CHAR = $var_dd and CAMPAIGN_ID=$var_camp]/IS_COLOR"/>
									<xsl:variable name="CrStl">
										<xsl:choose>
											<xsl:when test="$var_is_color=0">
												<xsl:value-of select="'s111'"/>
											</xsl:when>
											<xsl:otherwise>
												<xsl:value-of select="'s110'"/>
											</xsl:otherwise>
										</xsl:choose>
									</xsl:variable>
									<!--выводим значение суммы в текущем разрезе учетного и расчетного периода -->
									<Cell ss:StyleID="{$CrStl}">
										<Data ss:Type="Number">
											<xsl:value-of select="/DATA_DS/G_1/G_2[VAL = $var_val and D_D_CHAR = $var_dd and CAMPAIGN_ID=$var_camp]/PRC"/>
										</Data>
									</Cell>
								</xsl:for-each>
								<!--End выводим основные данные-->
							</Row>
						</xsl:for-each>
						<Row ss:StyleID="s62">
							<!--Begin нижняя строка итога-->
							<Cell ss:StyleID="s102" ss:MergeAcross="1">
								<Data ss:Type="String">Итого</Data>
							</Cell>
							<Cell ss:StyleID="s102">
								<Data ss:Type="String">
								</Data>
							</Cell>
							<Cell ss:StyleID="s102">
								<Data ss:Type="String">
								</Data>
							</Cell>
							<xsl:for-each select="/DATA_DS/G_3/D_D">
								<xsl:variable name="var_n_dd" select="."/>
								<!--побежали по датам-->
								<Cell ss:StyleID="s79">
									<Data ss:Type="Number">
										<xsl:value-of select="/DATA_DS/G_1/G_2[ORD=1 and D_D_CHAR = $var_n_dd and CAMPAIGN_ID=$var_camp]/SUM_CNT"/>
									</Data>
								</Cell>
								<Cell ss:StyleID="s79">
									<Data ss:Type="Number">
									</Data>
								</Cell>
							</xsl:for-each>
							<!--End нижняя строка итога-->
						</Row>
					</Table>
					<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
						<PageSetup>
							<Header x:Margin="0.3"/>
							<Footer x:Margin="0.3"/>
							<PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
						</PageSetup>
						<Print>
							<ValidPrinterInfo/>
							<HorizontalResolution>600</HorizontalResolution>
							<VerticalResolution>600</VerticalResolution>
						</Print>
						<Selected/>
						<FreezePanes/>
						<FrozenNoSplit/>
						<SplitVertical>2</SplitVertical>
						<LeftColumnRightPane>2</LeftColumnRightPane>
						<ActivePane>1</ActivePane>
						<Panes>
							<Pane>
								<Number>3</Number>
							</Pane>
							<Pane>
								<Number>1</Number>
								<ActiveRow>14</ActiveRow>
								<ActiveCol>1</ActiveCol>
							</Pane>
						</Panes>
						<ProtectObjects>False</ProtectObjects>
						<ProtectScenarios>False</ProtectScenarios>
					</WorksheetOptions>
				</Worksheet>
			</xsl:for-each>
		</Workbook>
	</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Oracle BIP XSLT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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