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

Лень - двигатель прогресса. Это аксиома.
И меня лично не вдохновляет необходимость писать РУЧКАМИ схему для загрузки SQLXMLBulkLoad.
Ну, т.е. пример. Данные
directionlist.xml
<?xml version="1.0" encoding="utf-8" ?> 
- <selena>
- <directions>
- <direction id="1">
  <name>Круизы</name> 
  </direction>
- <direction id="2">
  <name>Трансфер</name> 
  </direction>
  </directions>
  </selena>

Руками писанная схема для загрузки
directionlist_Schema.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
>
  <xsd:element name="selena" sql:is-constant="1">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="directions" sql:is-constant="1">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="direction" sql:relation="directions" sql:key-fields="id" maxOccurs="unbounded">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="name" type="xsd:string" maxOccurs="1"/>
                  </xsd:sequence>
                  <xsd:attribute name="id"   type="xsd:int" />
                </xsd:complexType>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Но ведь УЖЕ есть схема из источника
  <?xml version="1.0" encoding="utf-8" ?> 
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://project.selena-online.ru" targetNamespace="http://project.selena-online.ru" elementFormDefault="qualified">
- <xsd:element name="selena">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="directions" minOccurs="0" maxOccurs="1">
- <xsd:complexType>
- <xsd:annotation>
  <xsd:documentation>Список направлений туризма. Например: Круизы, Санатории, Базы отдыха, Детские лагеря, и т.д.</xsd:documentation> 
  </xsd:annotation>
- <xsd:sequence>
- <xsd:element name="direction" minOccurs="0" maxOccurs="unbounded">
- <xsd:complexType>
- <xsd:annotation>
  <xsd:documentation>Направление туризма.</xsd:documentation> 
  </xsd:annotation>
- <xsd:all>
- <xsd:element name="name" type="xsd:string">
- <xsd:annotation>
  <xsd:documentation>Имя.</xsd:documentation> 
  </xsd:annotation>
  </xsd:element>
  </xsd:all>
  <xsd:attribute name="id" type="xsd:int" use="required" /> 
  </xsd:complexType>
  </xsd:element>
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  </xsd:sequence>
  </xsd:complexType>
  </xsd:element>
  </xsd:schema>

И, в общем то, ЭТО ПРАВИЛЬНАЯ схема. Не хватает только мелочи -
<xsd:element name="direction" sql:relation="directions" sql:key-fields="id" maxOccurs="unbounded">
вместо
<xsd:element name="direction" minOccurs="0" maxOccurs="unbounded">
ну и
xmlns:sql="urn:schemas-microsoft-com:mapping-schema"
еще надо добавить
Отсюда вопрос:
Не посещало ли кого озарение на тему: как использовать СТАНДАРТНУЮ схему данных в загрузке SQLXMLBulkLoad?Пример частичного использования стандартной схемы есть здесь
Обработка XML
но там только типизация используется, да и то как-то коряво.
14 ноя 15, 06:56    [18416108]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить