powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Задачник XPath. Есть ли в природе ?
8 сообщений из 8, страница 1 из 1
Задачник XPath. Есть ли в природе ?
    #39034243
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Хочу глубоко погрузится в XPath. Чтобы решать самые сложные и замысловатые условия. Мало самому их придумывать.
Очевидно не имея большого опыта я не смогу придумать задачки, учитывающие именно неявные моменты, сложные которые изящно решаются сложным Xpath'ом.

Есть ли такой в природе ?
Гуглинг не нашел искомое. Найдена лишь куча примеров - но это не тоже самое, да и они слишком простые.
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39034324
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забей. Когда встанет конкретная прикладная задача - тогда и решишь.
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39034858
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

ну хз. в том и дело, что решаю топорно. Хочется отточить мастерство на задачниках.

Тут просто дело в том, что не так часто возникает эта задача, чтобы появился навык в процессе работы. Нужно, как говорится, "редко да метко".
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39080563
Den89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изучаю xpath и как то всё очень туго доходит.
http://xml.nsu.ru/xpath/xpath_location.xml
1.
есть xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd country="USA">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd country="UK">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>9.90</price>
  </cd>
  <cd country="USA">
    <title>Greatest Hits</title> 
    <artist>Dolly Parton</artist> 
    <price>9.90</price> 
  </cd>
</catalog>


Читаю туторил и хочу вывести только элементы catalog и вложенные на 1 уровень элементы.
Составил следующий запрос
Код: sql
1.
child::catalog


ожидаю увидеть:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<catalog>
  <cd country="USA">
  </cd>
  <cd country="UK">
  </cd>
  <cd country="USA">
  </cd>
</catalog>


тогда как результат:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<catalog>
  <cd country="USA">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd country="UK">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>9.90</price>
  </cd>
  <cd country="USA">
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <price>9.90</price>
  </cd>
</catalog>


Аналогичный результат, если написать
Код: xml
1.
descendant-or-self::catalog


Не понимаю, чем тогда "child::" отличается от "descendant-or-self" ?

2.
Запрос
Код: xml
1.
//ancestor-or-self::cd[title="Empire Burlesque"]


Ожидаю увидеть что-то вроде этого
Код: xml
1.
2.
3.
4.
<catalog>
  <cd country="USA">
  </cd>
</catalog>


а результат
Код: xml
1.
2.
3.
4.
5.
<cd country="USA">
  <title>Empire Burlesque</title>
  <artist>Bob Dylan</artist>
  <price>10.90</price>
</cd>


Не могу понять, как работают эти axis.

Первый опыт работы с xml.
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39080717
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den89
Код: sql
1.
child::catalog


Den89тогда как результат:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<catalog>
  <cd country="USA">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd country="UK">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>9.90</price>
  </cd>
  <cd country="USA">
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <price>9.90</price>
  </cd>
</catalog>

любой запрос возвращает узел со всеми его потомками. Возвращаемые узлы не редактируются. Т.е. в этом примере вернулся один узел catalog. Что получилось: у Вас текущий узел - корневой. Выражение
Код: sql
1.
child::catalog

говорит, что нужно вернуть все дочерние узлы первого уровня с именем catalog
Den89ожидаю увидеть:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<catalog>
  <cd country="USA">
  </cd>
  <cd country="UK">
  </cd>
  <cd country="USA">
  </cd>
</catalog>

почему Вы выбросили дочерние элементы, но не выбросили дочерние атрибуты? И то и то - дочерние элементы
Den89Запрос
Код: xml
1.
//ancestor-or-self::cd[title="Empire Burlesque"]

этим запросом вы говорите пробежаться по всем узлам документа, от каждого найденного узла подняться вверх в иерархии в поиске узла с именем cd, в котором есть элемент title со значением "Empire Burlesque"
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39082180
Den89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Больше спасибо, вроде разобрался. Axis получается влияет только на поиск и фильтрацию элементов, но сами элементы возвращаются как есть.
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39082204
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Den89,

Вот полезная ссылка с примерами Xpath. Может пригодится
https://msdn.microsoft.com/ru-ru/library/ms256086(v=vs.120).aspx
...
Рейтинг: 0 / 0
Задачник XPath. Есть ли в природе ?
    #39082375
Den89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,

Спасибо, поизучаю.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Задачник XPath. Есть ли в природе ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]