Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Почему преобразование в IE работает медленно? / 4 сообщений из 4, страница 1 из 1
27.02.2006, 00:21
    #33566557
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему преобразование в IE работает медленно?
записей около 8 тысяч

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.
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.
<?xml version="1.0" encoding="Windows-1251" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="html" indent="no" encoding="windows-1251" />
	<xsl:decimal-format name="rus" decimal-separator=',' grouping-separator=' ' />
	<xsl:template match="/">
		<table id="gridBodyTable" class="gridData" cellSpacing="0" cellPadding="0" name="Policy">
			<xsl:attribute name="currPage">
				<xsl:value-of select="//currPage" />
			</xsl:attribute>
			<xsl:attribute name="allPages">
				<xsl:value-of select="//allPages" />
			</xsl:attribute>
			<colgroup>
				<col width="20" />
				<col width="16" />
        <col width="16" />
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
        <col width="2" />
        <col/>        
				<col width="2" />
				<col/>
				<col width="2" />
				<col/>
				<col width="2" />
				<col width="16" />
			</colgroup>
			<tbody>
				<xsl:for-each select="//Table">
					<tr class="Data">

						<xsl:attribute name="id">
							<xsl:value-of select="PolicyID" />
						</xsl:attribute>

            <xsl:attribute name="AgentID">
              <xsl:value-of select="AgentID" />
            </xsl:attribute>
            
						<td style="padding-left: 0px">
							<input type="checkbox" style="border: 0px">
								<xsl:attribute name="id">
									<xsl:value-of select="PolicyID" />
								</xsl:attribute>
							</input>
							<span style="display:none">
								<xsl:value-of select="DocStatusID" />
							</span>
						</td>
            <td style="padding-left: 0px">
              <img height="16" width="16" align="absMiddle">
                <xsl:attribute name="src">
                  <xsl:value-of select="Img" />
                </xsl:attribute>
                <xsl:attribute name="title">
                  <xsl:value-of select="AddProgrammTitle" />
                </xsl:attribute>                
              </img>
            </td>
						<td style="padding-left: 0px">
							<img src="img/grid_r.gif" height="16" width="16" title="Отобразить дополнительную информацию" align="absMiddle"></img>
						</td>
						<td> </td>
						<td onmouseover="this.title = this.innerText">
							<xsl:value-of select="PolicyNo" />-<xsl:value-of select="Series" />
						</td>
						<td> </td>
						<td onmouseover="this.title = this.innerText">
							<xsl:value-of select="IssueDate" />
						</td>
						<td> </td>
						<td onmouseover="this.title = this.innerText">
								<xsl:value-of select="Insurant" />
							</td>
							<td> </td>
							<td onmouseover="this.title = this.innerText">
							<xsl:if test="CountryEn != ' '">
								<xsl:value-of select="CountryEn" />
							</xsl:if>
							<xsl:if test="CountryEn = ' '">
								<xsl:value-of select="Symbol" />
							</xsl:if>
						</td>
						<td> </td>
						<td align="right" onmouseover="this.title = this.innerText">
							<xsl:value-of select="format-number(TotalPaymentBrutto, '### ##0,00', 'rus')" />
						</td>
						<td> </td>
						<td align="right" onmouseover="this.title = this.innerText">
							<xsl:value-of select="format-number(TravelCommission, '##0', 'rus')" />
						</td>
						<td> </td>
						<td align="right" onmouseover="this.title = this.innerText">
							<xsl:value-of select="format-number(AccidentCommission, '##0', 'rus')" />
						</td>
						<td> </td>
						<td align="right" onmouseover="this.title = this.innerText">
							<xsl:value-of select="format-number(CancelationCommission, '##0', 'rus')" />
						</td>
						<td> </td>
            <td align="right" onmouseover="this.title = this.innerText">
              <xsl:value-of select="format-number(AddProgCommission, '##0', 'rus')" />
            </td>
            <td> </td>            
						<td style="color: blue" onmouseover="this.title = this.innerText">
							<xsl:value-of select="Agent" />
						</td>
						<td> </td>
						<td name="flagTD">
							<xsl:attribute name="style">
								background-color:<xsl:value-of select="Color" />;
							</xsl:attribute>
							<img height="10" width="10" title="" align="absMiddle">
								<xsl:attribute name="src">
									img/<xsl:value-of select="ImgUrl" />
								</xsl:attribute>
								<xsl:attribute name="title">
									<xsl:value-of select="concat('Договор ',Title)" />
								</xsl:attribute>
							</img>
						</td>
					</tr>
				</xsl:for-each>
			</tbody>
		</table>
	</xsl:template>
