Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 for xml auto  [new]
for xml auto
Guest
CREATE TABLE [dbo].[xxxt](
	[id_xxx] [int] NOT NULL,
	[xxx] [varchar](50) NOT NULL,
	[zzz] [float] NULL,
	[ttt] [int] NULL,
	[ddd] [datetime] NULL,
	[nnn] [nvarchar](500) NULL
)

select * from xxxt
for xml auto, xmldata

<Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <ElementType name="xxxt" content="empty" model="closed">
    <AttributeType name="id_x005F_xxx" dt:type="i4" />
    <AttributeType name="xxx" dt:type="string" />
    <AttributeType name="zzz" dt:type="r8" />
    <AttributeType name="ttt" dt:type="i4" />
    <AttributeType name="ddd" dt:type="dateTime" />
    <AttributeType name="nnn" dt:type="string" />
    <attribute type="id_x005F_xxx" />
    <attribute type="xxx" />
    <attribute type="zzz" />
    <attribute type="ttt" />
    <attribute type="ddd" />
    <attribute type="nnn" />
  </ElementType>
</Schema>

автор
Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)


Вопрос: откуда взялось AttributeType name="id_x005F_xxx" и что надо сделать, чтобы там всегда было id_xxx ????
15 авг 11, 13:33    [11119739]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Переставьте ID в конец наименования поля (не ID_xxx, а xxx_ID) или используете алиас этой колонки
С уважением, Алексей
15 авг 11, 13:52    [11119904]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
for xml autoo
Guest
Aleksey-K
Переставьте ID в конец наименования поля (не ID_xxx, а xxx_ID) или используете алиас этой колонки

Т.е. вместо "select *" мне надо написать "select id_xxx as id_xxx, .......", я правильно понял?

Хорошо, а могу я услышать о причинах такого, гм, спецэффекта?
15 авг 11, 14:11    [11120095]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
for xml autoo
Aleksey-K
Переставьте ID в конец наименования поля (не ID_xxx, а xxx_ID) или используете алиас этой колонки

Т.е. вместо "select *" мне надо написать "select id_xxx as id_xxx, .......", я правильно понял?

Хорошо, а могу я услышать о причинах такого, гм, спецэффекта?

Сам не пойму.. Это он символ нижнего подчеркивания "_" заменяет на его самого и добавляет Hex эквивалент (x005F). Но вот почему он так делает!!! Может реагирует на сочетания x (признак Hex формата). Попробуйте имя без x. (abc_ID)
С уважением, Алексей
15 авг 11, 14:17    [11120157]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
for xml autop
Guest
Т.е. он эскейпит подчерк в сочетании подчерк-хэ ?
Понял, спасибо!
15 авг 11, 14:27    [11120238]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
for xml autop
Т.е. он эскейпит подчерк в сочетании подчерк-хэ ?


МСДН
The underscore character does not need to be escaped unless it is followed by a character sequence that together with the underscore can be misinterpreted as an escape sequence when decoding the name. For example, Order_Details is not encoded, but Order_x0020_ is encoded as Order_x005f_x0020_.


Перво, так сказать, источник.
15 авг 11, 14:37    [11120311]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
SamMan, Да... век учись.
Виновата последовательность _x, хотя сам символ _ разрешен в QName
Жаль, что это не в BOL-е написано, а в HELP к .NET
С уважением, Алексей
15 авг 11, 15:35    [11120861]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
SamMan, Интересно, а можно вообще отключить использование такой автоматической escape последовальности, запускаемой символом _ ?.
С уважением, Алексей
15 авг 11, 15:44    [11120955]     Ответить | Цитировать Сообщить модератору
 Re: for xml auto  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
Aleksey-K
а можно вообще отключить использование такой автоматической escape последовальности, запускаемой символом _ ?


Начиная с этого момента лично моих познаний хватает лишь на более-менее достоверные предположения, кои сводятся к тому, что ноги вопроса растут из реализации парсера XML. Он является обычной DLL-либой (или может набором DLL - не суть важно) и инсталлится вместе с виндой и участвует в любых "XML-телодвижениях" на компьютере не важно откуда они проистекают (в частности этим объясняется тот факт что хелп по XML-ю нельзя найти в BOL полностью, а только в MSDN как более "системноориентированном" ресурсе).
Отсюда мое предположение что ответ на заданный вопрос - строго отрицателен. Это by design from MS, нравится нам это или нет. Не исключено (и даже скорей всего) в других реализациях этого нет, ибо нет в "чистом" платформонезависимом XML-стандарте.
15 авг 11, 18:48    [11122574]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить