powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Работа с колонкой таблицы xmltype
24 сообщений из 24, страница 1 из 1
Работа с колонкой таблицы xmltype
    #39628636
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Возможно кто-то сталкивался с этим:
Код: plsql
1.
2.
3.
create table xxx (yyy xmltype null);
Insert into xxx (yyy)
values (xmltype('<a><t>  </t></a>'));


далее, делая select получаю xml совсем другой:
Код: xml
1.
<a><t/></a>


кто нибудь подскажет, почему так происходит?
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628638
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать: oracle версии 11 и выше
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628648
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusпочему так происходит?Канонизация.
Whitespace-ы в XML - незначащие.
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628659
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicBaltikaplusпочему так происходит?Канонизация.
Whitespace-ы в XML - незначащие.

а вы могли бы прислать ссылку на w3.org где это описывается? К примеру в xsd я могу описать тег как стоковый и передавать в нем пробел. И везде это будет нлрмально восприниматься. Даже после xslt пробел не пропадет. Более того, я могу описать eNumerator с знаяением пробела и это тоже везде пройдет по синтаксису. Каким образом в этом случае мне установить знаяение тега пробел, из списка enumerator?
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628660
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplus,
можно было и таблицу не делать:
Код: plsql
1.
2.
3.
4.
select xmltype('<a><t>  </t></a>') from dual
<a>
  <t/>
</a>
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628662
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLerBaltikaplus,
можно было и таблицу не делать:
Код: plsql
1.
2.
3.
4.
select xmltype('<a><t>  </t></a>') from dual
<a>
  <t/>
</a>


на моей версии oracle пробелы пропадают только после insert в таблицу
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628666
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusа вы могли бы прислать ссылку на w3.org где это описывается?Прислать не могу.
https://www.w3.org/TR/xml/#sec-white-space
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628670
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplus Каким образом в этом случае мне установить знаяение тега пробел?

Код: plsql
1.
2.
3.
4.
5.
6.
<a>
  <t xml:space="preserve">  </t>
</a>
<a>
  <t xml:space="preserve">  </t>
</a>
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628672
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLer,
Опечатался, д.б.
Код: plsql
1.
2.
3.
4.
select xmltype('<a><t xml:space ="preserve" >  </t></a>') from dual
<a>
  <t xml:space="preserve">  </t>
</a>
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628674
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicBaltikaplusа вы могли бы прислать ссылку на w3.org где это описывается?Прислать не могу.
https://www.w3.org/TR/xml/#sec-white-space
Английский конечно мне не родной язык :-) но вроде как там речь идет о пробелах между тегами, а не в их значении...
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628682
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusно вроде как там речь идет о пробелах между тегами
такой проблемы для xml нет в принципе, сериализация рулит
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628683
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusно вроде как там речь идет о пробелах между тегами, а не в их значении...Тебе показалось.
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628685
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLer<t xml:space="preserve"> </t>результат экстракта зависит от параметров сессии, формата хранения, и функции этого экстракта. Лучше использовать , хотя оно тоже может исказиться после двойного преобразования.
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628687
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-Лучше использовать
Код: sql
1.
&#32;
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628688
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusно вроде как там речь идет о пробелах между тегами
Код: plsql
1.
2.
3.
4.
select xmltype('<a><t xml:space ="preserve" >  </t></a>').getclobval(2,10) from dual
<a>
          <t xml:space="preserve">  </t>
</a>


Код: plsql
1.
2.
3.
4.
select xmltype('<a><t xml:space ="preserve" >  </t></a>').getclobval(1,1) from dual
<a>
 <t xml:space="preserve">  </t>
</a>
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628694
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда почему такое поведение не характерно везде:

Код: plsql
1.
2.
3.
insert into xxx (yyy)
select xmlelement("a",xmlelement("b", '  '))
from dual


если выполнить запрос без insert, то будет видно, что пробелы есть, но после insert пропадают
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628697
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2--2-Лучше использовать
Код: sql
1.
&#32;



Вы продаете или покупаете? :)

Во-первых, это был демонстрационный пример, показывающий как управлять XML процессором. Oracle постольку-поскольку.
Во-вторых, лучше-хуже штука субьективная. По моему скромному мнению источнику, формирующему XML, виднее что он передает.

