Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XLS + убрать дублирующие ноды / 7 сообщений из 7, страница 1 из 1
28.02.2008, 00:36
    #35159444
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
XML примерно такой

<ROOT>
<D NAME="a"/>
<D NAME="b"/>
<D NAME="c"/>
<D NAME="a"/>
<D NAME="d"/>
<D NAME="a"/>
<D NAME="d"/>
..................
</ROOT>
как убрать дубликацию

Спасибо
...
Рейтинг: 0 / 0
28.02.2008, 08:11
    #35159571
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
цикл -> Скопировать только те которые не встречались ранее
что то типа этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
 <xsl:for-each select="D">
   <xsl:choose>
            <xsl:when test="count(D[@NAME=current()/@NAME])=1"> все гуд! </xsl:when>
            <xsl:otherwise>  значение '<xsl:value-of select="@NAME"/>' повторилось </xsl:otherwise>
   </xsl:choose>
</xsl:for-each>
...
Рейтинг: 0 / 0
28.02.2008, 11:07
    #35159924
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
...
Рейтинг: 0 / 0
28.02.2008, 11:28
    #35160024
SuSa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
> maXmo -> :) , вспомнить старое всегда приятно.
>michael R -> ??Ты меня поражаешь. ты чего такие тупые вопросы задаешь? ты же сам порядком на этом форуме сидишь и тема не раз поднималась. к тому же за 99% уверен что и сам бы ты решение написал без чужой подсказки.
...
Рейтинг: 0 / 0
29.02.2008, 10:42
    #35162441
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
SuSa
спасибо за комплимент
но на самом деле твой пример не то

просто я не работал с осями не было необходимости
а решение нужно было быстро найти
что это группировка не сообразил

в принципе решил вот так для моего примера

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<xsl:template match="ROOT">
    <ROOT>
	 <xsl:for-each select="D">
	        <xsl:if test="not(preceding-sibling::D/@NAME=@NAME)">
		       <xsl:element name="D">
			    <xsl:attribute name="count">
				 <xsl:value-of elect="count(../D/@NAME[.=current()/@NAME])"/>
 			     </xsl:attribute>
			     <xsl:attribute name="NAME">
	  	                <xsl:value-of select="@NAME"/>
			     </xsl:attribute>					
		       </xsl:element >     
	         </xsl:if>
	 </xsl:for-each>
    </ROOT>	 
 </xsl:template> 
...
Рейтинг: 0 / 0
29.02.2008, 11:12
    #35162565
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
и что, пашет?
...
Рейтинг: 0 / 0
29.02.2008, 12:06
    #35162803
michael R
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XLS + убрать дублирующие ноды
вот это точно пашет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml"/>
<xsl:template match="ROOT">
    <ROOT>
	 <xsl:for-each select="D">
	        <xsl:if test="not(preceding-sibling::D/@NAME=@NAME)">
		       <xsl:element name="D">
			    <xsl:attribute name="count">
				 <xsl:value-of select="count(../D/@NAME[.=current()/@NAME])"/>
 			     </xsl:attribute>
			     <xsl:attribute name="NAME">
	  	                <xsl:value-of select="@NAME"/>
			     </xsl:attribute>					
		       </xsl:element >     
	         </xsl:if>
	 </xsl:for-each>
    </ROOT>	 
 </xsl:template> 
</xsl:stylesheet>
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XLS + убрать дублирующие ноды / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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