XSL Transformation of an incoming Request.xml into its response XML + printable HTML/TEXT.
Формирование с помощью XSLT подтверждения на получение файла XML из Адаптера СМЭВ для отправки ответного XML обратно + формирование печатного бланка в формате HTML или TEXT. Образцы можно посмотреть здесь - XslTrans/samples/save
В комплекте прилагаются эталонный образец входящего запроса из СМЭВ Адаптера
in\SampleRequest.xml
и файлы шаблонов XSLT для вида сведений ФНС 313-19
"Сведения о снятии физического лица с учета...", а также могут быть добавлены
другие доработки, если в них не содержится персональных данных:
- '313-19.xslt' для формирования ответного response XML с помощью пользовательских скриптов.
- '313-19a.xslt' для формирования ответного response XML с помощью параметров XSLT без использования скриптов.
- '313-19p.xslt' для формирования печатного бланка в формате HTML.
- '313-19t.xslt' для формирования печатного бланка в формате TEXT.
Файлы в кодировке utf8 формируются без BOM (нетипично для XSLT), который не позволен в СМЭВ.
Выходной файл зависит от значения метода вывода <xsl:output method='*'/>
в файле XSLT:
- 'xml' (по умолчанию):
XslTrans.exe Request.xml Trans.xslt [Request.response.xml]
- 'html':
XslTrans.exe Request.xml Trans.xslt [Request.html]
- 'text':
XslTrans.exe Request.xml Trans.xslt [Request.txt]
Если третий параметр не указан, будет создан файл в папке исходного файла с изменением его расширения в зависимости от указанного метода вывода в указанном вторым параметром файле XSLT.
Если третий параметр указан, то:
- если указано имя файла с путем - будут созданы все папки этого пути;
- если указано имя существующей папки - в ней будет создан файл с именем исходного файла;
- если указано имя несуществующей папки с
\
на конце - будет создана эта папка и в ней будет создан файл с именем исходного файла; - если вместо имени
guid
или{guid}
, то при использовании XSLT с параметрами будет подставлено в имя файла значениеclient_id
.
Коды возврата:
0
: Преобразование успешно выполнено.1
: Ошибка в числе параметров - показ Usage.2
: Не найден указанный в параметрах исходный файл (XML или XSLT).3
: Возникло исключение при работе.
Полезности в шаблонах XSLT:
- Отладка файлов XML и HTML - переключить в
indent="yes"
. выдавать XML/HTML в одну строку - переключить вindent="no"
. - Отладка таблиц в HTML - добавить
border="1"
в тэгtable
;
Также возможна пакетная обработка и иных XML/XSLT файлов.
Если в файле конфигурации указан параметр XsltFile
и указанный файл
существует, то программа меняет режим входных параметров - этот файл
начинает выполнять роль второго обязательного параметра командной
строки при обычном запуске, а все параметры (файлы и маски) командной
строки будут рассматриваться только как исходные файлы - это удобно для
Drag-n-Drop, например. Помимо файлов с расширением .xml
, можно бросить
файлы архивов с расширением .zip
- будут обработаны все файлы .xml
,
содержащиеся внутри них.
Если в файле конфигурации указать в параметре OutPath
путь к папке для
сохранения результатов, то файлы будут сохранены туда вместо текущей
(поведение третьего опционального параметра при обычном запуске).
XslTrans.exe in\SampleRequest.xml XSLT\313-19.xslt
делает 'in\SampleRequest.response.xml' для передачи обратно (по умолчанию).XslTrans.exe in\SampleRequest.xml XSLT\313-19.xslt out\Response.xml
делает 'out\Response.xml' для передачи обратно (файл указан).XslTrans.exe in\SampleRequest.xml XSLT\313-19a.xslt out\Guid.xml
делает 'out\36a96404-df69-...89.xml' для передачи обратно (файл указан
какguid
, будет подставлено значение поляclient_id
без скобок).XslTrans.exe in\SampleRequest.xml XSLT\313-19a.xslt out\{Guid}.xml
делает 'out{36a96404-df69-...89}.xml' для передачи обратно (файл указан
как{guid}
, будет подставлено значение поляclient_id
со скобками).XslTrans.exe in\SampleRequest.xml XSLT\313-19p.xslt
делает 'in\SampleRequest.html' для печати (по умолчанию).XslTrans.exe in\SampleRequest.xml XSLT\313-19p.xslt Request-print.htm
делает 'Request-print.htm' для печати (файл указан).XslTrans.exe in\SampleRequest.xml XSLT\313-19t.xslt save\Request.txt
делает 'save\Request.txt' для сохранения/печати в формате TEXT (файл указан).XslTrans.exe in\SampleRequest.xml XSLT\313-19t.xslt save
делает 'save\SampleRequest.txt' (файл не указан, но есть такая папка).XslTrans.exe in\SampleRequest.xml XSLT\313-19t.xslt save\2023\
делает 'save\2023\SampleRequest.txt' (указано создать такую папку).
Примеры второго варианта использования:
XslTrans.exe *.xml
(при указании<add key="XsltFile" value="GUTDF30.xslt"/>
в файле.config
) сделает соответствующие файлы в формате TEXT для просмотра файлов в формате GUTDF XML (или ZIP) из HБКИ.XslTrans.exe *.xml GUTDF30.xslt out\
- аналогичное действие.XslTrans.exe *.zip GUTDF30.xslt
- аналогичное действие.
- .Net Framework 4.8 (другие версии не тестировались - часто можно просто
поправить в файле
.config
, и будет работать на старых версиях).
Licensed under the Apache License, Version 2.0.