powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как ограничить использование namespaces в xml c помощью xsd
13 сообщений из 13, страница 1 из 1
Как ограничить использование namespaces в xml c помощью xsd
    #40038978
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, приветствую!

Подскажите, пожалуйста, как можно с помощью xsd запретить использование namespaces в проверяемом xml файле?
Есть нетипизированный xml файл:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
  <z>
    <x>1</x>
    <y>a</y>
  </z>
  <z>
    <x>2</x>
    <y>b</y>
  </z>
</root>


Как запретить на уровне xsd подачу его в таком виде:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
  <z xmlns = "ttt">
    <x>1</x>
    <y>a</y>
  </z>
  <z>
    <x xmlns = "fff">2</x>
    <y>b</y>
  </z>
</root>
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039065
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster
Как запретить на уровне xsd подачу его в таком виде:

Ну, просто создать xsd без targetNamespace:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="z">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="x" type="xs:unsignedByte" />
              <xs:element name="y" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Валидатор при попытке скормить ему XML с неймспейсами ругнется, что

Код: plaintext
The element 'root' has invalid child element 'z' in namespace 'ttt'. List of possible elements expected: 'z'

т.к. узел z без неймспейса, и узел z с неймспейсом - это совершенно разные узлы.
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039071
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны, вроде бы так и делаю, но оно, черт возьми, не работает!


Код: 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.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
  <xs:complexType name="type_ZL_LIST">
    <xs:sequence>
      <xs:element name="ZGLV" type="type_ZGLV" minOccurs="1" maxOccurs="1" />
      <xs:element name="ACT" type="type_ACT" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_ACT">
    <xs:sequence>
      <xs:element name="CODE" type="xs:string" minOccurs="1" />
      <xs:element name="CODE_MO" type="xs:string" minOccurs="1" />
      <xs:element name="NACT" type="xs:string" minOccurs="1" />
      <xs:element name="DACT" type="xs:date" minOccurs="1" />
      <xs:element name="PERIOD" type="xs:int" minOccurs="1" />
      <xs:element name="USERS" type="type_USERS" minOccurs="1" maxOccurs="unbounded" />
      <xs:element name="ACT_DATES" type="type_ACT_DATES" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ACT_TYPE" type="xs:int" minOccurs="1" />
      <xs:element name="SLUCH_COUNT" type="xs:int" minOccurs="1" />
      <xs:element name="SUM" type="xs:decimal" minOccurs="1" />
      <xs:element name="PENALTY" type="xs:decimal" minOccurs="1" />
      <xs:element name="INFO" type="xs:string" minOccurs="0" />
      <xs:element name="SCHET" type="type_SCHET" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_ACT_DATES">
    <xs:sequence>
      <xs:element name="DATE_TYPE" type="xs:short" minOccurs="1" />
      <xs:element name="DATE_VALUE" type="xs:date" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_SCHET">
    <xs:sequence>
      <xs:element name="CODE" type="xs:string" minOccurs="1" />
      <xs:element name="CODE_MO" type="xs:string" minOccurs="1" />
      <xs:element name="YEAR" type="xs:int" minOccurs="1" />
      <xs:element name="MONTH" type="xs:int" minOccurs="1" />
      <xs:element name="NSCHET" type="xs:string" minOccurs="1" />
      <xs:element name="DSCHET" type="xs:date" minOccurs="1" />
      <xs:element name="SCH_TYPE" type="xs:string" minOccurs="1" />
      <xs:element name="SUMMAV" type="xs:decimal" minOccurs="1" />
      <xs:element name="SUMMA_PF" type="xs:decimal" minOccurs="0" />
      <xs:element name="COMENTS" type="xs:string" minOccurs="0" />
      <xs:element name="SUMMAP" type="xs:decimal" minOccurs="1" />
      <xs:element name="ZAP_COUNT" type="xs:int" minOccurs="1" />
      <xs:element name="SLUCH_COUNT" type="xs:int" minOccurs="1" />
      <xs:element name="V_SUM" type="xs:decimal" minOccurs="1" />
      <xs:element name="P_SUM" type="xs:decimal" minOccurs="1" />
      <xs:element name="ZAP" type="type_ZAP" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_ZAP">
    <xs:sequence>
      <xs:element name="N_ZAP" type="xs:int" minOccurs="1" />
      <xs:element name="PR_NOV" type="xs:int" minOccurs="1" />
      <xs:element name="PACIENT" type="type_PACIENT" minOccurs="1" maxOccurs="1" />
      <xs:element name="Z_SL" type="type_Z_SL" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_PACIENT">
    <xs:sequence>
      <xs:element name="ID_PAC" type="xs:string" minOccurs="1" />
      <xs:element name="FAM" type="xs:string" minOccurs="0" />
      <xs:element name="IM" type="xs:string" minOccurs="0" />
      <xs:element name="OT" type="xs:string" minOccurs="0" />
      <xs:element name="W" type="xs:int" minOccurs="1" />
      <xs:element name="DR" type="xs:date" minOccurs="1" />
      <xs:element name="DOST" type="xs:string" minOccurs="0" />
      <xs:element name="FAM_P" type="xs:string" minOccurs="0" />
      <xs:element name="IM_P" type="xs:string" minOccurs="0" />
      <xs:element name="OT_P" type="xs:string" minOccurs="0" />
      <xs:element name="W_P" type="xs:int" minOccurs="0" />
      <xs:element name="DR_P" type="xs:date" minOccurs="0" />
      <xs:element name="DOST_P" type="xs:string" minOccurs="0" />
      <xs:element name="MR" type="xs:string" minOccurs="0" />
      <xs:element name="DOCTYPE" type="xs:string" minOccurs="0" />
      <xs:element name="DOCSER" type="xs:string" minOccurs="0" />
      <xs:element name="DOCNUM" type="xs:string" minOccurs="0" />
      <xs:element name="SNILS" type="xs:string" minOccurs="0" />
      <xs:element name="OKATO" type="xs:string" minOccurs="0" />
      <xs:element name="COMENTP" type="xs:string" minOccurs="0" />
      <xs:element name="VPOLIS" type="xs:int" minOccurs="1" />
      <xs:element name="SPOLIS" type="xs:string" minOccurs="0" />
      <xs:element name="NPOLIS" type="xs:string" minOccurs="1" />
      <xs:element name="NOVOR" type="xs:string" minOccurs="1" />
      <xs:element name="VNOV_D" type="xs:int" minOccurs="0" />
      <xs:element name="INV" type="xs:int" minOccurs="0" />
      <xs:element name="MSE" type="xs:unsignedByte" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_Z_SL">
    <xs:sequence>
      <xs:element name="IDCASE" type="xs:string" minOccurs="1" />
      <xs:element name="CASE_TYPE" type="xs:string" minOccurs="1" />
      <xs:element name="DISP_TYPE" type="xs:string" minOccurs="0" />
      <xs:element name="VBR" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="P_OTK" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="USL_OK" type="xs:int" minOccurs="1" />
      <xs:element name="VIDPOM" type="xs:int" minOccurs="1" />
      <xs:element name="FOR_POM" type="xs:int" minOccurs="0" />
      <xs:element name="NPR_MO" type="xs:string" minOccurs="0" />
      <xs:element name="NPR_DATE" type="xs:date" minOccurs="0" />
      <xs:element name="LPU" type="xs:string" minOccurs="1" />
      <xs:element name="DATE_Z_1" type="xs:date" minOccurs="1" />
      <xs:element name="DATE_Z_2" type="xs:date" minOccurs="1" />
      <xs:element name="VNOV_M" type="xs:int" minOccurs="0" />
      <xs:element name="RSLT" type="xs:int" minOccurs="1" />
      <xs:element name="ISHOD" type="xs:int" minOccurs="0" />
      <xs:element name="OS_SLUCH" type="xs:string" minOccurs="0" />
      <xs:element name="VB_P" type="xs:int" minOccurs="0" />
      <xs:element name="SLUCH" type="type_SLUCH" minOccurs="1" maxOccurs="unbounded" />
      <xs:element name="IDSP" type="xs:short" minOccurs="1" />
      <xs:element name="SUMV" type="xs:decimal" minOccurs="1" />
      <xs:element name="OPLATA" type="xs:short" minOccurs="1" />
      <xs:element name="SUMP" type="xs:decimal" minOccurs="0" />
      <xs:element name="SANK_IT" type="xs:decimal" minOccurs="0" />
      <xs:element name="SANK" type="type_SANK" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="PF" type="xs:int" minOccurs="1" />
      <xs:element name="EXP_INFO" type="type_EXP_INFO" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_EXP_INFO">
    <xs:sequence>
      <xs:element name="EXP_CODE" type="xs:short" minOccurs="1" />
      <xs:element name="EXP_TEXT" type="xs:string" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_SANK">
    <xs:sequence>
      <xs:element name="S_CODE" type="xs:string" minOccurs="1" />
      <xs:element name="S_SUM" type="xs:decimal" minOccurs="1" />
      <xs:element name="S_TIP" type="xs:short" minOccurs="1" />
      <xs:element name="S_OSN" type="xs:short" minOccurs="1" />
      <xs:element name="S_COM" type="xs:string" minOccurs="0" />
      <xs:element name="S_IST" type="xs:short" minOccurs="1" />
      <xs:element name="S_IDSERV" type="xs:string" minOccurs="0" />
      <xs:element name="S_FORCE" type="xs:unsignedByte" minOccurs="1" />
      <xs:element name="CODE_EXP" type="xs:string" minOccurs="0" />
      <xs:element name="EXP_FILTER" type="xs:string" minOccurs="0" />
      <xs:element name="EXP_PENALTY" type="xs:decimal" minOccurs="0" />
      <xs:element name="EXP_PERCENT" type="xs:int" minOccurs="0" />
      <xs:element name="SL_ID" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_SLUCH">
    <xs:sequence>
      <xs:element name="SL_ID" type="xs:string" minOccurs="1" />
      <xs:element name="LPU_1" type="xs:string" minOccurs="0" />
      <xs:element name="PODR" type="xs:string" minOccurs="0" />
      <xs:element name="PROFIL" type="xs:int" minOccurs="0" />
      <xs:element name="PROFIL_K" type="xs:int" minOccurs="0" />
      <xs:element name="DET" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="P_CEL" type="xs:string" minOccurs="0" />
      <xs:element name="NHISTORY" type="xs:string" minOccurs="0" />
      <xs:element name="P_PER" type="xs:int" minOccurs="0" />
      <xs:element name="DATE_1" type="xs:date" minOccurs="1" />
      <xs:element name="DATE_2" type="xs:date" minOccurs="1" />
      <xs:element name="DS0" type="xs:string" minOccurs="0" />
      <xs:element name="DS1" type="xs:string" minOccurs="0" />
      <xs:element name="DS2_N" type="type_DS2_N" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="DS3" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="C_ZAB" type="xs:int" minOccurs="0" />
      <xs:element name="DS_ONK" type="xs:int" minOccurs="0" />
      <xs:element name="CODE_MES1" type="xs:string" minOccurs="0" />
      <xs:element name="CODE_MES2" type="xs:string" minOccurs="0" />
      <xs:element name="NAPR" type="type_NAPR" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="CONS" type="type_CONS" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ONK_SL" type="type_ONK_SL" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="KSG_KPG" type="type_KSG_KPG" minOccurs="0" maxOccurs="1" />
      <xs:element name="REAB" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="PRVS" type="xs:short" minOccurs="0" />
      <xs:element name="VID_HMP" type="xs:string" minOccurs="0" />
      <xs:element name="METOD_HMP" type="xs:short" minOccurs="0" />
      <xs:element name="TAL_D" type="xs:date" minOccurs="0" />
      <xs:element name="TAL_NUM" type="xs:string" minOccurs="0" />
      <xs:element name="TAL_P" type="xs:date" minOccurs="0" />
      <xs:element name="DS1_PR" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="NAZ" type="type_NAZ" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="DN" type="xs:short" minOccurs="0" />
      <xs:element name="SMP_T1" type="xs:string" minOccurs="0" />
      <xs:element name="SMP_T2" type="xs:string" minOccurs="0" />
      <xs:element name="IDDOKT" type="xs:string" minOccurs="0" />
      <xs:element name="ED_COL" type="xs:decimal" minOccurs="1" />
      <xs:element name="SUM_M" type="xs:decimal" minOccurs="1" />
      <xs:element name="USL" type="type_USL" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="COMENTSL" type="xs:string" minOccurs="0" />
      <xs:element name="TARIF" type="xs:decimal" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_CONS">
    <xs:sequence>
      <xs:element name="PR_CONS" type="xs:int" minOccurs="1" />
      <xs:element name="DT_CONS" type="xs:date" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_DS2_N">
    <xs:sequence>
      <xs:element name="DS2" type="xs:string" minOccurs="1" />
      <xs:element name="DS2_PR" type="xs:int" minOccurs="0" />
      <xs:element name="PR_DS2_N" type="xs:short" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_KSG_KPG">
    <xs:sequence>
      <xs:element name="N_KSG" type="xs:string" minOccurs="0" />
      <xs:element name="VER_KSG" type="xs:int" minOccurs="1" />
      <xs:element name="KSG_PG" type="xs:int" minOccurs="1" />
      <xs:element name="N_KPG" type="xs:string" minOccurs="0" />
      <xs:element name="BZTSZ" type="xs:decimal" minOccurs="1" />
      <xs:element name="KOEF_Z" type="xs:decimal" minOccurs="1" />
      <xs:element name="KOEF_UP" type="xs:decimal" minOccurs="1" />
      <xs:element name="KOEF_D" type="xs:decimal" minOccurs="1" />
      <xs:element name="KOEF_U" type="xs:decimal" minOccurs="1" />
      <xs:element name="DKK1" type="xs:string" minOccurs="0" />
      <xs:element name="SL_K" type="xs:unsignedByte" minOccurs="1" />
      <xs:element name="IT_SL" type="xs:decimal" minOccurs="0" />
      <xs:element name="SL_KOEF" type="type_SL_KOEF" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_SL_KOEF">
    <xs:sequence>
      <xs:element name="IDSL" type="xs:short" minOccurs="1" />
      <xs:element name="KOEF_Z_SL" type="xs:decimal" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_NAPR">
    <xs:sequence>
      <xs:element name="NAPR_DATE" type="xs:date" minOccurs="1" />
      <xs:element name="NAPR_V" type="xs:int" minOccurs="1" />
      <xs:element name="MET_ISSL" type="xs:int" minOccurs="0" />
      <xs:element name="NAPR_USL" type="xs:string" minOccurs="0" />
      <xs:element name="NAPR_MO" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_NAZ">
    <xs:sequence>
      <xs:element name="NAZ_N" type="xs:short" minOccurs="1" />
      <xs:element name="NAZ_R" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="NAZ_SP" type="xs:short" minOccurs="0" />
      <xs:element name="NAZ_V" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="NAZ_PMP" type="xs:short" minOccurs="0" />
      <xs:element name="NAZ_PK" type="xs:short" minOccurs="0" />
      <xs:element name="NAZ_USL" type="xs:string" minOccurs="0" />
      <xs:element name="NAPR_DATE" type="xs:date" minOccurs="0" />
      <xs:element name="NAPR_MO" type="xs:string" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_ONK_SL">
    <xs:sequence>
      <xs:element name="DS1_T" type="xs:short" minOccurs="1" />
      <xs:element name="STAD" type="xs:short" minOccurs="0" />
      <xs:element name="ONK_T" type="xs:short" minOccurs="0" />
      <xs:element name="ONK_N" type="xs:short" minOccurs="0" />
      <xs:element name="ONK_M" type="xs:short" minOccurs="0" />
      <xs:element name="MTSTZ" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="B_DIAG" type="type_B_DIAG" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="B_PROT" type="type_B_PROT" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="SOD" type="xs:decimal" minOccurs="0" />
      <xs:element name="K_FR" type="xs:short" minOccurs="0" />
      <xs:element name="WEI" type="xs:decimal" minOccurs="0" />
      <xs:element name="HEI" type="xs:short" minOccurs="0" />
      <xs:element name="BSA" type="xs:decimal" minOccurs="0" />
      <xs:element name="ONK_USL" type="type_ONK_USL" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_B_DIAG">
    <xs:sequence>
      <xs:element name="DIAG_DATE" type="xs:date" minOccurs="1" />
      <xs:element name="DIAG_TIP" type="xs:short" minOccurs="1" />
      <xs:element name="DIAG_CODE" type="xs:short" minOccurs="1" />
      <xs:element name="DIAG_RSLT" type="xs:short" minOccurs="0" />
      <xs:element name="REC_RSLT" type="xs:unsignedByte" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_B_PROT">
    <xs:sequence>
      <xs:element name="PROT" type="xs:short" minOccurs="1" />
      <xs:element name="D_PROT" type="xs:date" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_ONK_USL">
    <xs:sequence>
      <xs:element name="USL_TIP" type="xs:short" minOccurs="1" />
      <xs:element name="HIR_TIP" type="xs:short" minOccurs="0" />
      <xs:element name="LEK_TIP_L" type="xs:short" minOccurs="0" />
      <xs:element name="LEK_TIP_V" type="xs:short" minOccurs="0" />
      <xs:element name="LUCH_TIP" type="xs:short" minOccurs="0" />
      <xs:element name="LEK_PR" type="type_LEK_PR" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="PPTR" type="xs:short" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_LEK_PR">
    <xs:sequence>
      <xs:element name="REGNUM" type="xs:string" minOccurs="1" />
      <xs:element name="CODE_SH" type="xs:string" minOccurs="1" />
      <xs:element name="DATE_INJ" type="xs:date" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_USL">
    <xs:sequence>
      <xs:element name="IDSERV" type="xs:string" minOccurs="1" />
      <xs:element name="LPU" type="xs:string" minOccurs="1" />
      <xs:element name="LPU_1" type="xs:string" minOccurs="0" />
      <xs:element name="PODR" type="xs:string" minOccurs="0" />
      <xs:element name="PROFIL" type="xs:short" minOccurs="0" />
      <xs:element name="VID_VME" type="xs:string" minOccurs="0" />
      <xs:element name="DET" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="DATE_IN" type="xs:date" minOccurs="1" />
      <xs:element name="DATE_OUT" type="xs:date" minOccurs="1" />
      <xs:element name="DS" type="xs:string" minOccurs="0" />
      <xs:element name="CODE_USL" type="xs:string" minOccurs="0" />
      <xs:element name="KOL_USL" type="xs:decimal" minOccurs="1" />
      <xs:element name="TARIF" type="xs:decimal" minOccurs="0" />
      <xs:element name="SUMV_USL" type="xs:decimal" minOccurs="1" />
      <xs:element name="PRVS" type="xs:short" minOccurs="1" />
      <xs:element name="IDDOKT" type="xs:string" minOccurs="1" />
      <xs:element name="P_OTK" type="xs:unsignedByte" minOccurs="0" />
      <xs:element name="COMENTU" type="xs:string" minOccurs="0" />
      <xs:element name="NPL" type="xs:short" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_USERS">
    <xs:sequence>
      <xs:element name="USER_CODE" type="xs:short" minOccurs="1" />
      <xs:element name="USER_NAME" type="xs:string" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="type_ZGLV">
    <xs:sequence>
      <xs:element name="VERSION" type="xs:string" minOccurs="1" />
      <xs:element name="DATA" type="xs:date" minOccurs="1" />
      <xs:element name="REGION_CODE" type="xs:string" minOccurs="1" />
      <xs:element name="FILIAL_CODE" type="xs:string" minOccurs="1" />
      <xs:element name="FILENAME" type="xs:string" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="ZL_LIST" type="type_ZL_LIST" />
