Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / ускорить обработку / 10 сообщений из 10, страница 1 из 1
26.05.2008, 17:04
    #35335623
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
есть два блока в одном xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<ROOT>
<A>
  <D N="" Y="" />
  <D N="" Y="" />
  <D N="" Y="" />
  <D N="" Y="" />
...............
</A>

<B>
  <D N="" Y="" />
  <D N="" Y="" />
  <D N="" Y="" />
  <D N="" Y="" />
...............
</B>
</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"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

     <xsl:variable name="set1" select="//A/D" />
     <xsl:variable name="set2" select="//B/D" />	

     <xsl:template  match="ROOT"> 
		 <ROOT>
			<xsl:call-template  name="AGE" />
		 </ROOT>
	 </xsl:template>  

     <xsl:template name="AGE" match="ROOT"> 
		 <ROOT>
			 <xsl:copy-of select="$set2[not(@N=$set1/@N)]  | $set1[@Y > 2] "  /> 		 
         </ROOT>
	 </xsl:template>  

</xsl:stylesheet>

то есть я вытаскиваю из А все ноды у которых Y>2
и из B я беру те ноды которых нет в A

нодов у меня завались и в первом и во втором блоке (400 + 100 тыс может больше)
и обработка занимает кучу времени
как можно это ускорить

Спасибо
...
Рейтинг: 0 / 0
26.05.2008, 18:21
    #35335804
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
Замечание первое - если хотите скорости никогда не используйте // Пишите /Root/A/D и /Root/B/D
Замечание второе - не уверен, но сильно мне не нравится условие в copy-of - там где выбираются В-узлы
...
Рейтинг: 0 / 0
26.05.2008, 18:22
    #35335809
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
это условие мне тоже не нравится
тем более медленно работает
...
Рейтинг: 0 / 0
26.05.2008, 18:38
    #35335837
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
можно создать ключ
...
Рейтинг: 0 / 0
26.05.2008, 18:46
    #35335860
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
ключ ??
никогда ещё не делал а как
...
Рейтинг: 0 / 0
27.05.2008, 10:43
    #35336693
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
xsl:key
...
Рейтинг: 0 / 0
27.05.2008, 12:15
    #35337060
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
нет не помогает
ключ не даёт ускорение
...
Рейтинг: 0 / 0
27.05.2008, 17:42
    #35338265
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
так его ещё заюзать надоть
...
Рейтинг: 0 / 0
27.05.2008, 18:29
    #35338446
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
делаю так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<xsl:variable name="set1" select="ROOT/A/D[@Y > 2]" /> 
   
  <xsl:key name="skey1" match="ROOT/A/D" use="@N" />
  <xsl:key name="skey2" match="ROOT/B/D" use="@N" />
           
   <xsl:template  match="ROOT"> 
	 <ROOT>
		<xsl:call-template  name="AGE" />
	 </ROOT>
    </xsl:template>  

     <xsl:template name="AGE" match="ROOT"> 
	 <ROOT>
	 	 <xsl:for-each select="//ROOT/B/D">
			 <xsl:if test="count(key('skey1', @N))=0" >
				<xsl:copy-of select="key('skey2', @N)"  />
			 </xsl:if>	 
		 </xsl:for-each>
		 <xsl:copy-of select="$set1"  />
         </ROOT>
	 </xsl:template>  

можно или нужно как то по другому ??
...
Рейтинг: 0 / 0
27.05.2008, 20:16
    #35338654
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить обработку
странно
в XML-редакторе (XMLSPY) очень долго работает
а в проге через XML-обьект отрабатывает мгновенно

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


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