Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите сделать Select из xsd схемы / 6 сообщений из 6, страница 1 из 1
29.04.2019, 15:25
    #39807669
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать Select из xsd схемы
Предположим, есть некая xsd-схема, например, одного из файлов ФИАС:


Код: xml
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.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
<?xml version="1.0" encoding="utf-8"?>
<!-- edited with XMLSpy v2009 sp1 (http://www.altova.com) by Буравцев_А (EMBRACE) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:usch="http://www.unisoftware.ru/schematron-extensions" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="AddressObjects">
		<xs:annotation>
			<xs:documentation>Состав и структура файла с информацией классификатора адресообразующих элементов БД ФИАС</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Object" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Классификатор адресообразующих элементов</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="AOGUID" use="required">
							<xs:annotation>
								<xs:documentation>Глобальный уникальный идентификатор адресного объекта </xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="36"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="FORMALNAME" use="required">
							<xs:annotation>
								<xs:documentation>Формализованное наименование</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="1"/>
									<xs:maxLength value="120"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="REGIONCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код региона</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="2"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="AUTOCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код автономии</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="1"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="AREACODE" use="required">
							<xs:annotation>
								<xs:documentation>Код района</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="3"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="CITYCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код города</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="3"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="CTARCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код внутригородского района</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="3"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="PLACECODE" use="required">
							<xs:annotation>
								<xs:documentation>Код населенного пункта</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="3"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="PLANCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код элемента планировочной структуры</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>									
						<xs:attribute name="STREETCODE" use="optional">
							<xs:annotation>
								<xs:documentation>Код улицы</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="EXTRCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код дополнительного адресообразующего элемента</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="SEXTCODE" use="required">
							<xs:annotation>
								<xs:documentation>Код подчиненного дополнительного адресообразующего элемента</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="3"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="OFFNAME" use="optional">
							<xs:annotation>
								<xs:documentation>Официальное наименование</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="1"/>
									<xs:maxLength value="120"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="POSTALCODE" use="optional">
							<xs:annotation>
								<xs:documentation>Почтовый индекс</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="6"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="IFNSFL" use="optional">
							<xs:annotation>
								<xs:documentation>Код ИФНС ФЛ</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="TERRIFNSFL" use="optional">
							<xs:annotation>
								<xs:documentation>Код территориального участка ИФНС ФЛ</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="IFNSUL" use="optional">
							<xs:annotation>
								<xs:documentation>Код ИФНС ЮЛ</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="TERRIFNSUL" use="optional">
							<xs:annotation>
								<xs:documentation>Код территориального участка ИФНС ЮЛ</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="4"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="OKATO" use="optional">
							<xs:annotation>
								<xs:documentation>OKATO</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="11"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="OKTMO" use="optional">
							<xs:annotation>
								<xs:documentation>OKTMO</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="8"/>
									<xs:maxLength value="11"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="UPDATEDATE" type="xs:date" use="required">
							<xs:annotation>
								<xs:documentation>Дата  внесения записи</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="SHORTNAME" use="required">
							<xs:annotation>
								<xs:documentation>Краткое наименование типа объекта</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="1"/>
									<xs:maxLength value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="AOLEVEL" use="required">
							<xs:annotation>
								<xs:documentation>Уровень адресного объекта </xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="PARENTGUID" use="optional">
							<xs:annotation>
								<xs:documentation>Идентификатор объекта родительского объекта</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="36"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="AOID" use="required">
							<xs:annotation>
								<xs:documentation>Уникальный идентификатор записи. Ключевое поле.</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="36"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="PREVID" use="optional">
							<xs:annotation>
								<xs:documentation>Идентификатор записи связывания с предыдушей исторической записью</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="36"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="NEXTID" use="optional">
							<xs:annotation>
								<xs:documentation>Идентификатор записи  связывания с последующей исторической записью</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="36"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="CODE" use="optional">
							<xs:annotation>
								<xs:documentation>Код адресного объекта одной строкой с признаком актуальности из КЛАДР 4.0. </xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="0"/>
									<xs:maxLength value="17"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="PLAINCODE" use="optional">
							<xs:annotation>
								<xs:documentation>Код адресного объекта из КЛАДР 4.0 одной строкой без признака актуальности (последних двух цифр)</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:minLength value="0"/>
									<xs:maxLength value="15"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="ACTSTATUS" use="required">
							<xs:annotation>
								<xs:documentation>Статус актуальности адресного объекта ФИАС. Актуальный адрес на текущую дату. Обычно последняя запись об адресном объекте.
0 – Не актуальный
1 - Актуальный
</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="CENTSTATUS" use="required">
							<xs:annotation>
								<xs:documentation>Статус центра</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="OPERSTATUS" use="required">
							<xs:annotation>
								<xs:documentation>Статус действия над записью – причина появления записи (см. описание таблицы OperationStatus):
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления
</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="CURRSTATUS" use="required">
							<xs:annotation>
								<xs:documentation>Статус актуальности КЛАДР 4 (последние две цифры в коде)</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:integer">
									<xs:totalDigits value="10"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="STARTDATE" type="xs:date" use="required">
							<xs:annotation>
								<xs:documentation>Начало действия записи</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="ENDDATE" type="xs:date" use="required">
							<xs:annotation>
								<xs:documentation>Окончание действия записи</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="NORMDOC" use="optional">
							<xs:annotation>
								<xs:documentation>Внешний ключ на нормативный документ</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:length value="36"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="LIVESTATUS" use="required">
							<xs:annotation>
								<xs:documentation>Признак действующего адресного объекта</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:byte">
									<xs:enumeration value="0"/>
									<xs:enumeration value="1"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
            <xs:attribute name="DIVTYPE" use="required">
              <xs:annotation>
                <xs:documentation>
                  Тип адресации:
                  0 - не определено
                  1 - муниципальный;
                  2 - административно-территориальный
                </xs:documentation>
              </xs:annotation>
              <xs:simpleType>
                <xs:restriction base="xs:int">
                  <xs:enumeration value="0"/>
                  <xs:enumeration value="1"/>
                  <xs:enumeration value="2"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>



Нужно получить из нее таблицу:
attribute name
use
documentation
restriction base
minLength value
maxLength value

Обламываюсь даже просто на получении attribute name:
Код: sql
1.
2.
3.
;WITH XMLNAMESPACES(DEFAULT 'xmlns:xs="http://www.w3.org/2001/XMLSchema"')
Select t.n.value('(./@name)[1]', 'nvarchar(4000)')
	from @x.nodes('/schema/element/complexType/sequence/element/complexType/attribute') t(n) 


Не извлекается, хоть убейся!
...
Рейтинг: 0 / 0
29.04.2019, 16:02
    #39807699
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать Select из xsd схемы
uaggster,
а если так - поможет? (без WITH)
Код: sql
1.
2.
3.
4.
SELECT
  t.n.value('(./@name)[1]', 'nvarchar(4000)')
FROM
  @x.nodes('//xs:attribute') t(n) 
...
Рейтинг: 0 / 0
29.04.2019, 16:08
    #39807703
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать Select из xsd схемы
uaggster,

Код: sql
1.
2.
3.
;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema')
Select t.n.value('(./@name)[1]', 'nvarchar(4000)')
	from @x.nodes('/schema/element/complexType/sequence/element/complexType/attribute') t(n) 
...
Рейтинг: 0 / 0
30.04.2019, 09:03
    #39808136
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать Select из xsd схемы
Коллеги, спасибо.
С намспейсами не часто имею дело, не сообразил как.
Руслан Дамирович, отдельное спасибо, а то я что-то совсем зачпокался!

Коллеги, чтобы да раза не вставать!
А что делать, если намспейса два или более.
Их же в ;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema') не засунешь, я так понимаю?
...
Рейтинг: 0 / 0
30.04.2019, 09:06
    #39808140
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать Select из xsd схемы
uaggsterКоллеги, спасибо.
С намспейсами не часто имею дело, не сообразил как.
Руслан Дамирович, отдельное спасибо, а то я что-то совсем зачпокался!

Коллеги, чтобы да раза не вставать!
А что делать, если намспейса два или более.
Их же в ;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema') не засунешь, я так понимаю?
не понимаешь

Код: sql
1.
2.
3.
;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema'
                                    , sch 'http://purl.oclc.org/dsdl/schematron'
                                    )
...
Рейтинг: 0 / 0
30.04.2019, 09:57
    #39808162
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите сделать Select из xsd схемы
aleks222, всё, понял, спасибо, заработало!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите сделать Select из xsd схемы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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