</xs:schema>




Не находит ошибок в xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="windows-1251"?>
<ZL_LIST xmlns="OMS-D1">
  <ZGLV>
    <VERSION>3.1</VERSION>
    <DATA>2020-02-03</DATA>
    <REGION_CODE>00</REGION_CODE>
    <FILIAL_CODE>00000</FILIAL_CODE>
    <FILENAME>M000157_2001003</FILENAME>
  </ZGLV>
  <ZGLV>
    <VERSION>3.1</VERSION>
    <DATA>2020-02-03</DATA>
    <REGION_CODE>00</REGION_CODE>
    <FILIAL_CODE>00000</FILIAL_CODE>
    <FILENAME>M000157_2001003</FILENAME>
  </ZGLV>
... // Тут еще много всего
/ZL_LIST>
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039073
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, тогда озвучьте свой парсер/валидатор - возможно, это его специфика. Я вышеприведенное проверил на дотнетовском XmlReader/XmlReaderSettings - он ругнулся именно так, как я привел выше.
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039075
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры Павловны, как раз дотнетовский валидатор и используется.
А перепроверить - пытаюсь с помощью валидатора в notepad++
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039076
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И, кстати, Ваш пример в noteпадовском варианте - работает именно так, как Вы и сказали. Ругается.
А на боевой схеме - нет.
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039086
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, убедитесь сами:
Код: 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.
<?xml version="1.0" encoding="windows-1251"?>
<ZL_LIST xmlns="OMS-D1">
  <ZGLV>
    <VERSION>3.1</VERSION>
    <DATA>2020-02-03</DATA>
    <REGION_CODE>00</REGION_CODE>
    <FILIAL_CODE>00008</FILIAL_CODE>
    <FILENAME>M000157_2001003</FILENAME>
  </ZGLV>
  <ZGLV>
    <VERSION>3.1</VERSION>
    <DATA>2020-02-03</DATA>
    <REGION_CODE>00</REGION_CODE>
    <FILIAL_CODE>00008</FILIAL_CODE>
    <FILENAME>M000157_2001003</FILENAME>
  </ZGLV>
  <ACT>
    <CODE>C7E5E6DFC04D4598A9F9FC7DC45D3411</CODE>
    <CODE_MO>000157</CODE_MO>
    <NACT>1114127</NACT>    
    <PERIOD>202001</PERIOD>
    <ACT_TYPE>1</ACT_TYPE>
    <SLUCH_COUNT>2</SLUCH_COUNT>
    <SUM>0</SUM>
    <PENALTY>0</PENALTY>
    <USERS>
      <USER_CODE>1</USER_CODE>
      <USER_NAME>Иванова И.И.</USER_NAME>
    </USERS>
    <SCHET>
      <CODE>1114127</CODE>
      <CODE_MO>000157</CODE_MO>
      <YEAR>2020</YEAR>
      <MONTH>1</MONTH>
      <NSCHET>6</NSCHET>
      <DSCHET>2020-02-03</DSCHET>
      <SCH_TYPE>H</SCH_TYPE>
      <SUMMAV>1906.91</SUMMAV>
      <SUMMA_PF>1906.91</SUMMA_PF>
      <SUMMAP>1906.91</SUMMAP>
      <ZAP_COUNT>1</ZAP_COUNT>
      <SLUCH_COUNT>2</SLUCH_COUNT>
      <V_SUM>1906.91</V_SUM>
      <P_SUM>1906.91</P_SUM>
      <ZAP>
        <N_ZAP>1</N_ZAP>
        <PR_NOV>0</PR_NOV>
        <PACIENT>
          <ID_PAC>A2AD8DBAF31045E3BF97A1FB5D2A4AEC</ID_PAC>
          <FAM>Петрова</FAM>
          <IM>Петра</IM>
          <OT>Петровна</OT>
          <W>2</W>
          <DR>1900-01-19</DR>
          <DOCTYPE>14</DOCTYPE>
          <DOCSER>00 00</DOCSER>
          <DOCNUM>000110</DOCNUM>
          <SNILS>99999999999</SNILS>
          <OKATO>00000000000</OKATO>
          <VPOLIS>3</VPOLIS>
          <NPOLIS>0000000000000000</NPOLIS>
          <NOVOR>0</NOVOR>
        </PACIENT>
        <Z_SL>
          <IDCASE>FE7A24949B6B4AD6A1552EF60DCDCD67</IDCASE>
          <CASE_TYPE>H</CASE_TYPE>
          <USL_OK>3</USL_OK>
          <VIDPOM>13</VIDPOM>
          <FOR_POM>3</FOR_POM>
          <LPU>000157</LPU>
          <DATE_Z_1>2019-12-09</DATE_Z_1>
          <DATE_Z_2>2019-12-18</DATE_Z_2>
          <RSLT>304</RSLT>
          <ISHOD>304</ISHOD>
          <IDSP>30</IDSP>
          <SUMV>1906.91</SUMV>
          <OPLATA>1</OPLATA>
          <SUMP>1906.91</SUMP>
          <PF>0</PF>
          <SLUCH>
            <SL_ID>1422048107</SL_ID>
            <LPU_1>385</LPU_1>
            <PODR>385</PODR>
            <PROFIL>136</PROFIL>
            <DET>0</DET>
            <P_CEL>3.0</P_CEL>
            <NHISTORY>0000000000000000</NHISTORY>
            <DATE_1>2019-12-18</DATE_1>
            <DATE_2>2019-12-18</DATE_2>
            <DS1>L77.4</DS1>
            <C_ZAB>2</C_ZAB>
            <DS_ONK>0</DS_ONK>
            <CODE_MES1>622865</CODE_MES1>
            <PRVS>2</PRVS>
            <IDDOKT>00000000359</IDDOKT>
            <ED_COL>1.00</ED_COL>
            <SUM_M>1906.91</SUM_M>
            <TARIF>1906.91</TARIF>
            <Z_SL_ID>FE7A24949B6B4AD6A1552EF60DCDCD67</Z_SL_ID>
          </SLUCH>
          <SLUCH>
            <SL_ID>1422046052</SL_ID>
            <LPU_1>000</LPU_1>
            <PODR>000</PODR>
            <PROFIL>136</PROFIL>
            <DET>0</DET>
            <P_CEL>3.0</P_CEL>
            <NHISTORY>0258110880000084</NHISTORY>
            <DATE_1>2019-12-09</DATE_1>
            <DATE_2>2019-12-09</DATE_2>
            <DS1>M97.4</DS1>
            <C_ZAB>2</C_ZAB>
            <DS_ONK>0</DS_ONK>
            <CODE_MES1>622865</CODE_MES1>
            <PRVS>2</PRVS>
            <IDDOKT>00000000000</IDDOKT>
            <ED_COL>1.00</ED_COL>
            <SUM_M>0.00</SUM_M>
            <TARIF>0.00</TARIF>
            <Z_SL_ID>FE7A24949B6B4AD6A1552EF60DCDCD67</Z_SL_ID>
          </SLUCH>
        </Z_SL>
      </ZAP>
    </SCHET>
  </ACT>
