Форум программистов, компьютерный форум, киберфорум
XML/XSL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24

Можно ли включить в визуализатор XSLT библиотеки из XSD файлов

11.04.2023, 16:13. Показов 3884. Ответов 31
Метки xml, xsd, xsl, xslt (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Написал визуализатор XSLT для XML. В XML есть поля с кодами расшифровка которых находится во внешних XSD. В них лежат простые enumetation - по сути это справочники.
Что бы визуализатор нормально работал в папке с XSL должна лежать папка с этими справочниками.

Вопрос: Есть ли возможность каким-либо способом запихнуть в визуализатор XSLT эти файлы (физически) чтобы он (визуализатор) не зависел от внешних файлов?

Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2023, 16:13
Ответы с готовыми решениями:

Как получить значение в XSLT преобразовании из XSD привязанного к XML
Добрый день! Начал разбираться с XSLT преобразованиями для XML-документов. Пока опыта не очень... Сложилась следующая ситуация: ...

"mixed" в xsd, вставить в xslt
Вот xml: <FAKULTET> Computer Science <DECAN_NAME>Mike Mike</DECAN_NAME>........ Вот xsd: <xs:complexType...

Как включить библиотеки в исполняемый файл, чтобы не приходилось ставить библиотеки (Eclipse)
Как включить библиотеки в конечный EXE как это сделано в bilder, чтобы не приходилось ставить библиотеки.

31
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
26.04.2023, 19:05  [ТС]
Студворк — интернет-сервис помощи студентам
Блин... А я уж понадеялся что просто я криворукий...
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.04.2023, 19:15
gurant_kopr, короче говоря, судя по всему это в браузере это решение не прокатит. Я посмотрел, проблема действительно именно в той строчке о которой ты написал и насколько я понял решение, которое я предложил, здесь использовать нельзя. Так что функция document() тут, судя по всему, альтернативы не имеет.
1
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
26.04.2023, 19:39  [ТС]
Беда...
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.04.2023, 19:41
Цитата Сообщение от gurant_kopr Посмотреть сообщение
Беда...
А в чем проблема с использованием document()?
0
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
26.04.2023, 19:54  [ТС]
Если написать так:
XML
1
<xsl:text>По новому:</xsl:text><xsl:value-of select="$xsdCountry"/>
то в выходном файле нет ошибки, но показывается все содержимое переменной. Т.е. можно сделать вывод что не правильно идёт обращение к simpleType. Методом научного тыка у меня не получается найти верный метод
Миниатюры
Можно ли включить в визуализатор XSLT библиотеки из XSD файлов  
0
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
26.04.2023, 20:01  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
А в чем проблема с использованием document()?
Дело в том что этот визуализатор не используется на прямую - т.е. скинули файл, зашел в папку и нажал Enter.
Там целый процесс - и XML, и XSLT загружаются в виде бинарных строк в некий проект и там запускаются на визуализацию. Потому и внешние библиотеки надо затрамбовать в сам визуализатор.

Конструкцию с document() этот процесс видимо не понимает (т.к. она подразумевает обращение к себе как файлу), а его то и нет в этой реализации. В общем гемор...
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
26.04.2023, 20:34
Цитата Сообщение от gurant_kopr Посмотреть сообщение
Т.е. можно сделать вывод что не правильно идёт обращение к simpleType. Методом научного тыка у меня не получается найти верный метод
Здесь нет верного метода. Здесь вопрос был только в том, будет ли эта переменная восприниматься процессором как набор узлов или как обычная строка. Браузер воспринимает ее как строку, скорей всего это и есть стандарт, а саксон работает неправильно, по всей видимости из-за того, что он изначально создавался под вторую и третью версии XSLT. Поэтому не нужно искать верный метод, его просто нет. Здесь нужно использовать другие подходы. Наиболее очевидный - использовать функцию document(), которая будет тянуть данные из внешнего файла. Другой вариант - выполнять преобразование на сервере. Можно также актуальные данные переработать и внедрить в преобразование в виде набора переменных. Это костыль, но если "кровь из носа" надо, то можно поизголяться. Можно выполнять преобразование заранее и грузить на сервер готовые HTML. Я не знаю, что будет более удобно, но в любом случае придется менять подход.

Добавлено через 3 минуты
Цитата Сообщение от gurant_kopr Посмотреть сообщение
Там целый процесс - и XML, и XSLT загружаются в виде бинарных строк в некий проект и там запускаются на визуализацию. Потому и внешние библиотеки надо затрамбовать в сам визуализатор.
Здесь наиболее вменяемое решение - это уже в самом преобразовании заменить коды на то, что им соответствует. Я понимаю, что там их может быть много, но это можно сделать с помощью другого преобразования или как-то программно.

Добавлено через 22 минуты
Можно добавить в преобразование переменную, в которой будут содержаться данные в формате вроде CSV. Ну например, что-то типа848000000643:РОССИЯ;848000000646:РУАНДА; и так далее. И данные выбирать из нее можно с помощью функций substring-before и substring-after.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
<?xml version="1.0" encoding="UTF-8"?>
<!--Designed and generated by Altova StyleVision Enterprise Edition 2021 rel. 2 sp1 (x64) - see http://www.altova.com/stylevision for more information.-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:AlCom2="urn://x-artefacts-rosreestr-ru/commons/complex-types/all-complex-types/2.0.1" xmlns:Alsim3="urn://x-artefacts-rosreestr-ru/commons/all-simple-type/3.0" xmlns:Cult3="urn://x-artefacts-rosreestr-ru/commons/complex-types/cultural-heritage/3.0.1" xmlns:adIn12="urn://x-artefacts-rosreestr-ru/commons/complex-types/address-input/12.0.1" xmlns:altova="http://www.altova.com" xmlns:altova-xfi="http://www.altova.com/xslt-extensions/xbrl" xmlns:altovaext="http://www.altova.com/xslt-extensions" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:clitype="clitype" xmlns:dAf2="urn://x-artefacts-rosreestr-ru/commons/directories/ass-flat/2.0.1" xmlns:dAft1="urn://x-artefacts-rosreestr-ru/commons/directories/ass-flat-type/1.0.1" xmlns:dAgk1="urn://x-artefacts-rosreestr-ru/commons/directories/agent-kind/1.0.1" xmlns:dAl5="urn://x-artefacts-rosreestr-ru/commons/directories/all-documents/5.0.1" xmlns:dAsb4="urn://x-artefacts-rosreestr-ru/commons/directories/ass-building/4.0.1" xmlns:dBnd3="urn://x-artefacts-rosreestr-ru/commons/directories/boundary-type/3.0.1" xmlns:dCateg1="urn://x-artefacts-rosreestr-ru/commons/directories/categories/1.0.1" xmlns:dCount1="urn://x-artefacts-rosreestr-ru/commons/directories/countries/1.0.1" xmlns:dCult1="urn://x-artefacts-rosreestr-ru/commons/directories/cultural/1.0.1" xmlns:dEn6="urn://x-artefacts-rosreestr-ru/commons/directories/encumbrances/6.0.1" xmlns:dIndv1="urn://x-artefacts-rosreestr-ru/commons/directories/individuals/1.0.1" xmlns:dOpf1="urn://x-artefacts-rosreestr-ru/commons/directories/okopf/1.0.1" xmlns:dPers1="urn://x-artefacts-rosreestr-ru/commons/directories/person-type/1.0.1" xmlns:dRF3="urn://x-artefacts-rosreestr-ru/commons/directories/regions/3.0.1" xmlns:dRe4="urn://x-artefacts-rosreestr-ru/commons/directories/realty/4.0.1" xmlns:dRi3="urn://x-artefacts-rosreestr-ru/commons/directories/rights/3.0.1" xmlns:dTs1="urn://x-artefacts-rosreestr-ru/commons/directories/type-storey/1.0.1" xmlns:dWa2="urn://x-artefacts-rosreestr-ru/commons/directories/wall/2.0.1" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:java="java" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:n1="urn://x-artefacts-rosreestr-ru/incoming/contract-sales/2.0.1" xmlns:sps="http://www.altova.com/StyleVision/user-xpath-functions" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xff="http://www.xbrl.org/2010/function/formula" xmlns:xfi="http://www.xbrl.org/2008/function/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="AlCom2 Alsim3 Cult3 adIn12 altova altova-xfi altovaext array clitype dAf2 dAft1 dAgk1 dAl5 dAsb4 dBnd3 dCateg1 dCount1 dCult1 dEn6 dIndv1 dOpf1 dPers1 dRF3 dRe4 dRi3 dTs1 dWa2 fn iso4217 java link map math n1 sps xbrldi xbrli xff xfi xlink xs xsd xsi">
    <xsl:output version="4.0" method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
    <xsl:param name="SV_OutputFormat" select="'HTML'"/>
    <xsl:param name="signTableContent"/>
    <xsl:variable name="XML" select="/"/>
    <xsl:variable name="altova:nPxPerIn" select="96"/>
    <xsl:decimal-format name="format1" grouping-separator=" " decimal-separator=","/>
    
    
    <xsl:variable name="xsdCountry">848000000643:РОССИЯ;848000000646:РУАНДА;</xsl:variable> 
    
    
    <xsl:template match="/">
        <html>
            <head>
                <title/>
                <meta name="generator" content="Altova StyleVision Enterprise Edition 2021 rel. 2 sp1 (x64) (http://www.altova.com)"/>
                <meta http-equiv="X-UA-Compatible" content="IE=9"/>
                <xsl:comment>[if IE]&gt;&lt;STYLE type=&quot;text/css&quot;&gt;.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} &lt;/STYLE&gt;&lt;![endif]</xsl:comment>
                <xsl:comment>[if !IE]&gt;&lt;!</xsl:comment>
                <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style>
                <xsl:comment>&lt;![endif]</xsl:comment>
                <style type="text/css">@page { margin-left:57px; margin-right:57px; margin-top:75px; margin-bottom:75px } @media print { br.altova-page-break { page-break-before: always; } div.altova-page-break { page-break-before: always; } }</style>
            </head>
            <body style="border-collapse:collapse; font-family:Calibri; width:1000px; ">
                <table style="border-collapse:collapse; " align="center" border="1" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_0" select="."/>
                    <tbody>
                        <tr>
                            <td style="width:257px; ">
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>Версия схемы:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>02</xsl:text>
                                </span>
                                <span style="color:#b4b4b4; ">
                                    <xsl:text> </xsl:text>
                                </span>
                            </td>
                            <td colspan="2" style="text-align:right; width:529px; " align="center">
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>GUID:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="@GUID">
                                            <span>
                                                <xsl:value-of select="string(.)"/>
                                            </span>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                        <tr style="background-color:whitesmoke; ">
                            <td style="text-align:center; width:257px; "/>
                            <td style="text-align:center; width:529px; " align="center">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentName">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                            <td style="text-align:center; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentNumber">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="3" style="text-align:center; width:257px; "/>
                        </tr>
                        <tr>
                            <td style="text-align:center; width:257px; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:PlaceDetention">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                            <td style="text-align:center; width:529px; " align="center"/>
                            <td style="text-align:center; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentDate">
                                                <h3>
                                                    <span>
                                                        <xsl:variable name="altova:seqContentStrings_1">
                                                            <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/>
                                                            <xsl:text>. </xsl:text>
                                                            <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/>
                                                            <xsl:text>. </xsl:text>
                                                            <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/>
                                                        </xsl:variable>
                                                        <xsl:variable name="altova:sContent_1" select="string($altova:seqContentStrings_1)"/>
                                                        <xsl:value-of select="$altova:sContent_1"/>
                                                    </span>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <br/>
                <table style="background-color:#f0f0f0; border-collapse:collapse; " align="center" border="1" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_2" select="."/>
                    <tbody>
                        <tr>
                            <td style="text-align:center; width:auto; ">
                                <h3>
                                    <span>
                                        <xsl:text>Продавцы</xsl:text>
                                    </span>
                                </h3>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <table border="0" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_3" select="."/>
                    <tbody>
                        <xsl:for-each select="$XML">
                            <xsl:for-each select="n1:ContractSales">
                                <xsl:for-each select="n1:PartiesContract">
                                    <xsl:for-each select="n1:Sellers">
                                        <xsl:for-each select="n1:Seller">
                                            <xsl:variable name="doc_citizen" select="document('')//xs:schema/xs:simpleType[@name='dCountries']/xs:restriction"/>
                                            <xsl:variable name="cod_public" select="n1:PublicFormation/AlCom2:ForeignPublicCode"/>
                                            <tr>
                                                <td style="border-collapse:collapse; ">
                                                    <table style="border-collapse:collapse; " border="1" width="100%">
                                                        <xsl:variable name="altova:CurrContextGrid_4" select="."/>
                                                        <tbody>
                                                            <tr>
                                                                <td style="border-collapse:collapse; ">
                                                                    <span style="font-weight:bold; ">
                                                                        <xsl:text>Продавец №</xsl:text>
                                                                    </span>
                                                                    <span style="font-weight:bold; ">
                                                                        <xsl:value-of select="position()"/>
                                                                    </span>
                                                                </td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                    <xsl:choose>
                                                        <xsl:when test="n1:Resident">
                                                            <xsl:call-template name="common_Resident">
                                                                <xsl:with-param name="main" select="n1:Resident"/>
                                                            </xsl:call-template>
                                                        </xsl:when>
                                                    </xsl:choose>
                                                    <xsl:if test="n1:Representative">
                                                        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
                                                            <xsl:variable name="altova:CurrContextGrid_6" select="."/>
                                                            <tbody>
                                                                <tr>
                                                                    <td style="border-collapse:collapse; border-top-style:none; ">
                                                                        <span style="font-weight:bold; ">
                                                                            <xsl:text>Представитель продавца:</xsl:text>
                                                                        </span>
                                                                    </td>
                                                                </tr>
                                                            </tbody>
                                                        </table>
                                                        <xsl:call-template name="common_Individual">
                                                            <xsl:with-param name="main" select="n1:Representative/AlCom2:Individual"/>
                                                            <xsl:with-param name="Title" select="&apos;&apos;"/>
                                                            <xsl:with-param name="Short" select="false()"/>
                                                            <xsl:with-param name="Appoint" select="n1:Representative/AlCom2:Appointment"/>
                                                        </xsl:call-template>
                                                    </xsl:if>
                                                </td>
                                            </tr>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </xsl:for-each>
                        </xsl:for-each>
                    </tbody>
                </table>
                <br/>
            </body>
        </html>
    </xsl:template>
    
    <xsl:template name="common_Individual">
        <xsl:param name="main" select="&apos;&apos;"/>
        <xsl:param name="Title" select="&apos;Физическое лицо:&apos;"/>
        <xsl:param name="Title2" select="&apos;Физическое лицо:&apos;"/>
        <xsl:param name="Appoint" select="&apos;&apos;"/>
        <xsl:param name="Short" select="false()"/>
        <xsl:param name="cod_citizen" select="$main/AlCom2:Citizenship/AlCom2:PersonCitizenshipCountry"/>
        <xsl:param name="cod_identity" select="$main/AlCom2:IdentityDoc/AlCom2:DocumentCode"/>
        <xsl:param name="doc_citizen" select="document('')//xs:schema/xs:simpleType[@name='dCountries']/xs:restriction"/>
        <xsl:param name="doc_identity" select="document('')//xs:schema/xs:simpleType[@name='dAllDocuments']/xs:restriction"/>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_148" select="."/>
            <tbody>
                <tr style="height:0.19in; ">
                    <td colspan="5" style="border-collapse:collapse; border-top-style:none; width:2.67in; ">
                        <span style="font-family:Calibri; font-size:12pt; font-weight:bold; ">
                            <xsl:value-of select="$Title"/>
                        </span>
                        <xsl:if test="$Title2">
                            <span style="font-family:Calibri; font-style:italic; ">
                                <xsl:value-of select="$Title2"/>
                            </span>
                        </xsl:if>
                    </td>
                </tr>
                <xsl:choose>
                    <xsl:when test="$main/AlCom2:Citizenship/AlCom2:PersonCitizenshipCountry and not($Short)">
                        <tr>
                            <td colspan="5" style="border-collapse:collapse; width:2.67in; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Гражданство:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <span>
                                    <xsl:text>По старому:</xsl:text><xsl:value-of select="$doc_citizen//xs:enumeration[@value=$cod_citizen]/xs:annotation/xs:documentation"/>
                                </span>
                                <span>
                                    <xsl:text>По новому:</xsl:text><xsl:value-of select="substring-before(substring-after($xsdCountry, concat($cod_citizen, ':')), ';')"/>
                                </span>
                            </td>
                        </tr>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
            </tbody>
        </table>
    </xsl:template>
    <xsl:template name="common_Resident">
        <xsl:param name="main" select="&apos;&apos;"/>
        <xsl:param name="Title" select="&apos;Российское юридическое лицо&apos;"/>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_159" select="."/>
            <tbody>
                <tr>
                    <td colspan="3" style="border-top-style:none; width:552px; ">
                        <span style="font-family:Calibri; font-size:12pt; font-style:italic; ">
                            <xsl:text>Российское юридическое лицо</xsl:text>
                        </span>
                    </td>
                </tr>
                <tr>
                    <td colspan="3" style="width:552px; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-size:12pt; font-style:italic; ">
                            <xsl:text>Полное наименование: </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:Name"/>
                        </span>
                    </td>
                </tr>
                <xsl:choose>
                    <xsl:when test="$main/AlCom2:AbbreviatedCompanyName or $main/AlCom2:RegistrationNumber or $main/AlCom2:DateStateReg">
                        <tr>
                            <td style="width:552px; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-size:12pt; font-style:italic; ">
                                    <xsl:text>№ гос. регистрации: </xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:value-of select="$main/AlCom2:RegistrationNumber"/>
                                </span>
                            </td>
                            <td style="width:auto; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Дата гос. регистрации:</xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:variable name="altova:seqContentStrings_160">
                                        <xsl:value-of select="format-number(number(substring(string($main/AlCom2:DateStateReg), 9, 2)), '00', 'format1')"/>
                                        <xsl:text>. </xsl:text>
                                        <xsl:value-of select="format-number(number(substring(string($main/AlCom2:DateStateReg), 6, 2)), '00', 'format1')"/>
                                        <xsl:text>. </xsl:text>
                                        <xsl:value-of select="format-number(number(substring(string(string($main/AlCom2:DateStateReg)), 1, 4)), '0000', 'format1')"/>
                                    </xsl:variable>
                                    <xsl:variable name="altova:sContent_160" select="string($altova:seqContentStrings_160)"/>
                                    <xsl:value-of select="$altova:sContent_160"/>
                                </span>
                            </td>
                            <td style="width:auto; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Наименование рег. органа: </xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:value-of select="$main/AlCom2:RegistrationOrgan"/>
                                </span>
                            </td>
                        </tr>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
                <tr>
                    <td style="text-align:left; width:552px; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>ИНН:</xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:INN"/>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text>  </xsl:text>
                        </span>
                    </td>
                    <td style="width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>ОГРН:</xsl:text>
                        </span>
                        <span>
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:OGRN"/>
                        </span>
                    </td>
                    <td style="text-align:left; width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>КПП:</xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:KPP"/>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                    </td>
                </tr>
            </tbody>
        </table>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_161" select="."/>
            <tbody>
                <tr>
                    <td style="border-top-style:none; width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-size:14.67px; font-style:italic; ">
                            <xsl:text>Дополнительные сведения: </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:Comment"/>
                        </span>
                    </td>
                </tr>
            </tbody>
        </table>
    </xsl:template>
