powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как организовать и получить результат пересечения двух XML
19 сообщений из 19, страница 1 из 1
как организовать и получить результат пересечения двух XML
    #35165721
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML 1
<ROOT>
<D NAME="a"/>
<D NAME="b"/>
<D NAME="c"/>
<D NAME="d"/>
<D NAME="e"/>
<D NAME="f"/>
<D NAME="g"/>
</ROOT>


XML 2
<ROOT>
<D NAME="b"/>
<D NAME="d"/>
<D NAME="a"/>
<D NAME="e"/>
</ROOT>

нужно получить XML ноды которого есть только в XML1
<ROOT>
<D NAME="c"/>
<D NAME="f"/>
<D NAME="g"/>
</ROOT>

есть возможность сделать это как то по быстрому
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35165788
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. попробуй поискать, такое было
принцып был примерно такой. по одному файлу формируешь шаблоны для поиска. по второму ищешь выполнение этого условия
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35165791
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помоему как раз подойдет мой предыдущий ответ. он как раз был нацелен на проверку на неповторение.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35165797
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну у меня вопрос более широкого плана

именно работа с множествами в XSLT
пересечение обьединение разность ...

порядок множеств в самом XML может быть разным
можно ли такое реализовать
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166153
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гыы, теория графов на xslt. Круто придумано. если реализуешь можно будет куда нить выложить типа xmlhack или Wiki.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166625
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$set1[not(@NAME=$set2/@NAME)]
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166691
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не ясно

что я загоняю в $set1 , $set2
можно ли всю транформацию целиком
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166697
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут

обьясните нормальным языком как это реализовать
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166710
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael Rчто я загоняю в $set1 , $set2множества, разность которых считаем.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166721
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
michael R вот тут это не пойдёт: у тебя не настоящее пересечение.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166748
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo это не пойдёт: у тебя не настоящее пересечение.

почему ?
это из-за повторов ?
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166757
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из-за того, что элементы, считающиеся одинаковыми, на самом деле разные.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166827
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет не выходит

XML (немного поменял)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
	<A NAME="a"/>
	<A NAME="b"/>
	<A NAME="c"/>
	<A NAME="d"/>
	<A NAME="e"/>
	<A NAME="f"/>
	<A NAME="g"/>
	
        <B NAME="b"/>
	<B NAME="d"/>
	<B NAME="a"/>
	<B NAME="e"/>
</ROOT>

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.
<?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:variable name="set1">
  <xsl:value-of select="//A/@NAME"/>
</xsl:variable>
<xsl:variable name="set2">
  <xsl:value-of select="//B/@NAME"/>
</xsl:variable>


<xsl:template match="ROOT"> 
	 <ROOT>
		 <xsl:for-each select="//@NAME">
				 <xsl:if test="$set1[not(@NAME=$set2/@NAME)] ">
					<xsl:element name="S"> 
						 <xsl:copy-of select="."/>
					</xsl:element>	 
				 </xsl:if>
		</xsl:for-each>	 
  	 </ROOT>
</xsl:template>  


</xsl:stylesheet>

выдаётся весь список
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35166984
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo $set1[not(@NAME=$set2/@NAME)]

что именно и каким образом я загоняю значения в эти переменные из соему XML
какой формат записи
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35168871
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
загони //A и //B, я так понял, они составляют элементы множеств.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35168876
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$set1[not(@NAME=$set2/@NAME)] уже будет содержать разность множеств, просто скопировать его и всё.
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35170674
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я жутко извеняюсь
у меня пусто

XML
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
	<A NAME="a"/>
	<A NAME="b"/>
	<A NAME="c"/>
	<A NAME="d"/>
	<A NAME="e"/>
	<A NAME="f"/>
	<A NAME="g"/>
        <B NAME="b"/>
	<B NAME="d"/>
	<B NAME="a"/>
	<B NAME="e"/>
</ROOT>

XSLT
Код: 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:variable name="set1">
  <xsl:value-of select="//A" />
</xsl:variable>
<xsl:variable name="set2">
  <xsl:value-of select="//B" />
</xsl:variable>


<xsl:template match="ROOT"> 
	 <ROOT>
		 <xsl:copy-of select="$set1[not(@NAME=$set2/@NAME)]" />
  	 </ROOT>
</xsl:template>  


</xsl:stylesheet>


Result
Код: plaintext
1.
2.
<?xml version="1.0" encoding="UTF-8"?>
<ROOT xmlns:fo="http://www.w3.org/1999/XSL/Format"></ROOT>

что я не так делаю
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35184401
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты не понимаешь, что делает value-of

<xsl:variable name="set1" select="//A" />
...
Рейтинг: 0 / 0
как организовать и получить результат пересечения двух XML
    #35184936
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo
да работает и разность и пересечение множеств
продолжу своё увлекательное занятие с теорией множеств
Спасибо
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как организовать и получить результат пересечения двух XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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