parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Что-то с логикой не так

Rafael 09.10.2006 10:05

По условию:
1. if с="DEF" and (if b <> prev b and с<>"2") select a
2. else if b = prev b and с="2" select a
если более или менее формализовать задачу.

Больше всего вызывает вопросов момент
если есть (а) с таким же (b), но с="2") то выбрать с="2" а не с="DEF"
вопрос: где есть (а)? и при каких условиях?
Если мы выбираем узлы последовательно (как, оно по идее происходит при xsl-обработке), то получиться, что следуя этой логике вместо:
<a b="1" c="2">1</a>
<a b="2" c="2">2</a>
<a b="3" c="DEF">4</a>
<a b="4" c="2">5</a>
получиться: по шагам... пройдем все дерево:

1. первый узел - не удовлетворяет первому условию (c<>"DEF") и второму (нет предыдущего b)
2. второй узел - не удовлетворяет первому условию (c<>"DEF") и второму (есть предыдущий b но они не равны)
3. третий узел - подходит (c="DEF")
4. четвертый узел - подходит (c="DEF")
5. пятый узел - не удовлетворяет первому условию (c<>"DEF") и второму (есть предыдущий b но они не равны)

итого:
<a b="2" c="DEF">3</a>
<a b="3" c="DEF">4</a>