</xsl:stylesheet>
Добавлено через 4 минуты
Здесь обрати внимание на 259-ю строку, как я данные извлекаю
XML
259
                                    <xsl:text>По новому:</xsl:text><xsl:value-of select="substring-before(substring-after($xsdCountry, concat($cod_citizen, ':')), ';')"/>
А сами данные в двенадцатой
XML
12
<xsl:variable name="xsdCountry">848000000643:РОССИЯ;848000000646:РУАНДА;</xsl:variable>
1
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
26.04.2023, 21:47  [ТС]
Спасибо! Буду пробовать.
Возможно это единственный вариант
0
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
27.04.2023, 16:38  [ТС]
diadiavova, спасибо за совет - метод с упакованной строкой у меня, по крайней мере, работает.
Будем тестировать в нашем мудрёном проекте.

Уважаемые форумчане! Может есть у кого опыт работы с Altova StyleVision? Эта приблуда позволяет только создавать глобальные параметры, вида:
XML
1
<xsl:param name="signTableContent"/>
А глобальные переменные/константы вида
XML
1
<xsl:variable name="xsdCountry">848000000643:РОССИЯ;848000000646:РУАНДА;</xsl:variable>
- нет. Возможно я просто не нашёл. Можно теоретически и параметрами пользоваться, но они ограничены в размерах строки. В отличие...

