|
Модераторы: diadiavova |
|
Greendrake |
|
|||
Опытный Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
Задача наверно довольно распространённая, но решений пока не нашёл.
В XML-дереве у каждого узла уникальный ID в качестве атрибута - по нему выдираем этот узел. А как выдрать всех его предков до корня одним xPath-выражением, чтобы получить массив нод? Это сообщение отредактировал(а) Greendrake - 12.5.2006, 17:42 |
|||
|
||||
Beard |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 7 Всего: 9 |
Для этого нужно использовать ось ancestor
|
|||
|
||||
Greendrake |
|
||||
Опытный Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
А как именно? Вот так например не пашет:
|
||||
|
|||||
Beard |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 7 Всего: 9 |
Если мы в контексте этого узла, то так:
если вообще все одним выражением, то, например, можно так:
- выбрать все узлы, которые являются парентами для узла с атрибутом id равным ID |
||||
|
|||||
Greendrake |
|
||||
Опытный Профиль Группа: Участник Сообщений: 364 Регистрация: 14.7.2005 Репутация: нет Всего: 6 |
Во, то - что доктор прописал, спасибо! |
||||
|
|||||
georgik87 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.7.2013 Репутация: нет Всего: нет |
у меня аналогичная задачка, но только приведенные примеры не работают((
например есть дерево
нужно в результате получить
нужно отфильтровать элементы ССС с полным путем. какое должно быть Xpath-выражение? |
||||
|
|||||
Beard |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 7 Всего: 9 |
Т.е. надо оставить все элементы, которые имеют в пути элемент ССС?
Тогда:
|
|||
|
||||
georgik87 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.7.2013 Репутация: нет Всего: нет |
Спасибо, а можно узнать какими вы инструментами пользуетесь для просмотра результата запроса? |
||||
|
|||||
Beard |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 7 Всего: 9 |
Я давно не работаю с XML-технологиями, так что ничего специализированного посоветовать не могу, а в тех редких случаях, когда надо что-нибудь сваять, использую установленную IDE (Idea/Eclipse), либо что-нибудь вебное, типа этого редактора, либо, на худой конец, пишу код. Посмотрите лучше здесь - возможно там что-нибудь посоветуют. |
|||
|
||||
georgik87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.7.2013 Репутация: нет Всего: нет |
да, я как раз там смотрел программы, особенно понравилась статья http://www.ibm.com/developerworks/ru/libra...ools/index.html там много писано программ, в том числе естьи онлайн инструменты так, вот)) я хотел чтобы вы увидели результат того выражения, он не такой как мне нужен, и я думал что может тем чем я пользуюсь глючит, но нет, он совсем не такой или я не туда смотрю)) Это сообщение отредактировал(а) georgik87 - 9.7.2013, 15:23 |
|||
|
||||
Beard |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 228 Регистрация: 5.7.2005 Где: Санкт-Петербург Репутация: 7 Всего: 9 |
Так уточните, что Вам нужно? Из примера я понял, что хочется получить все элементы, содержащие в своем пути элемент CCC, т.е.:
что и делает приведенный xpath. |
|||
|
||||
georgik87 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.7.2013 Репутация: нет Всего: нет |
да, тот запрос выполнял то что вы написали, но мне нужно оставить элементы ССС со всеми предками, т.е
и если смотреть результат запроса например в http://codingcraft.ru/resources/XPATHCONSO...Console_exe.rar или в XML Copy Editor то результат должен быть
Это сообщение отредактировал(а) georgik87 - 9.7.2013, 20:51 |
||||||||
|
|||||||||
diadiavova |
|
|||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Группа: Модератор Сообщений: 5820 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Выражения XPath возвращают наборы узлов, то есть линейные коллекции. Если тебе нужно на выходе получить XML документ, то XPath тут не поможет - нужен XSLT или XQuery. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
georgik87 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 8.7.2013 Репутация: нет Всего: нет |
Спасибо всем)) похоже я хочу невозможно от XPath выражение дает близкий результат
может быть все-таки есть способ в контексте предков ССС исключить узлы не ССС? Это сообщение отредактировал(а) georgik87 - 10.7.2013, 08:52 |
||||
|
|||||
diadiavova |
|
|||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Группа: Модератор Сообщений: 5820 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 22 Всего: 142 |
Перечитал фразу несколько раз, но её смысл всё равно от меня ускользнул. Я уже написал, что твоя задача решается средствами xslt или xquery. Если данная фраза означает получение того документа, о котором ты написал вначале, то эти языки и есть способы получения такого результата. Если же тебе надо получить что-то другое, непременно используя xpath, то сформулируй точно, что именно ты хочешь получить. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
Правила форума "XML/XSLT" | |
|
Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась. Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение. Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел Желаем удачи в Вашем деле! Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | XML, XSL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |