xml-toolkit 1.0.4 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -307,13 +307,15 @@ const XMLMarshaller = class {
307
307
 
308
308
  _bSequence (buf, _sequence, content) {
309
309
 
310
- const {element, sequence, choice, all} = _sequence, group = sequence || choice || all
310
+ const {element, sequence, choice, all, group} = _sequence, g = sequence || choice || all
311
311
 
312
- if (group) this._bSequence (buf, group, content)
312
+ if (g) this._bSequence (buf, g, content)
313
313
 
314
314
  if (element) {
315
315
 
316
- for (const e of Array.isArray (element) ? element : [element]) {
316
+ for (let e of Array.isArray (element) ? element : [element]) {
317
+
318
+ const {ref} = e; if (ref) e = this.xs.getByReference (ref)
317
319
 
318
320
  const c = content [e.name]
319
321
 
@@ -322,6 +324,18 @@ const XMLMarshaller = class {
322
324
  }
323
325
 
324
326
  }
327
+
328
+ if (group) {
329
+
330
+ for (let e of Array.isArray (group) ? group : [group]) {
331
+
332
+ const {ref} = e; if (ref) e = this.xs.getByReference (ref)
333
+
334
+ this._bSequence (buf, e, content)
335
+
336
+ }
337
+
338
+ }
325
339
 
326
340
  }
327
341
 
package/lib/XMLSchema.js CHANGED
@@ -22,6 +22,7 @@ const XMLSchema = class extends Map {
22
22
  'element',
23
23
  'complexType',
24
24
  'simpleType',
25
+ 'group',
25
26
 
26
27
  ]) if (type in node) {
27
28
 
@@ -78,7 +79,7 @@ XMLSchema.adjustNode = node => {
78
79
 
79
80
  const [local, prefix] = attributes.get (name).split (':').reverse ()
80
81
 
81
- attributes.set (name, [local, namespacesMap.get (prefix)])
82
+ attributes.set (name, [local, namespacesMap.get (prefix || '')])
82
83
 
83
84
  }
84
85
 
@@ -86,6 +87,8 @@ XMLSchema.adjustNode = node => {
86
87
 
87
88
  case 'attribute':
88
89
  case 'element':
90
+ case 'group':
91
+ splitNs ('ref')
89
92
  splitNs ('type')
90
93
  break
91
94
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xml-toolkit",
3
- "version": "1.0.4",
3
+ "version": "1.0.7",
4
4
  "description": "Collection of classes for dealing with XML",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://common.kvs.pfr.com/1.0.0" xmlns:smev="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" targetNamespace="http://common.kvs.pfr.com/1.0.0" elementFormDefault="qualified">
3
+ <xs:import namespace="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" schemaLocation="smev-supplementary-commons-1.0.1.xsd"/>
4
+ <xs:complexType name="BirthPlaceType">
5
+ <xs:sequence>
6
+ <xs:element name="PlaceType" type="smev:string-50" nillable="false"/>
7
+ <xs:element name="Settlement" type="smev:string-50" nillable="false"/>
8
+ <xs:element name="District" type="smev:string-50" minOccurs="0"/>
9
+ <xs:element name="Region" type="smev:string-50" minOccurs="0"/>
10
+ <xs:element name="Country" type="smev:string-50" minOccurs="0"/>
11
+ </xs:sequence>
12
+ </xs:complexType>
13
+ <xs:complexType name="IdentificationDocumentType">
14
+ <xs:sequence>
15
+ <xs:element name="Type" type="smev:string-200" nillable="false"/>
16
+ <xs:element name="Document" type="smev:NotRestrictedDocumentType" nillable="false"/>
17
+ </xs:sequence>
18
+ </xs:complexType>
19
+ <xs:group name="AllIdentityDocumentType-Group">
20
+ <xs:sequence>
21
+ <xs:choice>
22
+ <xs:group ref="smev:PrimaryIdentityDocument-ModelGroup"/>
23
+ <xs:group ref="smev:WeakIdentityDocument-ModelGroup"/>
24
+ <xs:group ref="smev:TemporaryIdentityDocument-ModelGroup"/>
25
+ <xs:element name="PfrIdentificationDocument" type="tns:IdentificationDocumentType"/>
26
+ </xs:choice>
27
+ </xs:sequence>
28
+ </xs:group>
29
+ </xs:schema>
@@ -0,0 +1,689 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema targetNamespace="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1">
3
+ <!--========================================== ����������������� ���� ==========================================-->
4
+ <xs:element name="AttachmentRef" type="tns:AttachmentRefType"/>
5
+ <xs:complexType name="AttachmentRefType">
6
+ <xs:annotation>
7
+ <xs:documentation>������ �� �������������� ����� ������� (������, ������) �� ��������, ����������� � ��� �� ����-���������.</xs:documentation>
8
+ </xs:annotation>
9
+ <xs:attribute name="attachmentId" type="xs:string">
10
+ <xs:annotation>
11
+ <xs:documentation>������������� ��������, �� ������� ���������. ������ ���� ����� ��������
12
+ //{urn://x-artefacts-smev-gov-ru/smev-core/client-interaction/basic/1.0:AttachedFile}[n]/Id/text()
13
+ ���� ��������, �� ������� ����� ���������.</xs:documentation>
14
+ </xs:annotation>
15
+ </xs:attribute>
16
+ </xs:complexType>
17
+ <xs:element name="PrimaryIdentityDocument" type="tns:PrimaryIdentityDocumentType">
18
+ <xs:annotation>
19
+ <xs:documentation>�������� ��������, �������������� ��������.</xs:documentation>
20
+ </xs:annotation>
21
+ </xs:element>
22
+ <xs:element name="IdentityDocument" type="tns:AnyIdentityDocumentType">
23
+ <xs:annotation>
24
+ <xs:documentation>��������, �������������� ��������</xs:documentation>
25
+ </xs:annotation>
26
+ </xs:element>
27
+ <xs:element name="PassportRF" type="tns:PassportRFType">
28
+ <xs:annotation>
29
+ <xs:documentation>������� ��</xs:documentation>
30
+ </xs:annotation>
31
+ </xs:element>
32
+ <xs:element name="ForeignPassport" type="tns:NotRestrictedDocumentType">
33
+ <xs:annotation>
34
+ <xs:documentation>������� ������������ ����������</xs:documentation>
35
+ </xs:annotation>
36
+ </xs:element>
37
+ <xs:element name="ResidencePermitRF" type="tns:InternationalPassportRFType">
38
+ <xs:annotation>
39
+ <xs:documentation>��� �� ���������� � ��. ������ ����� � ������ ��������� � ���������������.</xs:documentation>
40
+ </xs:annotation>
41
+ </xs:element>
42
+ <xs:element name="InternationalPassportRF" type="tns:InternationalPassportRFType">
43
+ <xs:annotation>
44
+ <xs:documentation>�������������</xs:documentation>
45
+ </xs:annotation>
46
+ </xs:element>
47
+ <xs:element name="MilitaryPassport" type="tns:MilitaryPassportDocumentType">
48
+ <xs:annotation>
49
+ <xs:documentation>������� �����</xs:documentation>
50
+ </xs:annotation>
51
+ </xs:element>
52
+ <xs:element name="SailorPassport" type="tns:MilitaryPassportDocumentType">
53
+ <xs:annotation>
54
+ <xs:documentation>������� ������</xs:documentation>
55
+ </xs:annotation>
56
+ </xs:element>
57
+ <xs:element name="SovietPassport" type="tns:SovietPassportType">
58
+ <xs:annotation>
59
+ <xs:documentation>������� ����</xs:documentation>
60
+ </xs:annotation>
61
+ </xs:element>
62
+ <xs:element name="BirthCertificate" type="tns:SovietPassportType">
63
+ <xs:annotation>
64
+ <xs:documentation>������������� � ��������</xs:documentation>
65
+ </xs:annotation>
66
+ </xs:element>
67
+ <xs:element name="DrivingLicenseRF" type="tns:DrivingLicenseRFType">
68
+ <xs:annotation>
69
+ <xs:documentation>������������ ������������� ��</xs:documentation>
70
+ </xs:annotation>
71
+ </xs:element>
72
+ <xs:element name="ReleaseCertificate" type="tns:NotRestrictedDocumentType">
73
+ <xs:annotation>
74
+ <xs:documentation>������� �� ������������</xs:documentation>
75
+ </xs:annotation>
76
+ </xs:element>
77
+ <xs:element name="PassportLossCertificate" type="tns:NotRestrictedDocumentType">
78
+ <xs:annotation>
79
+ <xs:documentation>������� �� ����� ��������</xs:documentation>
80
+ </xs:annotation>
81
+ </xs:element>
82
+ <xs:element name="Form9Certificate" type="tns:NotRestrictedDocumentType">
83
+ <xs:annotation>
84
+ <xs:documentation>������� � ����������� �� ����� 9</xs:documentation>
85
+ </xs:annotation>
86
+ </xs:element>
87
+ <xs:element name="TemporaryIdentityCardRF" type="tns:NotRestrictedDocumentType">
88
+ <xs:annotation>
89
+ <xs:documentation>��������� ������������� �������� ���������� �� �� ����� 2�</xs:documentation>
90
+ </xs:annotation>
91
+ </xs:element>
92
+ <xs:complexType name="PrimaryIdentityDocumentType">
93
+ <xs:annotation>
94
+ <xs:documentation>�������� ��������, �������������� ��������</xs:documentation>
95
+ </xs:annotation>
96
+ <xs:group ref="tns:PrimaryIdentityDocument-ModelGroup"/>
97
+ </xs:complexType>
98
+ <xs:complexType name="AnyIdentityDocumentType">
99
+ <xs:annotation>
100
+ <xs:documentation>��������, �������������� ��������</xs:documentation>
101
+ </xs:annotation>
102
+ <xs:choice>
103
+ <xs:group ref="tns:PrimaryIdentityDocument-ModelGroup"/>
104
+ <xs:group ref="tns:WeakIdentityDocument-ModelGroup"/>
105
+ <xs:group ref="tns:TemporaryIdentityDocument-ModelGroup"/>
106
+ </xs:choice>
107
+ </xs:complexType>
108
+ <xs:group name="PrimaryIdentityDocument-ModelGroup">
109
+ <xs:annotation>
110
+ <xs:documentation>�������� ��������, �������������� ��������. �������� ��� ����� ��. ��������.</xs:documentation>
111
+ </xs:annotation>
112
+ <xs:choice>
113
+ <xs:element name="PassportRF" type="tns:PassportRFType">
114
+ <xs:annotation>
115
+ <xs:documentation>������� ��</xs:documentation>
116
+ </xs:annotation>
117
+ </xs:element>
118
+ <xs:element name="ForeignPassport" type="tns:NotRestrictedDocumentType">
119
+ <xs:annotation>
120
+ <xs:documentation>������� ������������ ����������</xs:documentation>
121
+ </xs:annotation>
122
+ </xs:element>
123
+ <xs:element name="ResidencePermitRF" type="tns:InternationalPassportRFType">
124
+ <xs:annotation>
125
+ <xs:documentation>��� �� ���������� � ��. ������ ����� � ������ ��������� � ���������������.</xs:documentation>
126
+ </xs:annotation>
127
+ </xs:element>
128
+ </xs:choice>
129
+ </xs:group>
130
+ <xs:group name="WeakIdentityDocument-ModelGroup">
131
+ <xs:annotation>
132
+ <xs:documentation>���������, �������������� ��������, ������������� ����������.</xs:documentation>
133
+ </xs:annotation>
134
+ <xs:choice>
135
+ <xs:element name="InternationalPassportRF" type="tns:InternationalPassportRFType">
136
+ <xs:annotation>
137
+ <xs:documentation>�������������</xs:documentation>
138
+ </xs:annotation>
139
+ </xs:element>
140
+ <xs:element name="MilitaryPassport" type="tns:MilitaryPassportDocumentType">
141
+ <xs:annotation>
142
+ <xs:documentation>������� �����</xs:documentation>
143
+ </xs:annotation>
144
+ </xs:element>
145
+ <xs:element name="SailorPassport" type="tns:MilitaryPassportDocumentType">
146
+ <xs:annotation>
147
+ <xs:documentation>������� ������</xs:documentation>
148
+ </xs:annotation>
149
+ </xs:element>
150
+ <xs:element name="SovietPassport" type="tns:SovietPassportType">
151
+ <xs:annotation>
152
+ <xs:documentation>������� ����</xs:documentation>
153
+ </xs:annotation>
154
+ </xs:element>
155
+ <xs:element name="BirthCertificate" type="tns:SovietPassportType">
156
+ <xs:annotation>
157
+ <xs:documentation>������������� � ��������</xs:documentation>
158
+ </xs:annotation>
159
+ </xs:element>
160
+ <xs:element name="DrivingLicenseRF" type="tns:DrivingLicenseRFType">
161
+ <xs:annotation>
162
+ <xs:documentation>������������ ������������� ��</xs:documentation>
163
+ </xs:annotation>
164
+ </xs:element>
165
+ </xs:choice>
166
+ </xs:group>
167
+ <xs:group name="TemporaryIdentityDocument-ModelGroup">
168
+ <xs:annotation>
169
+ <xs:documentation>���������, �������������� ��������, ���������.</xs:documentation>
170
+ </xs:annotation>
171
+ <xs:choice>
172
+ <xs:element name="ReleaseCertificate" type="tns:NotRestrictedDocumentType">
173
+ <xs:annotation>
174
+ <xs:documentation>������� �� ������������</xs:documentation>
175
+ </xs:annotation>
176
+ </xs:element>
177
+ <xs:element name="PassportLossCertificate" type="tns:NotRestrictedDocumentType">
178
+ <xs:annotation>
179
+ <xs:documentation>������� �� ����� ��������</xs:documentation>
180
+ </xs:annotation>
181
+ </xs:element>
182
+ <xs:element name="Form9Certificate" type="tns:NotRestrictedDocumentType">
183
+ <xs:annotation>
184
+ <xs:documentation>������� � ����������� �� ����� 9</xs:documentation>
185
+ </xs:annotation>
186
+ </xs:element>
187
+ <xs:element name="TemporaryIdentityCardRF" type="tns:NotRestrictedDocumentType">
188
+ <xs:annotation>
189
+ <xs:documentation>��������� ������������� �������� ���������� �� �� ����� 2�</xs:documentation>
190
+ </xs:annotation>
191
+ </xs:element>
192
+ </xs:choice>
193
+ </xs:group>
194
+ <xs:complexType name="NotRestrictedDocumentType">
195
+ <xs:annotation>
196
+ <xs:documentation>�������� � ��������������������� ������ � �������</xs:documentation>
197
+ </xs:annotation>
198
+ <xs:sequence>
199
+ <xs:element name="Series" type="tns:string-20" minOccurs="0">
200
+ <xs:annotation>
201
+ <xs:documentation>�����</xs:documentation>
202
+ </xs:annotation>
203
+ </xs:element>
204
+ <xs:element name="Number">
205
+ <xs:annotation>
206
+ <xs:documentation>�����</xs:documentation>
207
+ </xs:annotation>
208
+ <xs:simpleType>
209
+ <xs:restriction base="xs:string">
210
+ <xs:pattern value="[0-9�-��-�A-Za-z]{1,25}"/>
211
+ </xs:restriction>
212
+ </xs:simpleType>
213
+ </xs:element>
214
+ <xs:element name="IssueDate" type="xs:date">
215
+ <xs:annotation>
216
+ <xs:documentation>���� ������</xs:documentation>
217
+ </xs:annotation>
218
+ </xs:element>
219
+ <xs:element name="Issuer" type="tns:rus-and-num-200">
220
+ <xs:annotation>
221
+ <xs:documentation>��� �����</xs:documentation>
222
+ </xs:annotation>
223
+ </xs:element>
224
+ </xs:sequence>
225
+ </xs:complexType>
226
+ <xs:complexType name="PassportRFType">
227
+ <xs:annotation>
228
+ <xs:documentation>������� ��</xs:documentation>
229
+ </xs:annotation>
230
+ <xs:sequence>
231
+ <xs:element name="Series" type="tns:digits-4">
232
+ <xs:annotation>
233
+ <xs:documentation>�����</xs:documentation>
234
+ </xs:annotation>
235
+ </xs:element>
236
+ <xs:element name="Number" type="tns:digits-6">
237
+ <xs:annotation>
238
+ <xs:documentation>�����</xs:documentation>
239
+ </xs:annotation>
240
+ </xs:element>
241
+ <xs:element name="IssueDate" type="xs:date">
242
+ <xs:annotation>
243
+ <xs:documentation>���� ������</xs:documentation>
244
+ </xs:annotation>
245
+ </xs:element>
246
+ <xs:element name="Issuer" type="tns:rus-and-num-200">
247
+ <xs:annotation>
248
+ <xs:documentation>��� �����</xs:documentation>
249
+ </xs:annotation>
250
+ </xs:element>
251
+ </xs:sequence>
252
+ </xs:complexType>
253
+ <xs:complexType name="SovietPassportType">
254
+ <xs:annotation>
255
+ <xs:documentation>������� CCCP ��� ������������� � �������� ��.</xs:documentation>
256
+ </xs:annotation>
257
+ <xs:sequence>
258
+ <xs:element name="Series" type="tns:SovietStyleDocumentSeriesType">
259
+ <xs:annotation>
260
+ <xs:documentation>�����</xs:documentation>
261
+ </xs:annotation>
262
+ </xs:element>
263
+ <xs:element name="Number" type="tns:digits-6">
264
+ <xs:annotation>
265
+ <xs:documentation>�����</xs:documentation>
266
+ </xs:annotation>
267
+ </xs:element>
268
+ <xs:element name="IssueDate" type="xs:date">
269
+ <xs:annotation>
270
+ <xs:documentation>���� ������</xs:documentation>
271
+ </xs:annotation>
272
+ </xs:element>
273
+ <xs:element name="Issuer" type="tns:rus-and-num-200">
274
+ <xs:annotation>
275
+ <xs:documentation>��� �����</xs:documentation>
276
+ </xs:annotation>
277
+ </xs:element>
278
+ </xs:sequence>
279
+ </xs:complexType>
280
+ <xs:complexType name="InternationalPassportRFType">
281
+ <xs:annotation>
282
+ <xs:documentation>�������������, ���� ��� �� ���������� � ��.</xs:documentation>
283
+ </xs:annotation>
284
+ <xs:sequence>
285
+ <xs:element name="Series" type="tns:digits-2">
286
+ <xs:annotation>
287
+ <xs:documentation>�����</xs:documentation>
288
+ </xs:annotation>
289
+ </xs:element>
290
+ <xs:element name="Number" type="tns:digits-7">
291
+ <xs:annotation>
292
+ <xs:documentation>�����</xs:documentation>
293
+ </xs:annotation>
294
+ </xs:element>
295
+ <xs:element name="IssueDate" type="xs:date">
296
+ <xs:annotation>
297
+ <xs:documentation>���� ������</xs:documentation>
298
+ </xs:annotation>
299
+ </xs:element>
300
+ <xs:element name="Issuer" type="tns:rus-and-num-200">
301
+ <xs:annotation>
302
+ <xs:documentation>��� �����</xs:documentation>
303
+ </xs:annotation>
304
+ </xs:element>
305
+ </xs:sequence>
306
+ </xs:complexType>
307
+ <xs:complexType name="MilitaryPassportDocumentType">
308
+ <xs:annotation>
309
+ <xs:documentation>������� ����� ��� ������� ������</xs:documentation>
310
+ </xs:annotation>
311
+ <xs:sequence>
312
+ <xs:element name="Series">
313
+ <xs:annotation>
314
+ <xs:documentation>�����</xs:documentation>
315
+ </xs:annotation>
316
+ <xs:simpleType>
317
+ <xs:restriction base="xs:string">
318
+ <xs:length value="2"/>
319
+ <xs:pattern value="[�-�]{2}"/>
320
+ </xs:restriction>
321
+ </xs:simpleType>
322
+ </xs:element>
323
+ <xs:element name="Number" type="tns:digits-7">
324
+ <xs:annotation>
325
+ <xs:documentation>�����</xs:documentation>
326
+ </xs:annotation>
327
+ </xs:element>
328
+ <xs:element name="IssueDate" type="xs:date">
329
+ <xs:annotation>
330
+ <xs:documentation>���� ������</xs:documentation>
331
+ </xs:annotation>
332
+ </xs:element>
333
+ <xs:element name="Issuer" type="tns:rus-and-num-200">
334
+ <xs:annotation>
335
+ <xs:documentation>��� �����</xs:documentation>
336
+ </xs:annotation>
337
+ </xs:element>
338
+ </xs:sequence>
339
+ </xs:complexType>
340
+ <xs:complexType name="DrivingLicenseRFType">
341
+ <xs:annotation>
342
+ <xs:documentation>������������ �������������, �������� � ��</xs:documentation>
343
+ </xs:annotation>
344
+ <xs:sequence>
345
+ <xs:element name="Series">
346
+ <xs:annotation>
347
+ <xs:documentation>�����.
348
+ ��� ����� � ��� ������� ��������� ����� ��� ������������� �������������, ����������� �� 1 ����� 2011 �.,
349
+ ��� ������ ����� ��� ������������� �������������, ����������� ����� 1 ����� 2011 �. ������: 44�� ��� 4403</xs:documentation>
350
+ </xs:annotation>
351
+ <xs:simpleType>
352
+ <xs:restriction base="xs:string">
353
+ <xs:length value="4"/>
354
+ <xs:pattern value="[0-9]{2}([0-9]{2})|([�-�]{2})"/>
355
+ </xs:restriction>
356
+ </xs:simpleType>
357
+ </xs:element>
358
+ <xs:element name="Number" type="tns:digits-6">
359
+ <xs:annotation>
360
+ <xs:documentation>�����</xs:documentation>
361
+ </xs:annotation>
362
+ </xs:element>
363
+ <xs:element name="IssueDate" type="xs:date">
364
+ <xs:annotation>
365
+ <xs:documentation>���� ������</xs:documentation>
366
+ </xs:annotation>
367
+ </xs:element>
368
+ <xs:element name="Issuer" type="tns:rus-and-num-200">
369
+ <xs:annotation>
370
+ <xs:documentation>��� �����</xs:documentation>
371
+ </xs:annotation>
372
+ </xs:element>
373
+ </xs:sequence>
374
+ </xs:complexType>
375
+ <!--========================================== ��������� ��� ����������������� ����� ==========================================-->
376
+ <xs:group name="PhysicalPersonQualifiedName-ModelGroup">
377
+ <xs:annotation>
378
+ <xs:documentation>��� ����������� ����.</xs:documentation>
379
+ </xs:annotation>
380
+ <xs:sequence>
381
+ <xs:element name="FamilyName" type="tns:rus-100">
382
+ <xs:annotation>
383
+ <xs:documentation>�������</xs:documentation>
384
+ </xs:annotation>
385
+ </xs:element>
386
+ <xs:element name="FirstName" type="tns:rus-100">
387
+ <xs:annotation>
388
+ <xs:documentation>���</xs:documentation>
389
+ </xs:annotation>
390
+ </xs:element>
391
+ <xs:element name="Patronymic" type="tns:rus-100" minOccurs="0">
392
+ <xs:annotation>
393
+ <xs:documentation>��������</xs:documentation>
394
+ </xs:annotation>
395
+ </xs:element>
396
+ </xs:sequence>
397
+ </xs:group>
398
+ <xs:group name="PhysicalPersonIdentificationInformation-ModelGroup">
399
+ <xs:annotation>
400
+ <xs:documentation>������������ ������ ����������� ����: ��� + ���� � ����� ��������.</xs:documentation>
401
+ </xs:annotation>
402
+ <xs:sequence>
403
+ <xs:group ref="tns:PhysicalPersonQualifiedName-ModelGroup"/>
404
+ <xs:element name="BirthDate" type="xs:date">
405
+ <xs:annotation>
406
+ <xs:documentation>���� ��������</xs:documentation>
407
+ </xs:annotation>
408
+ </xs:element>
409
+ <xs:element name="BirthPlace" type="tns:rus-and-num-500">
410
+ <xs:annotation>
411
+ <xs:documentation>����� ��������</xs:documentation>
412
+ </xs:annotation>
413
+ </xs:element>
414
+ </xs:sequence>
415
+ </xs:group>
416
+ <!--========================================== ������� ���� ==========================================-->
417
+ <xs:simpleType name="RFC2046MimeTypesType">
418
+ <xs:annotation>
419
+ <xs:documentation>���� ��������, � ������� RFC-2046.</xs:documentation>
420
+ </xs:annotation>
421
+ <xs:restriction base="xs:string">
422
+ <xs:pattern value="(text|image|audio|video|application)/[a-zA-Z0-9\-+.]*"/>
423
+ </xs:restriction>
424
+ </xs:simpleType>
425
+ <xs:simpleType name="PostalCodeRFType">
426
+ <xs:annotation>
427
+ <xs:documentation>�������� ������, ��.
428
+ ��������� ������� ������������ � length � pattern, ����� ��������� JavaScript ���� ��������� "�� ����".</xs:documentation>
429
+ </xs:annotation>
430
+ <xs:restriction base="xs:string">
431
+ <xs:length value="6"/>
432
+ <xs:pattern value="\d{6}"/>
433
+ </xs:restriction>
434
+ </xs:simpleType>
435
+ <xs:simpleType name="PhoneNumberRFType">
436
+ <xs:annotation>
437
+ <xs:documentation>����� �������� � ��, � ������������� �������</xs:documentation>
438
+ </xs:annotation>
439
+ <xs:restriction base="xs:string">
440
+ <xs:maxLength value="10"/>
441
+ <xs:pattern value="\d{10}"/>
442
+ </xs:restriction>
443
+ </xs:simpleType>
444
+ <xs:simpleType name="EmailAddressType">
445
+ <xs:annotation>
446
+ <xs:documentation>����� ����������� �����</xs:documentation>
447
+ </xs:annotation>
448
+ <xs:restriction base="xs:string">
449
+ <xs:maxLength value="100"/>
450
+ <xs:pattern value="[0-9a-zA-Z_.\-]{2,50}[@]{1}[0-9a-zA-Z_./-]{2,50}[.]{1}[a-zA-Z]{2,5}"/>
451
+ </xs:restriction>
452
+ </xs:simpleType>
453
+ <xs:simpleType name="LegalPersonINNType">
454
+ <xs:annotation>
455
+ <xs:documentation>��� ������������ ����</xs:documentation>
456
+ </xs:annotation>
457
+ <xs:restriction base="xs:string">
458
+ <xs:length value="10"/>
459
+ <xs:pattern value="\d{10}"/>
460
+ </xs:restriction>
461
+ </xs:simpleType>
462
+ <xs:simpleType name="PhysicalPersonINNType">
463
+ <xs:annotation>
464
+ <xs:documentation>��� ����������� ����</xs:documentation>
465
+ </xs:annotation>
466
+ <xs:restriction base="xs:string">
467
+ <xs:length value="12"/>
468
+ <xs:pattern value="\d{12}"/>
469
+ </xs:restriction>
470
+ </xs:simpleType>
471
+ <xs:simpleType name="SNILSType">
472
+ <xs:annotation>
473
+ <xs:documentation>�����</xs:documentation>
474
+ </xs:annotation>
475
+ <xs:restriction base="xs:string">
476
+ <xs:length value="11"/>
477
+ <xs:pattern value="\d{11}"/>
478
+ </xs:restriction>
479
+ </xs:simpleType>
480
+ <xs:simpleType name="KPPType">
481
+ <xs:annotation>
482
+ <xs:documentation>���</xs:documentation>
483
+ </xs:annotation>
484
+ <xs:restriction base="xs:string">
485
+ <xs:length value="9"/>
486
+ <xs:pattern value="\d{9}"/>
487
+ </xs:restriction>
488
+ </xs:simpleType>
489
+ <xs:simpleType name="OGRNCompanyType">
490
+ <xs:annotation>
491
+ <xs:documentation>���� ������������ ����</xs:documentation>
492
+ </xs:annotation>
493
+ <xs:restriction base="xs:string">
494
+ <xs:length value="13"/>
495
+ <xs:pattern value="[125]{1}\d{12}"/>
496
+ </xs:restriction>
497
+ </xs:simpleType>
498
+ <xs:simpleType name="OGRNSoleProprietorType">
499
+ <xs:annotation>
500
+ <xs:documentation>���� ��������������� ���������������</xs:documentation>
501
+ </xs:annotation>
502
+ <xs:restriction base="xs:string">
503
+ <xs:length value="15"/>
504
+ <xs:pattern value="[3]{1}\d{14}"/>
505
+ </xs:restriction>
506
+ </xs:simpleType>
507
+ <xs:simpleType name="CadastralNumberType">
508
+ <xs:annotation>
509
+ <xs:documentation>����������� ����� ������� ������������</xs:documentation>
510
+ </xs:annotation>
511
+ <xs:restriction base="xs:string">
512
+ <xs:maxLength value="40"/>
513
+ <xs:pattern value="\d{2}:\d{2}:\d{6,7}:\d{1,}"/>
514
+ </xs:restriction>
515
+ </xs:simpleType>
516
+ <xs:simpleType name="OKATOType">
517
+ <xs:annotation>
518
+ <xs:documentation>��� �����</xs:documentation>
519
+ </xs:annotation>
520
+ <xs:restriction base="xs:string">
521
+ <xs:maxLength value="11"/>
522
+ <xs:pattern value="\d{1,11}"/>
523
+ </xs:restriction>
524
+ </xs:simpleType>
525
+ <xs:simpleType name="GenderType">
526
+ <xs:annotation>
527
+ <xs:documentation>���.</xs:documentation>
528
+ </xs:annotation>
529
+ <xs:restriction base="xs:string">
530
+ <xs:enumeration value="Male"/>
531
+ <xs:enumeration value="Female"/>
532
+ </xs:restriction>
533
+ </xs:simpleType>
534
+ <xs:simpleType name="SovietStyleDocumentSeriesType">
535
+ <xs:annotation>
536
+ <xs:documentation>����� ����������, ����� ��� ������������� � ��������, ��������� ��������, � �.�: ������� �����, ����, ��� ��������� ����� ���������.</xs:documentation>
537
+ </xs:annotation>
538
+ <xs:restriction base="xs:string">
539
+ <xs:maxLength value="6"/>
540
+ <xs:pattern value="[IVXLCDM]{1,3}[\-][�-�]{2}"/>
541
+ </xs:restriction>
542
+ </xs:simpleType>
543
+ <xs:simpleType name="digits-7">
544
+ <xs:annotation>
545
+ <xs:documentation>������, ��������� �� ���� ����. �������� ����� ��������������.</xs:documentation>
546
+ </xs:annotation>
547
+ <xs:restriction base="xs:string">
548
+ <xs:length value="7"/>
549
+ <xs:pattern value="\d{7}"/>
550
+ </xs:restriction>
551
+ </xs:simpleType>
552
+ <xs:simpleType name="digits-6">
553
+ <xs:annotation>
554
+ <xs:documentation>������, ��������� �� ����� ����. �������� ����� �������� ��.</xs:documentation>
555
+ </xs:annotation>
556
+ <xs:restriction base="xs:string">
557
+ <xs:length value="6"/>
558
+ <xs:pattern value="\d{6}"/>
559
+ </xs:restriction>
560
+ </xs:simpleType>
561
+ <xs:simpleType name="digits-4">
562
+ <xs:annotation>
563
+ <xs:documentation>������, ��������� �� ������ ����. �������� ����� �������� ��.</xs:documentation>
564
+ </xs:annotation>
565
+ <xs:restriction base="xs:string">
566
+ <xs:length value="4"/>
567
+ <xs:pattern value="\d{4}"/>
568
+ </xs:restriction>
569
+ </xs:simpleType>
570
+ <xs:simpleType name="digits-2">
571
+ <xs:annotation>
572
+ <xs:documentation>������, ��������� �� ���� ����. �������� ����� ��������������.</xs:documentation>
573
+ </xs:annotation>
574
+ <xs:restriction base="xs:string">
575
+ <xs:length value="2"/>
576
+ <xs:pattern value="\d{2}"/>
577
+ </xs:restriction>
578
+ </xs:simpleType>
579
+ <xs:simpleType name="rus-and-num">
580
+ <xs:annotation>
581
+ <xs:documentation>������� �����. ����������� ����� �������, �����, �����, �������, ����, ���������.</xs:documentation>
582
+ </xs:annotation>
583
+ <xs:restriction base="xs:string">
584
+ <xs:pattern value="[�-��-߸�\-0-9][�-��-߸�\-\s'',.0-9]*"/>
585
+ </xs:restriction>
586
+ </xs:simpleType>
587
+ <xs:simpleType name="rus-and-num-500">
588
+ <xs:annotation>
589
+ <xs:documentation>������� �����, ������ �� 500 ��������.</xs:documentation>
590
+ </xs:annotation>
591
+ <xs:restriction base="tns:rus-and-num">
592
+ <xs:maxLength value="500"/>
593
+ </xs:restriction>
594
+ </xs:simpleType>
595
+ <xs:simpleType name="rus-and-num-200">
596
+ <xs:annotation>
597
+ <xs:documentation>������� �����, ������ �� 200 ��������.</xs:documentation>
598
+ </xs:annotation>
599
+ <xs:restriction base="tns:rus-and-num">
600
+ <xs:maxLength value="200"/>
601
+ </xs:restriction>
602
+ </xs:simpleType>
603
+ <xs:simpleType name="rus-and-num-100">
604
+ <xs:annotation>
605
+ <xs:documentation>������� �����, ������ �� 100 ��������.</xs:documentation>
606
+ </xs:annotation>
607
+ <xs:restriction base="tns:rus-and-num">
608
+ <xs:maxLength value="100"/>
609
+ </xs:restriction>
610
+ </xs:simpleType>
611
+ <xs:simpleType name="rus-and-num-50">
612
+ <xs:annotation>
613
+ <xs:documentation>������� �����, ������ �� 50 ��������.</xs:documentation>
614
+ </xs:annotation>
615
+ <xs:restriction base="tns:rus-and-num">
616
+ <xs:maxLength value="50"/>
617
+ </xs:restriction>
618
+ </xs:simpleType>
619
+ <xs:simpleType name="rus">
620
+ <xs:annotation>
621
+ <xs:documentation>������� �����. ����������� ����� �������, �����, �������, ����, ���������. ����� �� �����������.</xs:documentation>
622
+ </xs:annotation>
623
+ <xs:restriction base="xs:string">
624
+ <xs:pattern value="[�-��-߸�\-0-9][�-��-߸�\-\s'',.]*"/>
625
+ </xs:restriction>
626
+ </xs:simpleType>
627
+ <xs:simpleType name="rus-500">
628
+ <xs:annotation>
629
+ <xs:documentation>������� �����, ������ �� 500 ��������, ����� �� �����������.</xs:documentation>
630
+ </xs:annotation>
631
+ <xs:restriction base="tns:rus">
632
+ <xs:maxLength value="500"/>
633
+ </xs:restriction>
634
+ </xs:simpleType>
635
+ <xs:simpleType name="rus-200">
636
+ <xs:annotation>
637
+ <xs:documentation>������� �����, ������ �� 200 ��������, ����� �� �����������.</xs:documentation>
638
+ </xs:annotation>
639
+ <xs:restriction base="tns:rus">
640
+ <xs:maxLength value="200"/>
641
+ </xs:restriction>
642
+ </xs:simpleType>
643
+ <xs:simpleType name="rus-100">
644
+ <xs:annotation>
645
+ <xs:documentation>������� �����, ������ �� 100 ��������, ����� �� �����������.</xs:documentation>
646
+ </xs:annotation>
647
+ <xs:restriction base="tns:rus">
648
+ <xs:maxLength value="100"/>
649
+ </xs:restriction>
650
+ </xs:simpleType>
651
+ <xs:simpleType name="rus-50">
652
+ <xs:annotation>
653
+ <xs:documentation>������� �����, ������ �� 50 ��������, ����� �� �����������.</xs:documentation>
654
+ </xs:annotation>
655
+ <xs:restriction base="tns:rus">
656
+ <xs:maxLength value="50"/>
657
+ </xs:restriction>
658
+ </xs:simpleType>
659
+ <xs:simpleType name="string-500">
660
+ <xs:restriction base="xs:string">
661
+ <xs:maxLength value="500"/>
662
+ </xs:restriction>
663
+ </xs:simpleType>
664
+ <xs:simpleType name="string-200">
665
+ <xs:restriction base="xs:string">
666
+ <xs:maxLength value="200"/>
667
+ </xs:restriction>
668
+ </xs:simpleType>
669
+ <xs:simpleType name="string-100">
670
+ <xs:restriction base="xs:string">
671
+ <xs:maxLength value="100"/>
672
+ </xs:restriction>
673
+ </xs:simpleType>
674
+ <xs:simpleType name="string-50">
675
+ <xs:restriction base="xs:string">
676
+ <xs:maxLength value="50"/>
677
+ </xs:restriction>
678
+ </xs:simpleType>
679
+ <xs:simpleType name="string-20">
680
+ <xs:restriction base="xs:string">
681
+ <xs:maxLength value="20"/>
682
+ </xs:restriction>
683
+ </xs:simpleType>
684
+ <xs:simpleType name="string-10">
685
+ <xs:restriction base="xs:string">
686
+ <xs:maxLength value="10"/>
687
+ </xs:restriction>
688
+ </xs:simpleType>
689
+ </xs:schema>
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://kvs.pfr.com/snils-by-additionalData/1.0.1" xmlns:smev="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" xmlns:pfr="http://common.kvs.pfr.com/1.0.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" targetNamespace="http://kvs.pfr.com/snils-by-additionalData/1.0.1" elementFormDefault="qualified" jxb:version="2.0">
3
+ <import namespace="urn://x-artefacts-smev-gov-ru/supplementary/commons/1.0.1" schemaLocation="commons/smev-supplementary-commons-1.0.1.xsd"/>
4
+ <import namespace="http://common.kvs.pfr.com/1.0.0" schemaLocation="commons/pfr-common-types-1.0.0.xsd"/>
5
+ <element name="SnilsByAdditionalDataRequest">
6
+ <complexType>
7
+ <sequence>
8
+ <group ref="smev:PhysicalPersonQualifiedName-ModelGroup"/>
9
+ <element name="BirthDate" type="date" nillable="false"/>
10
+ <element name="Gender" type="smev:GenderType" nillable="false"/>
11
+ <element name="BirthPlace" type="pfr:BirthPlaceType" minOccurs="0"/>
12
+ <group ref="pfr:AllIdentityDocumentType-Group" minOccurs="0"/>
13
+ </sequence>
14
+ </complexType>
15
+ </element>
16
+ <element name="SnilsByAdditionalDataResponse">
17
+ <complexType>
18
+ <sequence>
19
+ <group ref="smev:PhysicalPersonQualifiedName-ModelGroup"/>
20
+ <element name="Snils" type="smev:SNILSType" nillable="false"/>
21
+ <element name="BirthDate" type="date" nillable="false"/>
22
+ <element name="Gender" type="smev:GenderType" nillable="false"/>
23
+ <element name="BirthPlace" type="pfr:BirthPlaceType" minOccurs="0"/>
24
+ <group ref="pfr:AllIdentityDocumentType-Group" minOccurs="0"/>
25
+ </sequence>
26
+ </complexType>
27
+ </element>
28
+ </schema>
29
+
package/test/test.js CHANGED
@@ -255,7 +255,10 @@ async function test_005_schemata (fn) {
255
255
 
256
256
  console.log (xs.stringify (
257
257
 
258
- {childDotation2Request: {
258
+ {childDotation2Request: {
259
+ Message: {
260
+ TestMsg: "Тестовый запроc",
261
+ },
259
262
  MessageData: {
260
263
  AppData: {
261
264
  info
@@ -267,6 +270,39 @@ async function test_005_schemata (fn) {
267
270
 
268
271
  }
269
272
 
273
+ async function test_006_schemata (fn) {
274
+
275
+ const xs = await XMLSchemata.fromFile ('test/snils-by-additionalData-1.0.1.xsd')
276
+
277
+ const data = {
278
+ "SnilsByAdditionalDataRequest": {
279
+ "FamilyName": "ИВАНОВ",
280
+ "FirstName": "ИВАН",
281
+ "Patronymic": "ИВАНОВИЧ",
282
+ "BirthDate": "1967-05-21",
283
+ "Gender": "Male",
284
+ "BirthPlace": {
285
+ "PlaceType": "ОСОБОЕ",
286
+ "Settlement": "ЗАГОРСК",
287
+ "District": "ЛЕНИНСКИЙ",
288
+ "Region": "МОСКОВСКАЯ ОБЛАСТЬ",
289
+ "Country": "РФ"
290
+ },
291
+ "PassportRF": {
292
+ "Series": "0005",
293
+ "Number": "777777",
294
+ "IssueDate": "1986-06-13",
295
+ "Issuer": "ОВД"
296
+ }
297
+ }
298
+ }
299
+
300
+ // const m = xs.createMarshaller ('AppDataChildDotation', 'http://smev.gosuslugi.ru/rev111111')
301
+
302
+ console.log (xs.stringify (data))
303
+
304
+ }
305
+
270
306
  async function main () {
271
307
 
272
308
  // await test_001_lexer_sync ('E05a.xml')
@@ -281,8 +317,9 @@ async function main () {
281
317
  // await test_003_emitter_sync ('not-sa01.xml')
282
318
  // await test_003_emitter_sync ('ent.xml')
283
319
  // await test_003_emitter_sync ('soap.xml')
284
- // await test_004_schemata ()
320
+ await test_004_schemata ()
285
321
  await test_005_schemata ()
322
+ await test_006_schemata ()
286
323
 
287
324
  }
288
325