Прошу - не стесняйтесь!
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
28.04.2023, 06:26
Цитата Сообщение от gurant_kopr Посмотреть сообщение
Можно теоретически и параметрами пользоваться, но они ограничены в размерах строки.
А вручную почему нельзя добавить переменную? Если программа затирает все добавленное вручную, а нужно потестить во время отладки, то можно параметры использовать, раз они допускаются, значит, наверно, есть возможность и аргументы преобразования как-то передать при отладке. А потом заменить параметр переменной.
Есть еще момент. Неважно как все это дело работает на сервере, но раз это отображается в браузере, значит браузер запрашивает документы с какого-то адреса. Ну можно ведь на этом же сервере разместить схему и запрашивать ее оттуда. Ведь в конечном итоге преобразование выполняется в браузере, а не в той хитрой программе, в которую нужно вшить документы.

Кроме того есть еще возможность добавить скрипт в документ, данные разместить в нем же, а везде, где нужно страну указать - ставить спан какой-нибудь с дата-атрибутом, содержащим код. После загрузки документа, скрипт обойдет все такие спаны и вставит туда нужные значения.
Ну что-то типа
XML
1
2
3
                                <span>
                                <xsl:text>Новее некуда:</xsl:text><span data-country="{$cod_citizen}"></span>
                                </span>
