powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Аннотированная XSD-схема для xmlbulkload
4 сообщений из 4, страница 1 из 1
Аннотированная XSD-схема для xmlbulkload
    #37439377
Дмитрий_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Пишу загрузку стороннего xml в sql2005 с помощью xmlbulkload . Проблема возникла, когда добрался до описания <xs:choice> в схеме. Нашел, что он не совместим с xmlbulkload. Как можно обойти это препятствие? В чем может быть проблема?
Часть 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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
<?xml version="1.0" encoding="utf-8"?>
	<feed creationDate="2011-08-26T14:01:03" xmlns="test">
		<f:orders xmlns:f="test">
			<f:order id="10046810" name="6546546546" modifiedDate="2011-08-17T12:42:34" orderType="11" region="1" lDate="2011-08-27T00:00:00">
				<f:adv comp="2155" />
				<f:maket>
					<body xmlns="">
						<p>
							<text>Много текста</text>
						</p>
						<p>
							<text>Много другого текста</text>
						</p>
						<p>
							<text>Еще текст</text>
						</p>
					</body>
				</f:maket>
			</f:order>
			<f:order id="10047517" name="78798765465" modifiedDate="2011-08-19T12:51:48" orderType="11" region="86" lDate="2011-08-27T00:00:00">
				<f:adv comp="2138" />
				<f:maket>
					<body xmlns="">
						<p>
							<text>Текст</text>
						</p>
						<table>
							<rows>
								<row>
									<cells>
										<cell>
											<content>
												<p>
													<text>Текст</text>
												</p>
											</content>
										</cell>
										<cell>
											<content>
												<p>
													<text>Текст2</text>
												</p>
											</content>
										</cell>
										<cell>
											<content>
												<p>
													<text>Текст3</text>
												</p>
											</content>
										</cell>
									</cells>
								</row>
								<row>
									<cells>
										<cell>
											<content>
												<p>
													<text>Текст4</text>
												</p>
											</content>
										</cell>
										<cell>
											<content>
												<p>
													<text>Текст5</text>
												</p>
											</content>
										</cell>
									</cells>
								</row>
							</rows>
						</table>
						<p>
							<text>Текст6</text>
						</p>
					</body>
				</f:maket>
			</f:order>
		</f:orders>
	</feed>

