Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Проблема с аннотированной схемой для загрузки XML через SQLXMLBulkLoad. / 4 сообщений из 4, страница 1 из 1
03.09.2007, 18:29
    #34772701
Alexey^^
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с аннотированной схемой для загрузки XML через SQLXMLBulkLoad.
Добрый день уважаемые Форумчане.
Передо мной была поставлена задача: recordset, сохранённый в xml файл, загрузить в определённую таблицу MSQL 2000. Прочитал довольно много статей по этому поводу, но так и не понял, как решить следующую проблему:
После сохранения recordset.Save('c:\table1.xml',adPersistXML), я получил файл следующего формата:
Код: 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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
	xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
	xmlns:rs='urn:schemas-microsoft-com:rowset'
	xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
	<s:ElementType name='row' content='eltOnly'>
		<s:AttributeType name='IdValue' rs:number='1'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdSeason' rs:number='2' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdType' rs:number='3' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdTM' rs:number='4' rs:nullable='true' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
		</s:AttributeType>
		<s:AttributeType name='IdSubTM' rs:number='5' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdGender' rs:number='6' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdCollection' rs:number='7' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdSite' rs:number='8' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='IdCTM' rs:number='9' rs:nullable='true' rs:writeunknown='true'>
			<s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' rs:fixedlength='true'/>
		</s:AttributeType>
		<s:AttributeType name='Model' rs:number='10' rs:nullable='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='30'/>
		</s:AttributeType>
		<s:AttributeType name='Fabric' rs:number='11' rs:writeunknown='true'>
			<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='30' rs:maybenull='false'/>
		</s:AttributeType>
		<s:AttributeType name='CodeColor' rs:number='12' rs:nullable='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='100'/>
		</s:AttributeType>
		<s:AttributeType name='NameColor' rs:number='13' rs:nullable='true' rs:writeunknown='true'>
			<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='50'/>
		</s:AttributeType>
		<s:AttributeType name='SizeRLC' rs:number='14' rs:nullable='true'>
			<s:datatype dt:type='string' rs:dbtype='str' dt:maxLength='62'/>
		</s:AttributeType>
		<s:extends type='rs:rowbase'/>
	</s:ElementType>
</s:Schema>
<rs:data>
	<z:row IdValue='1088719' IdSeason='4' IdType='1' IdTM='19' IdSubTM='1126' IdGender='1' IdCollection='2' IdSite='1'
		 IdCTM='19188' Model='148169' Fabric='WAAN0' CodeColor='6215' SizeRLC='36'/>
	<z:row IdValue='1088720' IdSeason='4' IdType='1' IdTM='19' IdSubTM='1126' IdGender='1' IdCollection='2' IdSite='1'
		 IdCTM='19188' Model='148169' Fabric='WAAN0' CodeColor='6215' SizeRLC='36/5'/>
</rs:data>
</xml>
Где вначале описывается схема, а за ней идут данные.
Для загрузки данных использую метод SQLXMLBulkLoad.Execute, куда передаётся сам xml файл
и аннотированная схема, которая позволяет корректно загрузить данные в нужную таблицу.
Для простых xml документов(где не используются namespaces) шаблонная схема рисуется с пол тычка, но вот когда встречаются структуры вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
<rs:data>
	<z:row IdValue='1088719' IdSeason='4' IdType='1' IdTM='19' IdSubTM='1126' IdGender='1' IdCollection='2' IdSite='1'
		 IdCTM='19188' Model='148169' Fabric='WAAN0' CodeColor='6215' SizeRLC='36'/>
	<z:row IdValue='1088720' IdSeason='4' IdType='1' IdTM='19' IdSubTM='1126' IdGender='1' IdCollection='2' IdSite='1'
		 IdCTM='19188' Model='148169' Fabric='WAAN0' CodeColor='6215' SizeRLC='36/5'/>
</rs:data>
моих познаний XML уже к сожалению не хватает. Может быть кто-нибудь подскажет, как нужно корректно подправить схему,чтобы можно было достучаться до данных <rs:data> / <z:row>
Привожу пример аннотированной схемы:
Код: 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.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:ms="urn:schemas-microsoft-com:mapping-schema">


 <xsd:element name="data" ms:is-constant="1">
   <xsd:complexType>
     <xsd:sequence> 

        <xsd:element name ="row" ms:relation="test1">
         <xsd:complexType>


           <xsd:attribute name ="IdValue"  ms:datatype="int" ms:field="IdValue"  > </xsd:attribute >  
           <xsd:attribute name ="IdSeason" ms:datatype="int" ms:field="IdSeason" > </xsd:attribute >  
 

         </xsd:complexType>        
        </xsd:element>  

      
     </xsd:sequence>  
   </xsd:complexType>
 </xsd:element>


</xsd:schema>
которую я использовал для загрузки xml файла, вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
<data>
	<row IdValue='1088719' IdSeason='4' IdType='1' IdTM='19' IdSubTM='1126' IdGender='1' IdCollection='2' IdSite='1'
		 IdCTM='19188' Model='148169' Fabric='WAAN0' CodeColor='6215' SizeRLC='36'/>
	<row IdValue='1088720' IdSeason='4' IdType='1' IdTM='19' IdSubTM='1126' IdGender='1' IdCollection='2' IdSite='1'
		 IdCTM='19188' Model='148169' Fabric='WAAN0' CodeColor='6215' SizeRLC='36/5'/>
</data>
Буду очень презнателен,если посдкажете как решить данную проблему.
Спасибо.
...
Рейтинг: 0 / 0
06.09.2007, 12:22
    #34780610
Alexey^^
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с аннотированной схемой для загрузки XML через SQLXMLBulkLoad.
up
...
Рейтинг: 0 / 0
06.09.2007, 12:26
    #34780636
ZanZibArgh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с аннотированной схемой для загрузки XML через SQLXMLBulkLoad.
в чем вопрос-то конкретно?)))

в схеме все атрибуты перечислили, это только кусок приведен?
...
Рейтинг: 0 / 0
06.09.2007, 12:32
    #34780680
ZanZibArgh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с аннотированной схемой для загрузки XML через SQLXMLBulkLoad.
а, понял.. да, с этим тоже бьюсь )))

ну.. нужно искать схемы s, rs и z рекордсета..

попробуйте воспользоваться сгенерированной схемой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version = "1.0" encoding = "utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" elementFormDefault="qualified" xmlns:s="www.s.com" xmlns:rs="www.rs.com" xmlns:z="www.z.com">
  <xs:import namespace="www.s.com" schemaLocation="_s.xsd"/>
  <xs:import namespace="www.rs.com" schemaLocation="_rs.xsd"/>
  <xs:import namespace="www.z.com" schemaLocation="_z.xsd"/>
  <xs:element name="xml">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="s:Schema"/>
        <xs:element ref="rs:data"/>
      </xs:sequence>
      <xs:attribute name="xmlns:s" type="xs:string"/>
      <xs:attribute name="xmlns:dt" type="xs:string"/>
      <xs:attribute name="xmlns:rs" type="xs:string"/>
      <xs:attribute name="xmlns:z" type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Проблема с аннотированной схемой для загрузки XML через SQLXMLBulkLoad. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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