Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / работа с XML / 22 сообщений из 22, страница 1 из 1
13.02.2009, 12:19
    #35815651
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Памагите! В смысле подскажите плиз куда рыть:

IDS 11.50.FC2DE
MACOS X версия 10.5.6

Клиент eSQLEditor 5.17b
собственно скрипт, который дает ошибку

create table currency (code char(3),brief char(4),name char(20));
insert into currency values ('810','RUR','Росиийский рубль');
insert into currency values ('840','USD','Доллар США');
insert into currency values ('978','EUR','Евро');

create table tab01 (number serial, xdoc lvarchar(10240));

insert into tab01
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

select idsxmlparse(xdoc) from tab01;

у меня экзистенциальный ступор - функция genxmlquery генерит XML,
который функция idsxmlparse считает кривым.

В xdoc лежит вот что:
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Росиийский рубль </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Доллар США </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Евро </name>
</row>
</currency_set>

Визуально в XML кривизны не вижу.
...
Рейтинг: 0 / 0
13.02.2009, 12:21
    #35815667
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
для того, чтобы были доступны функции XML делаю команду

onmode -p +1 idsxmlvp
...
Рейтинг: 0 / 0
13.02.2009, 12:22
    #35815668
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
почему lvarchar ? вроде clob должен быть
...
Рейтинг: 0 / 0
13.02.2009, 12:35
    #35815720
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Журавлев Денис,

create table tab02 (number serial, xdoc clob);

insert into tab02
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

ошибка -937
...
Рейтинг: 0 / 0
13.02.2009, 12:37
    #35815729
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
genxmlquery clob ()
...
Рейтинг: 0 / 0
13.02.2009, 12:39
    #35815740
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
insert into tab02
select 0,genxmlqueryclob('currency_set','select * from currency')
from systables where tabid == 1;

12:36:37 00:00:00.031 3 -9810 SQL error: Smart-large-object error.
-12053 Smart Large Objects: No sbspace number specified.
...
Рейтинг: 0 / 0
13.02.2009, 12:44
    #35815756
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
cpr
-12053 Smart Large Objects: No sbspace number specified.
эта ошибка потому что нет sbspace

В первом варианте отпарсить нельзя, потому что кодировка фиг знает какая, заголовка нет ,попробуй genXMLQueryHdr
...
Рейтинг: 0 / 0
13.02.2009, 12:51
    #35815787
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
drop table tab01;
create table tab01(number serial, xdoc lvarchar(10240));

insert into tab01
select 0,genxmlqueryhdr('currency_set','select * from currency')
from systables where tabid == 1;

select idsxmlparse(xdoc)
from tab01;

в результате все то же самое
12:48:29 00:00:00.015 331 -8355 SQL error: Get SQL error message failure, reason -1228
Please see Informix error message documentation
...
Рейтинг: 0 / 0
13.02.2009, 12:53
    #35815793
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
если с заголовком, то получается вот что

<?xml version="1.0" encoding="ru_RU.866" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Росиийский рубль </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Доллар США </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Евро </name>
</row>
</currency_set>
...
Рейтинг: 0 / 0
13.02.2009, 12:56
    #35815805
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
а просто
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

что говорит?
...
Рейтинг: 0 / 0
13.02.2009, 13:00
    #35815820
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Журавлев Дениса просто
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

что говорит?

все хорошо говорит

(constant) (expression)
0 "<?xml version=""1.0"" encoding=""ru_RU.866"" ?>
<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"">
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Росиийский рубль </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Доллар США </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Евро </name>
</row>
</currency_set>"

это резалт в exel, потом через клипборд
...
Рейтинг: 0 / 0
13.02.2009, 13:06
    #35815844
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
проблема однако похоже в кодировке

скрипт без русских букв (и заголовка) сработал

drop table currency;
create table currency (code char(3),brief char(4),name char(20));
insert into currency values ('810','RUR','Rubl');
insert into currency values ('840','USD','Dollar');
insert into currency values ('978','EUR','Euro');

drop table tab01;
create table tab01(number serial, xdoc lvarchar(10240));

insert into tab01
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

select idsxmlparse(xdoc)
from tab01;


Это получается, что если у меня БД с 866 , то XML работать не будет?
...
Рейтинг: 0 / 0
13.02.2009, 13:08
    #35815854
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Подскажите как DB_LOCALE определить, чтобы создать юникодную БД?
...
Рейтинг: 0 / 0
13.02.2009, 13:47
    #35816001
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
cpr
Это получается, что если у меня БД с 866 , то XML работать не будет?Получается в саппорт надо. С другой стороны нафиг вообще xml внутри субд.
...
Рейтинг: 0 / 0
13.02.2009, 14:00
    #35816050
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Журавлев Денисcpr
Это получается, что если у меня БД с 866 , то XML работать не будет?Получается в саппорт надо. С другой стороны нафиг вообще xml внутри субд.

Это ж я девелоперэдишн скчал напопробовать, так что с сапортом пока мимо.

XML мне как раз нужен не внутри, а для передачи в другую БД.
...
Рейтинг: 0 / 0
13.02.2009, 15:26
    #35816394
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
я делаю так, ибо остальные варианты источники геморроев

Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
xml.vbs

On Error resume next

set oXML=CreateObject("Microsoft.XMLDOM")
set pi=oXML.createProcessingInstruction("xml"," version='1.0' encoding='UTF-8'")
oXML.appendChild(pi)

set rootnode=oXML.createElement("query")
oXML.appendChild(rootnode)

set cx=createobject("ADODB.Connection")
if Err.Number<> 0  then
   WScript.Stdout.Write "Error on createobject ADODB.Connection"
else
   cx.connectionstring="dsn=test_odbc;uid=usr;pwd=passwd;"
   cx.open
   if Err.Number<> 0  then
      WScript.Stdout.Write "Error on connect to DB"
   else
      set cr=createobject("ADODB.Recordset")
      set cr.activeconnection=cx
      cr.open "select * from systables"
      if Err.Number<> 0  then
         WScript.Stdout.Write "Error on Select"
      else
        while cr.EOF=false
          set rownode=oXML.createElement("row")
          rootnode.appendChild(rownode)
          for each x in cr.fields
            set fieldnode=oXML.createElement(x.name)
            fieldnode.text=x.value
            rownode.appendChild(fieldnode)
            Set fieldnode = nothing
            if Err.Number<> 0  then
              WScript.Stdout.Write "Errr"
            else
            end if
          next
          Set rownode = nothing  
          cr.MoveNext
        wend
      end if
      cr.close
   end if
   cx.close
end if
oXML.save("foobar.xml")


cscript /nologo xml.vbs
...
Рейтинг: 0 / 0
13.02.2009, 15:51
    #35816485
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
cprПодскажите как DB_LOCALE определить, чтобы создать юникодную БД?
у нас ru_ru.utf8
...
Рейтинг: 0 / 0
13.02.2009, 16:48
    #35816695
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Журавлев Денис,

не знаю насчет геммороя, но уменя исходное требование - использовать SPL.
...
Рейтинг: 0 / 0
13.02.2009, 16:52
    #35816711
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
Журавлев Денис
В первом варианте отпарсить нельзя, потому что кодировка фиг знает какая, заголовка нет ,попробуй genXMLQueryHdr

А вот кстати почему нельзя?
Все элементы имеют имена в базовом asci наборе. А содержимое элементов на парсинг не влияет.
...
Рейтинг: 0 / 0
13.02.2009, 16:58
    #35816731
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
cprА вот кстати почему нельзя?
Все элементы имеют имена в базовом asci наборе. А содержимое элементов на парсинг не влияет.содержимое мешает отличить utf-8 от utf-16
...
Рейтинг: 0 / 0
16.02.2009, 14:51
    #35819802
cpr
cpr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
И все равно я чего то не понимаю.

функция genxmlqueryhdr генерит вот что

<?xml version="1.0" encoding="ru_RU.866" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Rubl </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Dollar </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Euro </name>
</row>
</currency_set>

Если из документа убрать строку
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
и исправить ru_RU.866 на Cp866
то документ well-formed.
Может я чего то не понимаю, но зачем генерить неправильный заголовок?
...
Рейтинг: 0 / 0
16.02.2009, 15:09
    #35819879
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с XML
cpr
Может я чего то не понимаю, но зачем генерить неправильный заголовок?Индусы.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / работа с XML / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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