powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите сделать Select из xsd схемы
6 сообщений из 6, страница 1 из 1
Помогите сделать Select из xsd схемы
    #39807669
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предположим, есть некая 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
Помогите сделать Select из xsd схемы
    #39807699
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster,
а если так - поможет? (без WITH)
Код: sql
1.
2.
3.
4.
SELECT
  t.n.value('(./@name)[1]', 'nvarchar(4000)')
FROM
  @x.nodes('//xs:attribute') t(n) 
...
Рейтинг: 0 / 0
Помогите сделать Select из xsd схемы
    #39807703
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите сделать Select из xsd схемы
    #39808136
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, спасибо.
С намспейсами не часто имею дело, не сообразил как.
Руслан Дамирович, отдельное спасибо, а то я что-то совсем зачпокался!

Коллеги, чтобы да раза не вставать!
А что делать, если намспейса два или более.
Их же в ;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema') не засунешь, я так понимаю?
...
Рейтинг: 0 / 0
Помогите сделать Select из xsd схемы
    #39808140
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите сделать Select из xsd схемы
    #39808162
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, всё, понял, спасибо, заработало!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите сделать Select из xsd схемы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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