Ну и скрипт в конце
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                <script>
                <![CDATA[
(function(){
var countries = {"848000000643":"РОССИЯ","848000000646":"РУАНДА"};
var countrySpans = document.querySelectorAll("[data-country]");
for(var i = 0; i < countrySpans.length; i++)
{
    var item = countrySpans[i];
    item.textContent = countries[item.getAttribute("data-country")];
}
 
})();
                ]]>
                </script>
Вот так это будет выглядеть целиком
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
<?xml version="1.0" encoding="UTF-8"?>
<!--Designed and generated by Altova StyleVision Enterprise Edition 2021 rel. 2 sp1 (x64) - see http://www.altova.com/stylevision for more information.-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:AlCom2="urn://x-artefacts-rosreestr-ru/commons/complex-types/all-complex-types/2.0.1" xmlns:Alsim3="urn://x-artefacts-rosreestr-ru/commons/all-simple-type/3.0" xmlns:Cult3="urn://x-artefacts-rosreestr-ru/commons/complex-types/cultural-heritage/3.0.1" xmlns:adIn12="urn://x-artefacts-rosreestr-ru/commons/complex-types/address-input/12.0.1" xmlns:altova="http://www.altova.com" xmlns:altova-xfi="http://www.altova.com/xslt-extensions/xbrl" xmlns:altovaext="http://www.altova.com/xslt-extensions" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:clitype="clitype" xmlns:dAf2="urn://x-artefacts-rosreestr-ru/commons/directories/ass-flat/2.0.1" xmlns:dAft1="urn://x-artefacts-rosreestr-ru/commons/directories/ass-flat-type/1.0.1" xmlns:dAgk1="urn://x-artefacts-rosreestr-ru/commons/directories/agent-kind/1.0.1" xmlns:dAl5="urn://x-artefacts-rosreestr-ru/commons/directories/all-documents/5.0.1" xmlns:dAsb4="urn://x-artefacts-rosreestr-ru/commons/directories/ass-building/4.0.1" xmlns:dBnd3="urn://x-artefacts-rosreestr-ru/commons/directories/boundary-type/3.0.1" xmlns:dCateg1="urn://x-artefacts-rosreestr-ru/commons/directories/categories/1.0.1" xmlns:dCount1="urn://x-artefacts-rosreestr-ru/commons/directories/countries/1.0.1" xmlns:dCult1="urn://x-artefacts-rosreestr-ru/commons/directories/cultural/1.0.1" xmlns:dEn6="urn://x-artefacts-rosreestr-ru/commons/directories/encumbrances/6.0.1" xmlns:dIndv1="urn://x-artefacts-rosreestr-ru/commons/directories/individuals/1.0.1" xmlns:dOpf1="urn://x-artefacts-rosreestr-ru/commons/directories/okopf/1.0.1" xmlns:dPers1="urn://x-artefacts-rosreestr-ru/commons/directories/person-type/1.0.1" xmlns:dRF3="urn://x-artefacts-rosreestr-ru/commons/directories/regions/3.0.1" xmlns:dRe4="urn://x-artefacts-rosreestr-ru/commons/directories/realty/4.0.1" xmlns:dRi3="urn://x-artefacts-rosreestr-ru/commons/directories/rights/3.0.1" xmlns:dTs1="urn://x-artefacts-rosreestr-ru/commons/directories/type-storey/1.0.1" xmlns:dWa2="urn://x-artefacts-rosreestr-ru/commons/directories/wall/2.0.1" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:java="java" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:n1="urn://x-artefacts-rosreestr-ru/incoming/contract-sales/2.0.1" xmlns:sps="http://www.altova.com/StyleVision/user-xpath-functions" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xff="http://www.xbrl.org/2010/function/formula" xmlns:xfi="http://www.xbrl.org/2008/function/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="AlCom2 Alsim3 Cult3 adIn12 altova altova-xfi altovaext array clitype dAf2 dAft1 dAgk1 dAl5 dAsb4 dBnd3 dCateg1 dCount1 dCult1 dEn6 dIndv1 dOpf1 dPers1 dRF3 dRe4 dRi3 dTs1 dWa2 fn iso4217 java link map math n1 sps xbrldi xbrli xff xfi xlink xs xsd xsi">
    <xsl:output version="4.0" method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
    <xsl:param name="SV_OutputFormat" select="'HTML'"/>
    <xsl:param name="signTableContent"/>
    <xsl:variable name="XML" select="/"/>
    <xsl:variable name="altova:nPxPerIn" select="96"/>
    <xsl:decimal-format name="format1" grouping-separator=" " decimal-separator=","/>
    
    
    <xsl:variable name="xsdCountry">848000000643:РОССИЯ;848000000646:РУАНДА;</xsl:variable> 
    
    
    <xsl:template match="/">
        <html>
            <head>
                <title/>
                <meta name="generator" content="Altova StyleVision Enterprise Edition 2021 rel. 2 sp1 (x64) (http://www.altova.com)"/>
                <meta http-equiv="X-UA-Compatible" content="IE=9"/>
                <xsl:comment>[if IE]&gt;&lt;STYLE type=&quot;text/css&quot;&gt;.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} &lt;/STYLE&gt;&lt;![endif]</xsl:comment>
                <xsl:comment>[if !IE]&gt;&lt;!</xsl:comment>
                <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style>
                <xsl:comment>&lt;![endif]</xsl:comment>
                <style type="text/css">@page { margin-left:57px; margin-right:57px; margin-top:75px; margin-bottom:75px } @media print { br.altova-page-break { page-break-before: always; } div.altova-page-break { page-break-before: always; } }</style>
            </head>
            <body style="border-collapse:collapse; font-family:Calibri; width:1000px; ">
                <table style="border-collapse:collapse; " align="center" border="1" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_0" select="."/>
                    <tbody>
                        <tr>
                            <td style="width:257px; ">
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>Версия схемы:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>02</xsl:text>
                                </span>
                                <span style="color:#b4b4b4; ">
                                    <xsl:text> </xsl:text>
                                </span>
                            </td>
                            <td colspan="2" style="text-align:right; width:529px; " align="center">
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>GUID:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="@GUID">
                                            <span>
                                                <xsl:value-of select="string(.)"/>
                                            </span>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                        <tr style="background-color:whitesmoke; ">
                            <td style="text-align:center; width:257px; "/>
                            <td style="text-align:center; width:529px; " align="center">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentName">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                            <td style="text-align:center; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentNumber">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="3" style="text-align:center; width:257px; "/>
                        </tr>
                        <tr>
                            <td style="text-align:center; width:257px; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:PlaceDetention">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                            <td style="text-align:center; width:529px; " align="center"/>
                            <td style="text-align:center; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentDate">
                                                <h3>
                                                    <span>
                                                        <xsl:variable name="altova:seqContentStrings_1">
                                                            <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/>
                                                            <xsl:text>. </xsl:text>
                                                            <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/>
                                                            <xsl:text>. </xsl:text>
                                                            <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/>
                                                        </xsl:variable>
                                                        <xsl:variable name="altova:sContent_1" select="string($altova:seqContentStrings_1)"/>
                                                        <xsl:value-of select="$altova:sContent_1"/>
                                                    </span>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <br/>
                <table style="background-color:#f0f0f0; border-collapse:collapse; " align="center" border="1" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_2" select="."/>
                    <tbody>
                        <tr>
                            <td style="text-align:center; width:auto; ">
                                <h3>
                                    <span>
                                        <xsl:text>Продавцы</xsl:text>
                                    </span>
                                </h3>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <table border="0" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_3" select="."/>
                    <tbody>
                        <xsl:for-each select="$XML">
                            <xsl:for-each select="n1:ContractSales">
                                <xsl:for-each select="n1:PartiesContract">
                                    <xsl:for-each select="n1:Sellers">
                                        <xsl:for-each select="n1:Seller">
                                            <xsl:variable name="doc_citizen" select="document('')//xs:schema/xs:simpleType[@name='dCountries']/xs:restriction"/>
                                            <xsl:variable name="cod_public" select="n1:PublicFormation/AlCom2:ForeignPublicCode"/>
                                            <tr>
                                                <td style="border-collapse:collapse; ">
                                                    <table style="border-collapse:collapse; " border="1" width="100%">
                                                        <xsl:variable name="altova:CurrContextGrid_4" select="."/>
                                                        <tbody>
                                                            <tr>
                                                                <td style="border-collapse:collapse; ">
                                                                    <span style="font-weight:bold; ">
                                                                        <xsl:text>Продавец №</xsl:text>
                                                                    </span>
                                                                    <span style="font-weight:bold; ">
                                                                        <xsl:value-of select="position()"/>
                                                                    </span>
                                                                </td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                    <xsl:choose>
                                                        <xsl:when test="n1:Resident">
                                                            <xsl:call-template name="common_Resident">
                                                                <xsl:with-param name="main" select="n1:Resident"/>
                                                            </xsl:call-template>
                                                        </xsl:when>
                                                    </xsl:choose>
                                                    <xsl:if test="n1:Representative">
                                                        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
                                                            <xsl:variable name="altova:CurrContextGrid_6" select="."/>
                                                            <tbody>
                                                                <tr>
                                                                    <td style="border-collapse:collapse; border-top-style:none; ">
                                                                        <span style="font-weight:bold; ">
                                                                            <xsl:text>Представитель продавца:</xsl:text>
                                                                        </span>
                                                                    </td>
                                                                </tr>
                                                            </tbody>
                                                        </table>
                                                        <xsl:call-template name="common_Individual">
                                                            <xsl:with-param name="main" select="n1:Representative/AlCom2:Individual"/>
                                                            <xsl:with-param name="Title" select="&apos;&apos;"/>
                                                            <xsl:with-param name="Short" select="false()"/>
                                                            <xsl:with-param name="Appoint" select="n1:Representative/AlCom2:Appointment"/>
                                                        </xsl:call-template>
                                                    </xsl:if>
                                                </td>
                                            </tr>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </xsl:for-each>
                        </xsl:for-each>
                    </tbody>
                </table>
                <br/>
                <script>
                <![CDATA[
(function(){
var countries = {"848000000643":"РОССИЯ","848000000646":"РУАНДА"};
var countrySpans = document.querySelectorAll("[data-country]");
for(var i = 0; i < countrySpans.length; i++)
{
    var item = countrySpans[i];
    item.textContent = countries[item.getAttribute("data-country")];
}
 
})();
                ]]>
                </script>
            </body>
        </html>
    </xsl:template>
    
    <xsl:template name="common_Individual">
        <xsl:param name="main" select="&apos;&apos;"/>
        <xsl:param name="Title" select="&apos;Физическое лицо:&apos;"/>
        <xsl:param name="Title2" select="&apos;Физическое лицо:&apos;"/>
        <xsl:param name="Appoint" select="&apos;&apos;"/>
        <xsl:param name="Short" select="false()"/>
        <xsl:param name="cod_citizen" select="$main/AlCom2:Citizenship/AlCom2:PersonCitizenshipCountry"/>
        <xsl:param name="cod_identity" select="$main/AlCom2:IdentityDoc/AlCom2:DocumentCode"/>
        <xsl:param name="doc_citizen" select="document('')//xs:schema/xs:simpleType[@name='dCountries']/xs:restriction"/>
        <xsl:param name="doc_identity" select="document('')//xs:schema/xs:simpleType[@name='dAllDocuments']/xs:restriction"/>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_148" select="."/>
            <tbody>
                <tr style="height:0.19in; ">
                    <td colspan="5" style="border-collapse:collapse; border-top-style:none; width:2.67in; ">
                        <span style="font-family:Calibri; font-size:12pt; font-weight:bold; ">
                            <xsl:value-of select="$Title"/>
                        </span>
                        <xsl:if test="$Title2">
                            <span style="font-family:Calibri; font-style:italic; ">
                                <xsl:value-of select="$Title2"/>
                            </span>
                        </xsl:if>
                    </td>
                </tr>
                <xsl:choose>
                    <xsl:when test="$main/AlCom2:Citizenship/AlCom2:PersonCitizenshipCountry and not($Short)">
                        <tr>
                            <td colspan="5" style="border-collapse:collapse; width:2.67in; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Гражданство:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <span>
                                    <xsl:text>По старому:</xsl:text><xsl:value-of select="$doc_citizen//xs:enumeration[@value=$cod_citizen]/xs:annotation/xs:documentation"/>
                                </span>
                                <span>
                                    <xsl:text>По новому:</xsl:text><xsl:value-of select="substring-before(substring-after($xsdCountry, concat($cod_citizen, ':')), ';')"/>
                                </span>
                                <span>
                                <xsl:text>Новее некуда:</xsl:text><span data-country="{$cod_citizen}"></span>
                                </span>
                            </td>
                        </tr>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
            </tbody>
        </table>
    </xsl:template>
    <xsl:template name="common_Resident">
        <xsl:param name="main" select="&apos;&apos;"/>
        <xsl:param name="Title" select="&apos;Российское юридическое лицо&apos;"/>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_159" select="."/>
            <tbody>
                <tr>
                    <td colspan="3" style="border-top-style:none; width:552px; ">
                        <span style="font-family:Calibri; font-size:12pt; font-style:italic; ">
                            <xsl:text>Российское юридическое лицо</xsl:text>
                        </span>
                    </td>
                </tr>
                <tr>
                    <td colspan="3" style="width:552px; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-size:12pt; font-style:italic; ">
                            <xsl:text>Полное наименование: </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:Name"/>
                        </span>
                    </td>
                </tr>
                <xsl:choose>
                    <xsl:when test="$main/AlCom2:AbbreviatedCompanyName or $main/AlCom2:RegistrationNumber or $main/AlCom2:DateStateReg">
                        <tr>
                            <td style="width:552px; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-size:12pt; font-style:italic; ">
                                    <xsl:text>№ гос. регистрации: </xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:value-of select="$main/AlCom2:RegistrationNumber"/>
                                </span>
                            </td>
                            <td style="width:auto; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Дата гос. регистрации:</xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:variable name="altova:seqContentStrings_160">
                                        <xsl:value-of select="format-number(number(substring(string($main/AlCom2:DateStateReg), 9, 2)), '00', 'format1')"/>
                                        <xsl:text>. </xsl:text>
                                        <xsl:value-of select="format-number(number(substring(string($main/AlCom2:DateStateReg), 6, 2)), '00', 'format1')"/>
                                        <xsl:text>. </xsl:text>
                                        <xsl:value-of select="format-number(number(substring(string(string($main/AlCom2:DateStateReg)), 1, 4)), '0000', 'format1')"/>
                                    </xsl:variable>
                                    <xsl:variable name="altova:sContent_160" select="string($altova:seqContentStrings_160)"/>
                                    <xsl:value-of select="$altova:sContent_160"/>
                                </span>
                            </td>
                            <td style="width:auto; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Наименование рег. органа: </xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:value-of select="$main/AlCom2:RegistrationOrgan"/>
                                </span>
                            </td>
                        </tr>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
                <tr>
                    <td style="text-align:left; width:552px; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>ИНН:</xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:INN"/>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text>  </xsl:text>
                        </span>
                    </td>
                    <td style="width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>ОГРН:</xsl:text>
                        </span>
                        <span>
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:OGRN"/>
                        </span>
                    </td>
                    <td style="text-align:left; width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>КПП:</xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:KPP"/>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                    </td>
                </tr>
            </tbody>
        </table>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_161" select="."/>
            <tbody>
                <tr>
                    <td style="border-top-style:none; width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-size:14.67px; font-style:italic; ">
                            <xsl:text>Дополнительные сведения: </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:Comment"/>
                        </span>
                    </td>
                </tr>
            </tbody>
        </table>
    </xsl:template>
