powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XPath и xmlns
8 сообщений из 8, страница 1 из 1
XPath и xmlns
    #37429773
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" standalone="yes"?>
<sdnList xmlns:xsi="строка1" xmlns="строка2" xsi:schemaLocation="строка3">
  <publshInformation>
    <Publish_Date> 02 / 11 / 2010 </Publish_Date>
    <Record_Count> 2 </Record_Count>
  </publshInformation>
  <sdnEntry>
    <uid> 111 </uid>
    <lastName>Last Name1</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid> 222 </uid>
    <lastName>Last Name1</lastName>
  </sdnEntry>
</sdnList>
Надо:
Посредством XPath выбрать множество узлов <sdnEntry>.
Использую такой XPath:
Код: plaintext
'/sdnList/sdnEntry'
Не работает, т.е. не выбирает ничего.
Если убрать
Код: plaintext
xmlns="строка2"
то выбирает то, что надо.
Как написать правильный XPath для текущего XML?
Использую средства Oracle. Следующий код
Код: plaintext
extract(value(f), '/sdnList/sdnEntry')
находится в представлении (VIEW). Поэтому хотелось бы обойтись только этой одной строкой XPath.
...
Рейтинг: 0 / 0
XPath и xmlns
    #37429814
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Царь в голове,

В XPath - local-name()
В MSXML - SelectionNamespaces
В оракле - не знаю...
...
Рейтинг: 0 / 0
XPath и xmlns
    #37429822
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
refregВ XPath - local-name()Бяка

2Царь в голове, уточните где вы хотите это использовать
...
Рейтинг: 0 / 0
XPath и xmlns
    #37430370
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_2Царь в голове, уточните где вы хотите это использовать
В своем коде Оракл позволяет работать с XML. Он имеет соответствующие типы данных для таблиц и несколько пакетов и функций для использования в SQL. Мне нужно такое выражение XPath, которое не нуждается в дополнительных настройках, т.е. само по себе дает нужный результат.
Я в XML не силен, поэтому прошу писать подробнее по возможности.
...
Рейтинг: 0 / 0
XPath и xmlns
    #37430560
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот самодостаточный код для Оракла
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
select extractvalue (value (a), '/sdnEntry/uid') as auid
      ,extractvalue (value (a), '/sdnEntry/lastName') as lastName
from table(xmlsequence(extract(xmltype('<?xml version="1.0" standalone="yes"?>
<sdnList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' 
--|| '    xmlns="http://tempuri.org/sdnList.xsd" ' -- ***
|| '        xsi:schemaLocation="http://tempuri.org/sdnList.xsd OFAC_SCH.xsd">
  <publshInformation>
    <Publish_Date>02/10/2010</Publish_Date>
    <Record_Count>4301</Record_Count>
  </publshInformation>
  <sdnEntry>
    <uid>11</uid>
    <lastName>name1</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid>22</uid>
    <lastName>name2</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid>33</uid>
    <lastName>name3</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid>44</uid>
    <lastName>name4</lastName>
  </sdnEntry>
</sdnList>'), '/sdnList/sdnEntry'))) a
;
В таком виде возвращает 4 строки. Если раскомментировать строчку *** то перестает возвращать строки.
...
Рейтинг: 0 / 0
XPath и xmlns
    #37430596
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю,
Код: plaintext
xmlns="строка"
устанавливает namespace по умолчанию. Вопрос в том, как учесть это в XPath.
...
Рейтинг: 0 / 0
XPath и xmlns
    #37430644
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Царь в голове,

4117966

PS. У extract есть три параметр, третий как раз пространство имен...
...
Рейтинг: 0 / 0
XPath и xmlns
    #37430709
Фотография Царь в голове
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура! Заработало!
refreg, спасибо!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
select extractvalue (value (a), '/sdnEntry/uid', p.ns) as auid
      ,extractvalue (value (a), '/sdnEntry/lastName', p.ns) as lastName
--*
from (select 'xmlns="string2"' as ns from dual) p,
table(xmlsequence(extract(xmltype('<?xml version="1.0" standalone="yes"?>
<sdnList xmlns:xsi="string1" ' 
|| '    xmlns="string2" ' -- ***
|| '        xsi:schemaLocation="string3">
  <publshInformation>
    <Publish_Date>02/10/2010</Publish_Date>
    <Record_Count>4301</Record_Count>
  </publshInformation>
  <sdnEntry>
    <uid>11</uid>
    <lastName>name1</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid>22</uid>
    <lastName>name2</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid>33</uid>
    <lastName>name3</lastName>
  </sdnEntry>
  <sdnEntry>
    <uid>44</uid>
    <lastName>name4</lastName>
  </sdnEntry>
</sdnList>'), '/sdnList/sdnEntry', p.ns))) a
;
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XPath и xmlns
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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