| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > XML, XSL > Выбрать всех предков (от корня до текущего) |
| Автор: Greendrake 12.5.2006, 17:41 |
| Задача наверно довольно распространённая, но решений пока не нашёл. В XML-дереве у каждого узла уникальный ID в качестве атрибута - по нему выдираем этот узел. А как выдрать всех его предков до корня одним xPath-выражением, чтобы получить массив нод? |
| Автор: Beard 13.5.2006, 00:06 |
| Для этого нужно использовать ось http://www.w3.org/TR/xpath#axes |
| Автор: Greendrake 13.5.2006, 08:52 | ||||
А как именно? Вот так например не пашет:
|
| Автор: Beard 14.5.2006, 10:43 | ||||
Если мы в контексте этого узла, то так:
если вообще все одним выражением, то, например, можно так:
- выбрать все узлы, которые являются парентами для узла с атрибутом id равным ID |
| Автор: Greendrake 14.5.2006, 20:06 | ||||
Во, то - что доктор прописал, спасибо! |
| Автор: georgik87 9.7.2013, 07:23 | ||||
| у меня аналогичная задачка, но только приведенные примеры не работают(( например есть дерево
нужно в результате получить
нужно отфильтровать элементы ССС с полным путем. какое должно быть Xpath-выражение? |
| Автор: Beard 9.7.2013, 13:23 | ||
| Т.е. надо оставить все элементы, которые имеют в пути элемент ССС? Тогда:
|
| Автор: georgik87 9.7.2013, 14:29 | ||||
Спасибо, а можно узнать какими вы инструментами пользуетесь для просмотра результата запроса? |
| Автор: georgik87 9.7.2013, 15:13 | ||
да, я как раз там смотрел программы, особенно понравилась статья http://www.ibm.com/developerworks/ru/libra...ools/index.html там много писано программ, в том числе естьи онлайн инструменты так, вот)) я хотел чтобы вы увидели результат того выражения, он не такой как мне нужен, и я думал что может тем чем я пользуюсь глючит, но нет, он совсем не такой или я не туда смотрю)) |
| Автор: Beard 9.7.2013, 16:03 | ||||
Так уточните, что Вам нужно? Из примера я понял, что хочется получить все элементы, содержащие в своем пути элемент CCC, т.е.:
что и делает приведенный xpath. |
| Автор: georgik87 9.7.2013, 20:50 | ||||||||
да, тот запрос выполнял то что вы написали, но мне нужно оставить элементы ССС со всеми предками, т.е
и если смотреть результат запроса например в http://codingcraft.ru/resources/XPATHCONSOLE/XPathConsole_exe.rar или в XML Copy Editor то результат должен быть
|
| Автор: diadiavova 9.7.2013, 22:18 |
Выражения XPath возвращают наборы узлов, то есть линейные коллекции. Если тебе нужно на выходе получить XML документ, то XPath тут не поможет - нужен XSLT или XQuery. |
| Автор: georgik87 10.7.2013, 08:52 | ||||
Спасибо всем)) похоже я хочу невозможно от XPath выражение дает близкий результат
может быть все-таки есть способ в контексте предков ССС исключить узлы не ССС? |
| Автор: diadiavova 11.7.2013, 08:41 | ||
Перечитал фразу несколько раз, но её смысл всё равно от меня ускользнул. Я уже написал, что твоя задача решается средствами xslt или xquery. Если данная фраза означает получение того документа, о котором ты написал вначале, то эти языки и есть способы получения такого результата. Если же тебе надо получить что-то другое, непременно используя xpath, то сформулируй точно, что именно ты хочешь получить. |