Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, sbobrikov, Вы писали:
S>>А как выбрать все книги у которых есть характеристики 'Физика' или 'Фантастика', т.е. Book1 и Book2
L>
L>root/book[(subject = $psubject) or (subject = $psubject2)]
L>
Это я понимаю.
Я не уточнил: Количество критериев различное. Может 2, а может 5. Заранее не известно.
И они должны задаваться параметрами.
Re[3]: XSLT. Как осуществить выбор по нескольким критериям
Здравствуйте, sbobrikov, Вы писали:
S>Это я понимаю. S>Я не уточнил: Количество критериев различное. Может 2, а может 5. Заранее не известно. S>И они должны задаваться параметрами.
И как ты собрался передавать параметрами неизвестное кол-во значений?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: XSLT. Как осуществить выбор по нескольким критериям
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, sbobrikov, Вы писали:
S>>Это я понимаю. S>>Я не уточнил: Количество критериев различное. Может 2, а может 5. Заранее не известно. S>>И они должны задаваться параметрами.
L>И как ты собрался передавать параметрами неизвестное кол-во значений?
В этом и вопрос.
Я уже понял что для сравнения можно задать набор узлов
например выражение
root/book[subject = /root/book[2]/subject]
выбирает все книги в которых subject совпадает хотябы с одним из book[2]. Т.е. Book1,Book2 и Book4
Осталось как то передать набор узлов через параметр.
Другой вариант, могу для каждой book строить двоичную маску
для ее subject (количество их видов у меня ограничено порядка 20).
Но не понятно как ее сравниывать, т.к. and не дает ожидаемого результата
Re[5]: XSLT. Как осуществить выбор по нескольким критериям
Вариант "грубой силы": пропатчить XSL в рантайме.
Т.е. вы загружаете XSL (как DOM document например), "дописываете" в него все что нужно в рантайме,
и для преобразования используете уже этот "пропатченный" XSL.
Re[5]: XSLT. Как осуществить выбор по нескольким критериям
Вы писали:
bnk>Вариант "грубой силы": пропатчить XSL в рантайме. bnk>Т.е. вы загружаете XSL (как DOM document например), "дописываете" в него все что нужно в рантайме, bnk>и для преобразования используете уже этот "пропатченный" XSL.
L>В принцыпе, те xslt-процессоры, которые я знаю, все допускают передачу в кач-ве параметра XmlNode-а.
Посмотрел описание xslt-процессора вроде поддерживает передачу куска дерева, но еще не пробовал.
Хочу сначала отладить на примере, и опять проблемка:
Если описываю параметр непосредственно в xslt как дерево:
<xsl:param name="psubject">
<root>
<subject>Наука</subject>
<subject>Физика</subject>
</root>
</xsl:param>
то на выражении
root/book[subject = $psubject/root/subject]
получаю ошибку. $psubject, не воспринимается парсером как набор узлов
Если сформировать отдельный xml файл, пусть filter.xml :
Здравствуйте, sbobrikov, Вы писали:
S>Так может кто-нибудь все таки знает как правильно внутри xslt задать параметр определяющий набор узлов?
S>см. предыдущий пост...
S>Спасибо
node-set
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: XSLT. Как осуществить выбор по нескольким критериям