</ZL_LIST>

...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039133
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster
Не находит ошибок в xml
Код: xml
1.
2.
<?xml version="1.0" encoding="windows-1251"?>
<ZL_LIST xmlns="OMS-D1">

И не найдет. Элемент OMS-D1:ZL_LIST не описан в схеме и потому не валидируется.

Имя и пространство имен корневого элемента придется проверить вручную
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039208
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, А как это сделать? Как задать такую проверку в xsd?
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039215
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster,

Если у корневого элемент немспейс, которого не должно быть, всегда постоянный, то можно в основную схему импортировать дополнительную с неймспесом. в котором для корневого элемента запрещено любое содержимое:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<xs:schema
  attributeFormDefault="unqualified"
  elementFormDefault="qualified"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="foo" />
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="z">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="x" type="xs:unsignedByte" />
              <xs:element name="y" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<xs:schema
  xmlns:foo="foo"
  attributeFormDefault="unqualified"
  elementFormDefault="qualified"
  targetNamespace="foo"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="root"  type="xs:string" fixed=""/>
</xs:schema>


- тогда при попытке валидировать xml с root xmlns="foo" будет ошибка

Код: plaintext
1.
The element 'foo:root' cannot contain child element 'foo:z' because the parent element's content model is text only.

или

Код: plaintext
The value of the 'foo:root' element does not equal its fixed value.


