powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / XSL: кто бы рассказал как это работает
2 сообщений из 2, страница 1 из 1
XSL: кто бы рассказал как это работает
    #33236963
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
суть такова есть исходный файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="UTF-8"?>
<Root> 
 <El1 number="1"/> 
 <El1 number="2"/> 
  <El2 number="1"/> 
  <El2 number="2"/> 
  <El2 number="3"/> 
 <El1 number="5"/> 
</Root>
есть xsl-ка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xsl:key name="chatters" match="@number" use="."/> 
	<xsl:template match="/">
   	<xsl:call-template name="jabber.chatters.show" />
	</xsl:template>

<xsl:template name="jabber.chatters.show">
       <u>Chatters:</u>
       <br />
		<xsl:for-each select="//*[count(@number | key('chatters', @number)[1]) = 1]">
          					
<xsl:value-of select="@number" />
     </xsl:for-each>
 </xsl:template>  	
эта штука отбирает уникальные значения атрибутов number, но как работает ???
теоритически key берет список узлов для которых есть значение атрибута number, далее среди них отбираются те которые имеют значение данного атрибута такое же как и текущий элемент El1 или El2, предположительно | дает новый список узлов который состоит из (стоп, а что обладает болшим приоритетом, оператор [] или |- в приниципе это [] = значит мы взали первый элемент среди списка тех кто имеет данное значение атрибута затем подаем на вход | - похоже здесь она работает в нодовом контексте -- 1 | 1 = 1, следовательно если первый узел списка и есть МОЙ атрибут то результат - список узлов состоящий из ОДНОГО узла -- МОЕГО атрибута и если он имеет длину 1 значит не было среди моих сиблингов ? такого узла у которого было бы другое значение атрибута @number)
вообще то складно, кто как думает?
...
Рейтинг: 0 / 0
XSL: кто бы рассказал как это работает
    #33236988
taj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zorro, я раза три перечитывал, но твой стиль изложения победил мой пятничный мозг :D
В общем и целом единственное что я разумного уловил, это
авторследовательно если первый узел списка и есть МОЙ атрибут то результат - список узлов состоящий из ОДНОГО узла -- МОЕГО
то есть, скорее всего ты все понял правильно. Формируется список ключей, затем для каждого элемента проверяется, является ли его атрибут number первым в списке ключей с таким значением, и если да, то выводится.
Наверно, я и сам не очень понятно все описал, да ну и хрен с ним - ничего сложного в этом примере нет, кто захочет, тот и сам разберется.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / XSL: кто бы рассказал как это работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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