xml-toolkit 1.0.3 → 1.0.6

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.
@@ -41,7 +41,25 @@ const XMLMarshaller = class {
41
41
 
42
42
  const qName = this.ns.QName (name || this.schemaElement.name, this.schema.targetNamespace)
43
43
 
44
- const {complexType, sequence, choice, all} = this.schemaElement, group = sequence || choice || all
44
+ let {complexType, sequence, choice, all, type} = this.schemaElement, group = sequence || choice || all
45
+
46
+ if (type) {
47
+
48
+ type = this.xs.getByReference (type)
49
+
50
+ switch (type._type) {
51
+
52
+ case 'complexType':
53
+ complexType = type
54
+ break
55
+
56
+ case 'simpleType':
57
+ simpleType = type
58
+ break
59
+
60
+ }
61
+
62
+ }
45
63
 
46
64
  let buf = ['<' + qName]
47
65
 
@@ -295,7 +313,9 @@ const XMLMarshaller = class {
295
313
 
296
314
  if (element) {
297
315
 
298
- 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)
299
319
 
300
320
  const c = content [e.name]
301
321
 
package/lib/XMLSchema.js CHANGED
@@ -78,7 +78,7 @@ XMLSchema.adjustNode = node => {
78
78
 
79
79
  const [local, prefix] = attributes.get (name).split (':').reverse ()
80
80
 
81
- attributes.set (name, [local, namespacesMap.get (prefix)])
81
+ attributes.set (name, [local, namespacesMap.get (prefix || '')])
82
82
 
83
83
  }
84
84
 
@@ -86,6 +86,7 @@ XMLSchema.adjustNode = node => {
86
86
 
87
87
  case 'attribute':
88
88
  case 'element':
89
+ splitNs ('ref')
89
90
  splitNs ('type')
90
91
  break
91
92
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xml-toolkit",
3
- "version": "1.0.3",
3
+ "version": "1.0.6",
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
@@ -251,10 +251,56 @@ async function test_005_schemata (fn) {
251
251
 
252
252
  }, {info} = data.AppData
253
253
 
254
- const m = xs.createMarshaller ('AppDataChildDotation', 'http://smev.gosuslugi.ru/rev111111')
255
-
256
- console.log (m.stringify ({info}, 'AppData'))
257
-
254
+ // const m = xs.createMarshaller ('AppDataChildDotation', 'http://smev.gosuslugi.ru/rev111111')
255
+
256
+ console.log (xs.stringify (
257
+
258
+ {childDotation2Request: {
259
+ Message: {
260
+ TestMsg: "Тестовый запроc",
261
+ },
262
+ MessageData: {
263
+ AppData: {
264
+ info
265
+ }
266
+ }
267
+ }}
268
+
269
+ ))
270
+
271
+ }
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
+
258
304
  }
259
305
 
260
306
  async function main () {
@@ -273,6 +319,7 @@ async function main () {
273
319
  // await test_003_emitter_sync ('soap.xml')
274
320
  await test_004_schemata ()
275
321
  await test_005_schemata ()
322
+ await test_006_schemata ()
276
323
 
277
324
  }
278
325