Схема
Код: 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.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:f="test" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="test" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
	<xs:annotation>
    	<xs:appinfo>
      		<sql:relationship name="feed_order"
	          parent="feed"
	          parent-key="FeedID"
	          child="C_Orders"
	          child-key="FeedID" />
	        <sql:relationship name="order_adv"
	          parent="C_Orders"
	          parent-key="id"
	          child="c_adv"
	          child-key="id" />
	    </xs:appinfo>
  	</xs:annotation>
	<xs:element name="feed" sql:relation="feed" sql:key-fields="FeedID">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="orders" sql:is-constant="1">
					<xs:complexType>
						<xs:sequence>
							<xs:element maxOccurs="unbounded" name="order" sql:relation="C_Orders" sql:relationship="feed_order">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="adv" sql:relation="c_adv" sql:relationship="order_adv">
											<xs:complexType>
												<xs:attribute name="comp" type="xs:unsignedInt" use="required" />
											</xs:complexType>
										</xs:element>
										<xs:element name="maket" sql:is-constant="1">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="body" sql:is-constant="1">
														<xs:complexType>
															<xs:sequence>
																	<xs:choice maxOccurs="unbounded">
																	<xs:element maxOccurs="unbounded" name="p" sql:is-constant="1" >
																		<xs:complexType>
																			<xs:sequence minOccurs="0">
																				<xs:element name="text" type="xs:string"  />
																			</xs:sequence>
																		</xs:complexType>
																	</xs:element>
																	<xs:element name="table" sql:mapped="false">
																		<xs:complexType>
																			<xs:sequence>
																				<xs:element name="rows">
																					<xs:complexType>
																						<xs:sequence>
																							<xs:element maxOccurs="unbounded" name="row">
																								<xs:complexType>
																									<xs:sequence>
																										<xs:element name="cells">
																											<xs:complexType>
																												<xs:sequence>
																													<xs:element maxOccurs="unbounded" name="cell">
																														<xs:complexType>
																															<xs:sequence>
																																<xs:element name="content">
																																	<xs:complexType>
																																		<xs:sequence>
																																			<xs:element maxOccurs="unbounded" name="p">
																																				<xs:complexType>
																																					<xs:sequence minOccurs="0">
																																						<xs:element name="text" type="xs:string" />
																																					</xs:sequence>
																																				</xs:complexType>
																																			</xs:element>
																																		</xs:sequence>
																																	</xs:complexType>
																																</xs:element>
																															</xs:sequence>
																															<xs:attribute name="colspan" type="xs:unsignedByte" use="optional" />
																															<xs:attribute name="rowspan" type="xs:unsignedByte" use="optional" />
																														</xs:complexType>
																													</xs:element>
																												</xs:sequence>
																											</xs:complexType>
																										</xs:element>
																									</xs:sequence>
																								</xs:complexType>
																							</xs:element>
																						</xs:sequence>
																					</xs:complexType>
																				</xs:element>
																			</xs:sequence>
																		</xs:complexType>
																	</xs:element>
																</xs:choice>
															</xs:sequence>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="id" type="xs:unsignedInt" use="required" />
									<xs:attribute name="name" type="xs:string" use="required" />
									<xs:attribute name="modifiedDate" type="xs:date" sql:datatype="datetime" use="required" />
									<xs:attribute name="orderType" type="xs:unsignedInt" use="required" />
									<xs:attribute name="region" type="xs:string" use="required" />
									<xs:attribute name="lDate" type="xs:date" sql:datatype="datetime" use="required" />
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element><!---->
			</xs:sequence>
			<xs:attribute name="creationDate" type="xs:date" sql:datatype="datetime" use="required" />
		</xs:complexType>
	</xs:element>
</xs:schema>


Таблица, куда осуществляется вставка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE [dbo].[C_Orders](
	[FeedID] [int] NOT NULL,
	[id] [int] NOT NULL,
	[name] [nvarchar]( 255 ) NOT NULL,
	[modifiedDate] [datetime] NOT NULL,
	[orderType] [int] NOT NULL,
	[region] [int] NOT NULL,
	[lDate] [datetime] NOT NULL,
	[text] [nvarchar](max) NULL
)
Данные добавляются, кроме как в столбец Text. Туда приходит NULL..
Заранее спасибо!
...
Рейтинг: 0 / 0
Аннотированная XSD-схема для xmlbulkload
    #37439405
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
<xs:element maxOccurs="unbounded" name="p" sql:is-constant="1" minOccurs="0">
  ..................
</xs:element>
<xs:element name="table" sql:mapped="false" minOccurs="0">
  ..................
</xs:element>
...
Рейтинг: 0 / 0
Аннотированная XSD-схема для xmlbulkload
    #37439484
Дмитрий_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, добавил в схему, как Вы написали.. но, не помогло..
...
Рейтинг: 0 / 0
Аннотированная XSD-схема для xmlbulkload
    #37440430
Дмитрий_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему следующим образом. Может, криво и долго, но так работает :)
Первую xsd-схему создал при помощи VS2005, а затем уже руками описывал зависимости между таблицами. Все работало до момента, пока в схеме не встретился <choice>. Пошел другим путем. Загрузил исходный xml-файл в Excel. Он сам создал схему и при импорте отобразил данные, которые мне получить не удалось. Тогда я скачал OfficeExcel2003XMLToolsAddin.exe с сайта MS. Установил в Excel через пакет расширения. Эта утилита позволяет выгружать xsd-схемы в блокнот, созданные Excel автоматически. После этого в полученную схему добавил свои "заметки" и все получилось!
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Аннотированная XSD-схема для xmlbulkload
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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