</xsl:stylesheet>

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.
- <NewDataSet>
- <Table>
  <PolicyID> 27499 </PolicyID> 
  <TariffPlanId> 4 </TariffPlanId> 
  <PolicyNo> 1012170 </PolicyNo> 
  <Series> 361 </Series> 
  <IssueDate> 13 . 02 . 2006 </IssueDate> 
  <Insurant>PUSTOVOYT NADEZDA</Insurant> 
  <DateFrom> 24 . 01 . 2006 </DateFrom> 
  <Days> 3 </Days> 
  <DateTo> 23 . 01 . 2007 </DateTo> 
  <Symbol>EU</Symbol> 
  <TotalPaymentBrutto> 25 . 00 </TotalPaymentBrutto> 
  <DocStatusID> 1 </DocStatusID> 
  <Title>Введен</Title> 
  <Color>#ffffff</Color> 
  <ImgUrl>flag0.gif</ImgUrl> 
  <Agent>Колесник1, Киев</Agent> 
  <CountryEn xml:space="preserve"></CountryEn> 
  <TravelCommission> 0 . 00 </TravelCommission> 
  <AccidentCommission> 0 . 00 </AccidentCommission> 
  <CancelationCommission> 0 . 00 </CancelationCommission> 
  <AddProgCommission> 0 . 00 </AddProgCommission> 
  <Img>img/1ptrans.gif</Img> 
  <AddProgrammTitle /> 
  </Table>
- <Table>
  <PolicyID> 27498 </PolicyID> 
  <TariffPlanId> 4 </TariffPlanId> 
  <PolicyNo> 1012169 </PolicyNo> 
  <Series> 361 </Series> 
  <IssueDate> 13 . 02 . 2006 </IssueDate> 
  <Insurant>PSHENYTSKYY PAVLO</Insurant> 
  <DateFrom> 18 . 01 . 2007 </DateFrom> 
  <Days> 3 </Days> 
  <DateTo> 17 . 01 . 2008 </DateTo> 
  <Symbol>EU</Symbol> 
  <TotalPaymentBrutto> 25 . 00 </TotalPaymentBrutto> 
  <DocStatusID> 1 </DocStatusID> 
  <Title>Введен</Title> 
  <Color>#ffffff</Color> 
  <ImgUrl>flag0.gif</ImgUrl> 
  <Agent>Колесник1, Киев</Agent> 
  <CountryEn xml:space="preserve"></CountryEn> 
  <TravelCommission> 0 . 00 </TravelCommission> 
  <AccidentCommission> 0 . 00 </AccidentCommission> 
  <CancelationCommission> 0 . 00 </CancelationCommission> 
  <AddProgCommission> 0 . 00 </AddProgCommission> 
  <Img>img/1ptrans.gif</Img> 
  <AddProgrammTitle /> 
  </Table>
  .........
 </NewDataSet>

на клиенте в javascript делаю
xslt = <загружаю xslt>
o = <загружаю xml>
gridDiv.innerHTML = o.transformNode(xslt);

8тысяч записей преобразовываются где-то минут 5

Можно ли это как-то сократить?
...
Рейтинг: 0 / 0
27.02.2006, 07:41
    #33566657
VladiCh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему преобразование в IE работает медленно?
Для начала избавиться от запросов типа //node, т.к. они предполагают обход по всему дереву. Используйте вместо этого полный путь типа /root/node. А дальше уже разбираться в самом алгоритме, можно ли его упростить.
...
Рейтинг: 0 / 0
24.03.2006, 21:43
    #33624723
mclabman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему преобразование в IE работает медленно?
Попробуй разделить процесс формирования и процесс отображения.
Т.е. сначала в xml, а только потом в innerHTML.
...
Рейтинг: 0 / 0
27.03.2006, 09:30
    #33626289
Почему преобразование в IE работает медленно?
1. Оптимизация алгоритма.
2. Все преобразования в Вашем случае происходят на стороне клиента, следовательно - какие параметры рабочей станции, такова и скорость.
3. 8 тысяч записей - достаточно много для XML, я бы перенес на сторону сервера всю работу. (ASP, ASP.NET, PHP для любителей)
Для быстрой работы с XML надо много памяти и шустрый процессор, тут даже быстродействие диска не играет большой роли. Естественно, если XML получается в результате работы с СУБД (MSSQL, Oracle etc), а не с текстом

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


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