Код: plsql
1.
2.
3.
4.
<a><t xml:space ="default">  </t></a>
<a>
  <t xml:space="default"/>
</a>
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628702
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-XMLer<t xml:space="preserve"> </t>результат экстракта зависит от параметров сессии, формата хранения, и функции этого экстракта. Лучше использовать , хотя оно тоже может исказиться после двойного преобразования.
Поясни, пожалуйста, что ты имеешь в виду?
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628705
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BaltikaplusТогда почему такое поведение не характерно везде:

Код: plsql
1.
2.
3.
insert into xxx (yyy)
select xmlelement("a",xmlelement("b", '  '))
from dual


если выполнить запрос без insert, то будет видно, что пробелы есть, но после insert пропадают

Потому что сказанное выше относилось к XML процессору. По определению www3 это софт, позволяющий ЧИТАТЬ XML
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628706
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLerBaltikaplusТогда почему такое поведение не характерно везде:

Код: plsql
1.
2.
3.
insert into xxx (yyy)
select xmlelement("a",xmlelement("b", '  '))
from dual


если выполнить запрос без insert, то будет видно, что пробелы есть, но после insert пропадают

Потому что сказанное выше относилось к XML процессору. По определению www3 это софт, позволяющий ЧИТАТЬ XML

не очень понятно, чем чтение xml, сформированного в запросе, отличается от чтения этого же xml после записи в таблицу?
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628708
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusесли выполнить запрос без insert, то будет видно, что пробелы есть, но после insert пропадают
так и должно быть:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
with t as
(select xmlelement("a",xmlelement("b", '  ')).getclobval() x  from dual)
select x,  xmltype(x) 
from t
<a><b>  </b>
<a>
  <b/>
</a>


Процессор отработал по дефолтным правилам. Хочешь их переоперделить - сделай это при формировании xml документа
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628709
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Baltikaplusне очень понятно, чем чтение xml, сформированного в запросе, отличается от чтения этого же xml после записи в таблицу?
Ничем не отличается, это ты почему то решил что insert в таблицу на что то влияет
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628717
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLer-2-пропущено...
результат экстракта зависит от параметров сессии, формата хранения, и функции этого экстракта. Лучше использовать , хотя оно тоже может исказиться после двойного преобразования.
Поясни, пожалуйста, что ты имеешь в виду?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table t(
x1 xmltype,
x2 xmltype)
xmltype x1 store as clob
xmltype x2 store as binary xml;

insert into t values (xmltype('<a>  </a>'), xmltype('<a>  </a>'));
insert into t values (xmltype('<a>&#32; </a>'), xmltype('<a>&#32; </a>'));
insert into t values (xmltype('<a xml:space="preserve">  </a>'), xmltype('<a xml:space="preserve">  </a>'));
commit;

select xmlserialize(document t.x1 as varchar2(40)) x1, xmlserialize(document t.x2 as varchar2(40)) x2, dump(xt1.".") d1, dump(xt2.".") d2
from t, xmltable('/a' passing t.x1 columns "." varchar2(20)) xt1, xmltable('/a' passing t.x2 columns "." varchar2(20)) xt2;

X1                            X2                             D1                 D2
----------------------------- ------------------------------ ------------------ ---------------
<a>  </a>                     <a/>                           Typ=1 Len=2: 32,32 NULL
<a>&#32; </a>	              <a>  </a>                      Typ=1 Len=2: 32,32 Typ=1 Len=2: 32,32
<a xml:space="preserve"> </a> <a xml:space="preserve">  </a> Typ=1 Len=2: 32,32 NULL

drop table t;

"Нехранение" тоже может быть двух типов - из строки и генерация с помощью xmlelement и др. На работу с xml также влияет ассоциация с xml-схемой.
...
Рейтинг: 0 / 0
Работа с колонкой таблицы xmltype
    #39628733
Baltikaplus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, спасибо всем за помощь. Хотя я все равно не согласен, что поведение ORACLE в этой части - адекватное, но использование директивы помогло и является для меня приемлемым обходным путем.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Работа с колонкой таблицы xmltype
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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