</xsl:stylesheet>
1
0 / 0 / 0
Регистрация: 08.07.2022
Сообщений: 24
28.04.2023, 09:47  [ТС]
diadiavova, Вы совершенно правы - возьму Ваш метод на заметку. Но есть нюанс - это так же надо делать вне среды StyleVision. Т.е. ручная правка xslt.

Сейчас, если надо будет изменить визуализацию, мне приходится делать следующие действия:
1. Лезть в StyleVision и править внешний вид. Он находится в файле SPS - среда разработки StyleVision
2. Выгрузить/сформировать файл XSLT
3. Вручную залезть и добавить переменные со справочниками
4. Вручную поменять ссылки на справочники (т.к. там ссылки на внешние справочники)

Если бы можно было сформировать переменные со справочникам и обращение к ним на этапе №1 - убирается куча ручной работы
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
28.04.2023, 12:15
Цитата Сообщение от gurant_kopr Посмотреть сообщение
Если бы можно было сформировать переменные со справочникам и обращение к ним на этапе №1 - убирается куча ручной работы
Ну я не знаю, что там может эта программа, хотя довольно странно, что она практически ничего не позволяет поправить. Если можно править атрибуты выходных данных, то, в принципе, можно туда все засунуть. Ну например в атрибут onload элемента body засунуть скрипт, а в какой-нибудь дата-атрибут его же засунуть данные.
Кроме того, ты писал, что нет возможности создавать глобальные переменные, но если можно создавать локальные, то можно данные впихнуть туда, в конце концов они используются только в одном шаблоне.

