Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка схемы  [new]
cha0ss
Member

Откуда: г. Димитровград, ООО "АИС Город"
Сообщений: 144
Подскажите, что не нравится SQL серверу?

create xml schema COLLECTION ApartmentOwnersData
AS
'<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ArrayOfApartmentOwnerData" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:app1="http://my.ru/sn/apartmentowners">
  <xs:import namespace="http://aisgorod.ru/sn/apartmentowners" schemaLocation="Owners_app1.xsd" />
  <xs:element name="ArrayOfApartmentOwnerData" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="ApartmentOwnerData">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="app1:FIO" minOccurs="0" />
              <xs:element ref="app1:ApartmentSquare" minOccurs="0" />
              <xs:element ref="app1:ApartmentShare" minOccurs="0" />
              <xs:element ref="app1:ApartmentNo" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>'
GO

Выдает ошибку: The name specified is not a valid XML name :'http://aisgorod.ru/sn/apartmentowners:FIO'
Схему получил с помощью утилиты xsd.exe
13 июл 11, 11:49    [10966432]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка схемы  [new]
cha0ss
Member

Откуда: г. Димитровград, ООО "АИС Город"
Сообщений: 144
Прокатило с немного изменным вариантом:

create xml schema COLLECTION ApartmentOwnersData
AS
'<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" targetNamespace="http://aisgorod.ru/sn/apartmentowners" xmlns:mstns="http://aisgorod.ru/sn/apartmentowners" xmlns="http://aisgorod.ru/sn/apartmentowners" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
  <xs:element name="ApartmentOwnersResponse">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MaxAddressLevel" type="xs:string" minOccurs="0" />
        <xs:element name="ApartmentOwnerDatas" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ApartmentOwnerData" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="FIO" type="xs:string" minOccurs="0" />
                    <xs:element name="ApartmentSquare" type="xs:string" minOccurs="0" />
                    <xs:element name="ApartmentShare" type="xs:string" minOccurs="0" />
                    <xs:element name="ApartmentNo" type="xs:string" minOccurs="0" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="ApartmentOwnersResponse" />
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>'
GO

Но теперь возник другой вопрос, как выбрать nod-ы из sql, если указано пространство имен:

скажем запрос выдает 0 строчек:

DECLARE @xml xml = '<House xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://my.ru/houses">
  <Apartment>
     <id>1</id>
  </Apartment>
</House>'

	SELECT
		r.value('(id/text())[1]', 'nvarchar(255)') as [id]
	FROM @xml.nodes('/House/Apartment') T(r)

Как указать в запросе пространство имен http://my.ru/houses?
13 июл 11, 14:10    [10967502]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка схемы  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
cha0ss,

DECLARE @xml xml = '<House xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://my.ru/houses">
  <Apartment>
     <id>1</id>
  </Apartment>
</House>'
;WITH XMLNAMESPACES( default 'http://my.ru/houses'	)
	SELECT
		r.value('(id/text())[1]', 'nvarchar(255)') as [id]
	FROM @xml.nodes('/House/Apartment') T(r)
13 июл 11, 16:10    [10968492]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка схемы  [new]
cha0ss
Member

Откуда: г. Димитровград, ООО "АИС Город"
Сообщений: 144
Ken@t,

Спасибо, заработало.
13 июл 11, 16:51    [10968882]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить