powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / XMLQUERY+first symbol as UPPER
3 сообщений из 3, страница 1 из 1
XMLQUERY+first symbol as UPPER
    #36819566
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем доброго времени суток!

экспериментальным путем определил, что функция XMLQUERY не может найти элемент схемы, если он не в нижнем регистре.
например есть элемент "Обмен" в столбце XML_DATA
если попытаться вытащить значение этого элемента
Код: plaintext
1.
SELECT ID, FROM_FILE, XMLQUERY('$XML_DATA/Обмен')
   FROM DB2ADMIN.XML_FROM_FILES
то результат ХМЛ-столбца - пустой

если сохранить в столбце ХМЛ-структуру с названиями элементов в нижнем регистре
Код: plaintext
1.
2.
3.
4.
INSERT INTO DB2ADMIN.XML_FROM_FILES (FROM_FILE,XML_DATA)
   			VALUES ( '$fname',XMLPARSE(
   					 document cast('<обмен><элемент>апираирари</элемент></обмен>' as Clob) preserve whitespace
                   			  )
   		  		    );
то после выполнения селекта
Код: plaintext
1.
SELECT ID, FROM_FILE, XMLQUERY('$XML_DATA/обмен')
   FROM DB2ADMIN.XML_FROM_FILES
выдает предварительно сохраненное значение

может кто уже сталкивался и знает как победить ?
...
Рейтинг: 0 / 0
XMLQUERY+first symbol as UPPER
    #36821283
BuryCommoner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал:
Код: plaintext
1.
2.
3.
INSERT INTO u.temp_xml (xmlvalue) VALUES (XMLPARSE(document cast('<Обмен><элемент>апираирари</элемент></Обмен>' as Clob) preserve whitespace));
INSERT INTO u.temp_xml (xmlvalue) VALUES (XMLPARSE(document cast('<обмен><элемент>апираирари</элемент></обмен>' as Clob) preserve whitespace));
SELECT XMLQUERY('$XMLVALUE/Обмен') FROM u.temp_xml;
Всё работает. DB2 Express-C 9.7.
Можете выложить более полный код?

Если это выполняется в теле хранимой процедуры, то бывают моменты, когда тип отличается. Например, в переменной $x лежит <обмен><элемент>blblbl</элемент></обмен> и она типа XML, то XPath для элемента выглядит так: $x/элемент. Если же эта переменная типа XMLDOCUMENT, то XPath будет такой: $x/обмен/элемент.
...
Рейтинг: 0 / 0
XMLQUERY+first symbol as UPPER
    #36823080
jack_nsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
изначально неправильно поставил вопрос

XMLQUERY не находит элемент, если у корневого элемента присутствуют атрибуты

например из сохраненного XML-поля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<supplierinfo xmlns="http://posample.org" Sid="100">
  <name>Harry Suppliers</name>
  <addr country="Canada">
    <street> 50  EastCreek</street>
    <city>Markham</city>
    <prov-state>Ontario</prov-state>
    <pcode-zip>N9C 3T6</pcode-zip>
  </addr>
</supplierinfo>
запрос
Код: plaintext
1.
SELECT sid,xmlcast(xmlquery('$ADDR/supplierinfo/name/text()') as varchar( 35 ))
   FROM "USER".SUPPLIERS AS SUPPLIERS
вернет пустые значения

выход из ситуации уже нашел
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / XMLQUERY+first symbol as UPPER
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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