Добавлено через 13 минут
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
<?xml version="1.0" encoding="UTF-8"?>
<!--Designed and generated by Altova StyleVision Enterprise Edition 2021 rel. 2 sp1 (x64) - see http://www.altova.com/stylevision for more information.-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:AlCom2="urn://x-artefacts-rosreestr-ru/commons/complex-types/all-complex-types/2.0.1" xmlns:Alsim3="urn://x-artefacts-rosreestr-ru/commons/all-simple-type/3.0" xmlns:Cult3="urn://x-artefacts-rosreestr-ru/commons/complex-types/cultural-heritage/3.0.1" xmlns:adIn12="urn://x-artefacts-rosreestr-ru/commons/complex-types/address-input/12.0.1" xmlns:altova="http://www.altova.com" xmlns:altova-xfi="http://www.altova.com/xslt-extensions/xbrl" xmlns:altovaext="http://www.altova.com/xslt-extensions" xmlns:array="http://www.w3.org/2005/xpath-functions/array" xmlns:clitype="clitype" xmlns:dAf2="urn://x-artefacts-rosreestr-ru/commons/directories/ass-flat/2.0.1" xmlns:dAft1="urn://x-artefacts-rosreestr-ru/commons/directories/ass-flat-type/1.0.1" xmlns:dAgk1="urn://x-artefacts-rosreestr-ru/commons/directories/agent-kind/1.0.1" xmlns:dAl5="urn://x-artefacts-rosreestr-ru/commons/directories/all-documents/5.0.1" xmlns:dAsb4="urn://x-artefacts-rosreestr-ru/commons/directories/ass-building/4.0.1" xmlns:dBnd3="urn://x-artefacts-rosreestr-ru/commons/directories/boundary-type/3.0.1" xmlns:dCateg1="urn://x-artefacts-rosreestr-ru/commons/directories/categories/1.0.1" xmlns:dCount1="urn://x-artefacts-rosreestr-ru/commons/directories/countries/1.0.1" xmlns:dCult1="urn://x-artefacts-rosreestr-ru/commons/directories/cultural/1.0.1" xmlns:dEn6="urn://x-artefacts-rosreestr-ru/commons/directories/encumbrances/6.0.1" xmlns:dIndv1="urn://x-artefacts-rosreestr-ru/commons/directories/individuals/1.0.1" xmlns:dOpf1="urn://x-artefacts-rosreestr-ru/commons/directories/okopf/1.0.1" xmlns:dPers1="urn://x-artefacts-rosreestr-ru/commons/directories/person-type/1.0.1" xmlns:dRF3="urn://x-artefacts-rosreestr-ru/commons/directories/regions/3.0.1" xmlns:dRe4="urn://x-artefacts-rosreestr-ru/commons/directories/realty/4.0.1" xmlns:dRi3="urn://x-artefacts-rosreestr-ru/commons/directories/rights/3.0.1" xmlns:dTs1="urn://x-artefacts-rosreestr-ru/commons/directories/type-storey/1.0.1" xmlns:dWa2="urn://x-artefacts-rosreestr-ru/commons/directories/wall/2.0.1" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:java="java" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:math="http://www.w3.org/2005/xpath-functions/math" xmlns:n1="urn://x-artefacts-rosreestr-ru/incoming/contract-sales/2.0.1" xmlns:sps="http://www.altova.com/StyleVision/user-xpath-functions" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xff="http://www.xbrl.org/2010/function/formula" xmlns:xfi="http://www.xbrl.org/2008/function/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="AlCom2 Alsim3 Cult3 adIn12 altova altova-xfi altovaext array clitype dAf2 dAft1 dAgk1 dAl5 dAsb4 dBnd3 dCateg1 dCount1 dCult1 dEn6 dIndv1 dOpf1 dPers1 dRF3 dRe4 dRi3 dTs1 dWa2 fn iso4217 java link map math n1 sps xbrldi xbrli xff xfi xlink xs xsd xsi">
    <xsl:output version="4.0" method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
    <xsl:param name="SV_OutputFormat" select="'HTML'"/>
    <xsl:param name="signTableContent"/>
    <xsl:variable name="XML" select="/"/>
    <xsl:variable name="altova:nPxPerIn" select="96"/>
    <xsl:decimal-format name="format1" grouping-separator=" " decimal-separator=","/>
    
    
    
    
    <xsl:template match="/">
 
        <html>
            <head>
                <title/>
                <meta name="generator" content="Altova StyleVision Enterprise Edition 2021 rel. 2 sp1 (x64) (http://www.altova.com)"/>
                <meta http-equiv="X-UA-Compatible" content="IE=9"/>
                <xsl:comment>[if IE]&gt;&lt;STYLE type=&quot;text/css&quot;&gt;.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} &lt;/STYLE&gt;&lt;![endif]</xsl:comment>
                <xsl:comment>[if !IE]&gt;&lt;!</xsl:comment>
                <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style>
                <xsl:comment>&lt;![endif]</xsl:comment>
                <style type="text/css">@page { margin-left:57px; margin-right:57px; margin-top:75px; margin-bottom:75px } @media print { br.altova-page-break { page-break-before: always; } div.altova-page-break { page-break-before: always; } }</style>
            </head>
            <body style="border-collapse:collapse; font-family:Calibri; width:1000px; " onload='(function(){{
