Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XPath вернуть имя повторяющегося узла, повторяющиеся узлы в xml 
:(
    Опции темы
motoden
Дата 30.1.2013, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.8.2008

Репутация: нет
Всего: нет



Доброго времени суток, уважаемые товарищи!
Помогите пожалуйста написать XPath-запрос который бы мог мне вернуть имена повторяющихся друг за другом узлов в документе XML.
Например, в этом примере (взятом мной из википедии отсюда):
Код

<html>
 <body>
    <div>Первый слой
      <span>блок текста в первом слое</span>
    </div>
    <div>Второй слой</div>
    <div>Третий слой
      <span class="text">первый блок в третьем слое</span>
      <span class="text">второй блок в третьем слое</span>
      <span>третий блок в третьем слое</span>
    </div>
    <img />
  </body>
</html>

мне нужно чтобы XPath-запрос возвращал тэг span и тэг div. Только эти тэги повторяются в документе друг за другом.
Я, правда, не совсем уверен возможно ли это. Возможо?

Добавлено через 1 минуту и 31 секунду
Вот такая строка:
Код

//*[name(.) = name(following-sibling::*)]

Возвращает также и всё содержимое во всех найденных повторяющихся друг за другом узлах. А как можно было бы без содержимого?
PM MAIL   Вверх
diadiavova
Дата 30.1.2013, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(motoden @  30.1.2013,  01:00 Найти цитируемый пост)
А как можно было бы без содержимого?

Никак. Просто этот язык не знает такого типа данных, как коллекция строк. Данная конструкция возвращает набор узлов, а их имена уже можно извлечь при обработке этого набора, передавая узлы функции name().


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
motoden
Дата 30.1.2013, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 3.8.2008

Репутация: нет
Всего: нет



Цитата

а их имена уже можно извлечь при обработке этого набора, передавая узлы функции name(). 


Вы не могли бы показать запрос?
PM MAIL   Вверх
diadiavova
Дата 30.1.2013, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Какой именно? Если надо вывести в документ список имён, то обработку можно выполнить тем же фор-ич и там уже обрабатывать. Ну, например, вот такая конструкция 
Код

<xsl:for-each select="/*[name(.) = name(following-sibling::*)]">
    <xsl:value-of select="name(.)"/>;
</xsl:for-each>
выведет список имён элементов, возвращаемых указанным выражением, разделённых точкой с запятой.



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.