Хотя, конечно, если скормить на валидацию пустой корневой элемент с неймспейсом foo, то всё будет в порядке.

Вариант 2 - если валидатор поддерживает обработку/вывод предупреждений, то включить эту обработку/вывод. При валидации
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root xmlns="foo">
  <z>
    <x>1</x>
    <y>a</y>
  </z>
  <z>
    <x>2</x>
    <y>b</y>
  </z>
</root>


будет выдано:

Код: plaintext
1.
2.
3.
4.
5.
6.
Could not find schema information for the element "foo:root".
Could not find schema information for the element "foo:z".
Could not find schema information for the element "foo:x".
Could not find schema information for the element "foo:y".
Could not find schema information for the element "foo:z".
Could not find schema information for the element "foo:x".
Could not find schema information for the element "foo:y".

- и трактовать эти предупреждения как ошибки.
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039239
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
uaggster
А как это сделать?
Загружаете документ в DOM или SAX объект и анализируете корневой элемент
uaggster
Как задать такую проверку в xsd?
Никак. XSD задает набор корневых элементов. Если не один из этих элементов не встретился, то валидатор считает, что эта схема не применима к данному документу

Сон Веры Павловны
если валидатор поддерживает обработку/вывод предупреждений
Это кто так умеет?
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039252
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Это кто так умеет?

Да всё тот же дотнетовский XmlReader в связке с XmlReaderSettings - у последнего есть флаговое свойство ValidationFlags , для которого можно включить значение ReportValidationWarnings, тогда при валидации в т.ч. будут выводиться предупреждения.
...
Рейтинг: 0 / 0
Как ограничить использование namespaces в xml c помощью xsd
    #40039536
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, спасибо, буду думать.

Сон Веры Павловны , спасибо отдельно, скорее всего именно так и сделаю.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как ограничить использование namespaces в xml c помощью xsd
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (9): Анонимы (6), Bing Bot, Yandex Bot 1 мин., RePredeclared 3 мин.
x
x
Закрыть


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