var countries = {{"848000000643":"РОССИЯ","848000000646":"РУАНДА"}};
var countrySpans = document.querySelectorAll("[data-country]");
for(var i = 0; i &lt; countrySpans.length; i++)
{{
    var item = countrySpans[i];
    item.textContent = countries[item.getAttribute("data-country")];
}}

}})();'>
                <table style="border-collapse:collapse; " align="center" border="1" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_0" select="."/>
                    <tbody>
                        <tr>
                            <td style="width:257px; ">
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>Версия схемы:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>02</xsl:text>
                                </span>
                                <span style="color:#b4b4b4; ">
                                    <xsl:text> </xsl:text>
                                </span>
                            </td>
                            <td colspan="2" style="text-align:right; width:529px; " align="center">
                                <span style="color:#b4b4b4; font-style:italic; ">
                                    <xsl:text>GUID:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="@GUID">
                                            <span>
                                                <xsl:value-of select="string(.)"/>
                                            </span>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                        <tr style="background-color:whitesmoke; ">
                            <td style="text-align:center; width:257px; "/>
                            <td style="text-align:center; width:529px; " align="center">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentName">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                            <td style="text-align:center; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentNumber">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="3" style="text-align:center; width:257px; "/>
                        </tr>
                        <tr>
                            <td style="text-align:center; width:257px; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:PlaceDetention">
                                                <h3>
                                                    <xsl:apply-templates/>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                            <td style="text-align:center; width:529px; " align="center"/>
                            <td style="text-align:center; ">
                                <xsl:for-each select="$XML">
                                    <xsl:for-each select="n1:ContractSales">
                                        <xsl:for-each select="n1:DetailsContract">
                                            <xsl:for-each select="AlCom2:DocumentDate">
                                                <h3>
                                                    <span>
                                                        <xsl:variable name="altova:seqContentStrings_1">
                                                            <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/>
                                                            <xsl:text>. </xsl:text>
                                                            <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/>
                                                            <xsl:text>. </xsl:text>
                                                            <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/>
                                                        </xsl:variable>
                                                        <xsl:variable name="altova:sContent_1" select="string($altova:seqContentStrings_1)"/>
                                                        <xsl:value-of select="$altova:sContent_1"/>
                                                    </span>
                                                </h3>
                                            </xsl:for-each>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <br/>
                <table style="background-color:#f0f0f0; border-collapse:collapse; " align="center" border="1" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_2" select="."/>
                    <tbody>
                        <tr>
                            <td style="text-align:center; width:auto; ">
                                <h3>
                                    <span>
                                        <xsl:text>Продавцы</xsl:text>
                                    </span>
                                </h3>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <table border="0" width="100%">
                    <xsl:variable name="altova:CurrContextGrid_3" select="."/>
                    <tbody>
                        <xsl:for-each select="$XML">
                            <xsl:for-each select="n1:ContractSales">
                                <xsl:for-each select="n1:PartiesContract">
                                    <xsl:for-each select="n1:Sellers">
                                        <xsl:for-each select="n1:Seller">
                                            <xsl:variable name="doc_citizen" select="document('')//xs:schema/xs:simpleType[@name='dCountries']/xs:restriction"/>
                                            <xsl:variable name="cod_public" select="n1:PublicFormation/AlCom2:ForeignPublicCode"/>
                                            <tr>
                                                <td style="border-collapse:collapse; ">
                                                    <table style="border-collapse:collapse; " border="1" width="100%">
                                                        <xsl:variable name="altova:CurrContextGrid_4" select="."/>
                                                        <tbody>
                                                            <tr>
                                                                <td style="border-collapse:collapse; ">
                                                                    <span style="font-weight:bold; ">
                                                                        <xsl:text>Продавец №</xsl:text>
                                                                    </span>
                                                                    <span style="font-weight:bold; ">
                                                                        <xsl:value-of select="position()"/>
                                                                    </span>
                                                                </td>
                                                            </tr>
                                                        </tbody>
                                                    </table>
                                                    <xsl:choose>
                                                        <xsl:when test="n1:Resident">
                                                            <xsl:call-template name="common_Resident">
                                                                <xsl:with-param name="main" select="n1:Resident"/>
                                                            </xsl:call-template>
                                                        </xsl:when>
                                                    </xsl:choose>
                                                    <xsl:if test="n1:Representative">
                                                        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
                                                            <xsl:variable name="altova:CurrContextGrid_6" select="."/>
                                                            <tbody>
                                                                <tr>
                                                                    <td style="border-collapse:collapse; border-top-style:none; ">
                                                                        <span style="font-weight:bold; ">
                                                                            <xsl:text>Представитель продавца:</xsl:text>
                                                                        </span>
                                                                    </td>
                                                                </tr>
                                                            </tbody>
                                                        </table>
                                                        <xsl:call-template name="common_Individual">
                                                            <xsl:with-param name="main" select="n1:Representative/AlCom2:Individual"/>
                                                            <xsl:with-param name="Title" select="&apos;&apos;"/>
                                                            <xsl:with-param name="Short" select="false()"/>
                                                            <xsl:with-param name="Appoint" select="n1:Representative/AlCom2:Appointment"/>
                                                        </xsl:call-template>
                                                    </xsl:if>
                                                </td>
                                            </tr>
                                        </xsl:for-each>
                                    </xsl:for-each>
                                </xsl:for-each>
                            </xsl:for-each>
                        </xsl:for-each>
                    </tbody>
                </table>
                <br/>
            </body>
        </html>
    </xsl:template>
    
    <xsl:template name="common_Individual">
        <xsl:param name="main" select="&apos;&apos;"/>
        <xsl:param name="Title" select="&apos;Физическое лицо:&apos;"/>
        <xsl:param name="Title2" select="&apos;Физическое лицо:&apos;"/>
        <xsl:param name="Appoint" select="&apos;&apos;"/>
        <xsl:param name="Short" select="false()"/>
        <xsl:param name="cod_citizen" select="$main/AlCom2:Citizenship/AlCom2:PersonCitizenshipCountry"/>
        <xsl:param name="cod_identity" select="$main/AlCom2:IdentityDoc/AlCom2:DocumentCode"/>
        <xsl:param name="doc_citizen" select="document('')//xs:schema/xs:simpleType[@name='dCountries']/xs:restriction"/>
        <xsl:param name="doc_identity" select="document('')//xs:schema/xs:simpleType[@name='dAllDocuments']/xs:restriction"/>
    <xsl:variable name="xsdCountry">848000000643:РОССИЯ;848000000646:РУАНДА;</xsl:variable> 
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_148" select="."/>
            <tbody>
                <tr style="height:0.19in; ">
                    <td colspan="5" style="border-collapse:collapse; border-top-style:none; width:2.67in; ">
                        <span style="font-family:Calibri; font-size:12pt; font-weight:bold; ">
                            <xsl:value-of select="$Title"/>
                        </span>
                        <xsl:if test="$Title2">
                            <span style="font-family:Calibri; font-style:italic; ">
                                <xsl:value-of select="$Title2"/>
                            </span>
                        </xsl:if>
                    </td>
                </tr>
                <xsl:choose>
                    <xsl:when test="$main/AlCom2:Citizenship/AlCom2:PersonCitizenshipCountry and not($Short)">
                        <tr>
                            <td colspan="5" style="border-collapse:collapse; width:2.67in; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Гражданство:</xsl:text>
                                </span>
                                <span>
                                    <xsl:text> </xsl:text>
                                </span>
                                <span>
                                    <xsl:text>По старому:</xsl:text><xsl:value-of select="$doc_citizen//xs:enumeration[@value=$cod_citizen]/xs:annotation/xs:documentation"/>
                                </span>
                                <span>
                                    <xsl:text>По новому:</xsl:text><xsl:value-of select="substring-before(substring-after($xsdCountry, concat($cod_citizen, ':')), ';')"/>
                                </span>
                                <span>
                                <xsl:text>Новее некуда:</xsl:text><span data-country="{$cod_citizen}"></span>
                                </span>
                            </td>
                        </tr>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
            </tbody>
        </table>
    </xsl:template>
    <xsl:template name="common_Resident">
        <xsl:param name="main" select="&apos;&apos;"/>
        <xsl:param name="Title" select="&apos;Российское юридическое лицо&apos;"/>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_159" select="."/>
            <tbody>
                <tr>
                    <td colspan="3" style="border-top-style:none; width:552px; ">
                        <span style="font-family:Calibri; font-size:12pt; font-style:italic; ">
                            <xsl:text>Российское юридическое лицо</xsl:text>
                        </span>
                    </td>
                </tr>
                <tr>
                    <td colspan="3" style="width:552px; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-size:12pt; font-style:italic; ">
                            <xsl:text>Полное наименование: </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:Name"/>
                        </span>
                    </td>
                </tr>
                <xsl:choose>
                    <xsl:when test="$main/AlCom2:AbbreviatedCompanyName or $main/AlCom2:RegistrationNumber or $main/AlCom2:DateStateReg">
                        <tr>
                            <td style="width:552px; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-size:12pt; font-style:italic; ">
                                    <xsl:text>№ гос. регистрации: </xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:value-of select="$main/AlCom2:RegistrationNumber"/>
                                </span>
                            </td>
                            <td style="width:auto; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Дата гос. регистрации:</xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:variable name="altova:seqContentStrings_160">
                                        <xsl:value-of select="format-number(number(substring(string($main/AlCom2:DateStateReg), 9, 2)), '00', 'format1')"/>
                                        <xsl:text>. </xsl:text>
                                        <xsl:value-of select="format-number(number(substring(string($main/AlCom2:DateStateReg), 6, 2)), '00', 'format1')"/>
                                        <xsl:text>. </xsl:text>
                                        <xsl:value-of select="format-number(number(substring(string(string($main/AlCom2:DateStateReg)), 1, 4)), '0000', 'format1')"/>
                                    </xsl:variable>
                                    <xsl:variable name="altova:sContent_160" select="string($altova:seqContentStrings_160)"/>
                                    <xsl:value-of select="$altova:sContent_160"/>
                                </span>
                            </td>
                            <td style="width:auto; ">
                                <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                                    <xsl:text>Наименование рег. органа: </xsl:text>
                                </span>
                                <br/>
                                <span style="font-family:Calibri; ">
                                    <xsl:value-of select="$main/AlCom2:RegistrationOrgan"/>
                                </span>
                            </td>
                        </tr>
                    </xsl:when>
                    <xsl:otherwise/>
                </xsl:choose>
                <tr>
                    <td style="text-align:left; width:552px; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>ИНН:</xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:INN"/>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text>  </xsl:text>
                        </span>
                    </td>
                    <td style="width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>ОГРН:</xsl:text>
                        </span>
                        <span>
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:OGRN"/>
                        </span>
                    </td>
                    <td style="text-align:left; width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-style:italic; ">
                            <xsl:text>КПП:</xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:KPP"/>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:text> </xsl:text>
                        </span>
                    </td>
                </tr>
            </tbody>
        </table>
        <table style="border-collapse:collapse; border-top-style:none; " border="1" width="100%">
            <xsl:variable name="altova:CurrContextGrid_161" select="."/>
            <tbody>
                <tr>
                    <td style="border-top-style:none; width:auto; ">
                        <span style="color:#b4b4b4; font-family:Calibri; font-size:14.67px; font-style:italic; ">
                            <xsl:text>Дополнительные сведения: </xsl:text>
                        </span>
                        <span style="font-family:Calibri; ">
                            <xsl:value-of select="$main/AlCom2:Comment"/>
                        </span>
                    </td>
                </tr>
            </tbody>
        </table>
    </xsl:template>
</xsl:stylesheet>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2023, 12:15

Как включить Java script,чтобы можно было включить программный фрагмент в HTML?
Как включить Java script,чтобы можно было включить программный фрагмент в HTML?

Создание базы данных на основе файлов xsd
Имеются файлы XSD описывающие xml файлы, как можно программно по XSD смастерить базу данных(создать таблицы, типы данных, связи)? ...

Проверка XML-файлов на соответствие XSD-схемам
здравствуйте! есть задача проверить xml-файлы xsd-схемами. на вход подаются списки файлов и схем, первые 4 буквы имени файла...

XSD как правильно распарсить в C# если xsd.exe выдает ошибки не хочет обрабатывать?
Народ всем привет! Прощу помочь, имеется WSDL и XSDшки по проекту. Я в .Net новичок, подскажите как и что делать? нужно создать сервис...

Объединение нескольких XML файлов в один с группировкой, используя XSLT
Всем привет. Помогите разобраться в следующей задаче: есть несколько XML файлов, в которых хранятся данные каждого из отчета...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru