Заклинило с preceding-sibling, помогите!
От: posdnyaa Россия  
Дата: 01.11.08 16:08
Оценка:
Здравствуйте.
Вопрос вроде не сложный, но что-то меня заклинило.
Есть XML:

<root>
 <authors>
   <author name="Dave Thomas"/>
   <author name="Bill Smith"/>
   <author name="Jack Herrington"/>
 </authors>
 <sellers>
   <seller name="John Gain"/>
   <seller name="Garry Garrison"/>
   <seller name="Bill Smith"/>
 </sellers>
</root>



В нем список авторов (authors/author) и продавцов (sellers/seller). Иногда автор является и продавцом (напр. Bill Smith). Авторы и продавцы находятся в разных секциях – authors и sellers.
Мне надо из обоих секций получить общий список имен, в котором имена не должны повторятся. Т.е. Bill Smith должен быть в списке в одном экземпляре.
Понимаю, что делать это надо с помощью preceding-sibling, но как её отфильтровать — не поиму.


<xsl:for-each select="root/*/*[not(@id=preceding-sibling::*/*/@id)]">
    <xsl:value-of select="@id"/>    <br/>
</xsl:for-each>
Re: Заклинило с preceding-sibling, помогите!
От: Lloyd Россия  
Дата: 01.11.08 17:02
Оценка: 3 (1)
Здравствуйте, posdnyaa, Вы писали:

P>В нем список авторов (authors/author) и продавцов (sellers/seller). Иногда автор является и продавцом (напр. Bill Smith). Авторы и продавцы находятся в разных секциях – authors и sellers.

P>Мне надо из обоих секций получить общий список имен, в котором имена не должны повторятся. Т.е. Bill Smith должен быть в списке в одном экземпляре.
P>Понимаю, что делать это надо с помощью preceding-sibling, но как её отфильтровать — не поиму.

preceding-sibling — это с одной стороны — preceding (т.е. те, кто идет в документее ранее), а с другой — sibling (имеющие общего родителя). В твоем случае author "Bill Smith" является preceding-ом для seller-а "Bill Smith", но не является sibling-ом.

P>
P><xsl:for-each select="root/*/*[not(@id=preceding-sibling::*/*/@id)]">
P>    <xsl:value-of select="@id"/>    <br/>
P></xsl:for-each>
P>


Используй ось preceding
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re: Заклинило с preceding-sibling, помогите!
От: Kvazimodo75  
Дата: 05.12.08 14:21
Оценка:
Здравствуйте, posdnyaa, Вы писали:

P>Здравствуйте.

P>Вопрос вроде не сложный, но что-то меня заклинило.
P>Есть XML:

P>
P><root>
P> <authors>
P>   <author name="Dave Thomas"/>
P>   <author name="Bill Smith"/>
P>   <author name="Jack Herrington"/>
P> </authors>
P> <sellers>
P>   <seller name="John Gain"/>
P>   <seller name="Garry Garrison"/>
P>   <seller name="Bill Smith"/>
P> </sellers>
P></root>
P>



P>В нем список авторов (authors/author) и продавцов (sellers/seller). Иногда автор является и продавцом (напр. Bill Smith). Авторы и продавцы находятся в разных секциях – authors и sellers.

P>Мне надо из обоих секций получить общий список имен, в котором имена не должны повторятся. Т.е. Bill Smith должен быть в списке в одном экземпляре.
P>Понимаю, что делать это надо с помощью preceding-sibling, но как её отфильтровать — не поиму.

А не быстрее будет получить
P>
P><root>
P>   <name="Dave Thomas"/>
P>   <name="Bill Smith"/>
P>   <name="Jack Herrington"/>
P>   <name="John Gain"/>
P>   <name="Garry Garrison"/>
P>   <name="Bill Smith"/>
P></root>
P>


И сделать Мюнха?
Re[2]: Заклинило с preceding-sibling, помогите!
От: Lloyd Россия  
Дата: 05.12.08 14:25
Оценка:
Здравствуйте, Kvazimodo75, Вы писали:

K>И сделать Мюнха?


 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.