23 октября, вторник 23:44
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Еще один способ преобразования УФЭБС

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Еще один способ преобразования УФЭБС

    С сайта Microsoft скачал интересный файл, msxsl.exe. Преобразует xml файл с помощью xslt-шаблона и может сохранять выходной поток в файл. Все опции описаны по "msxsl.exe -?".
    Я проверил, если дать такую команду msxsl.exe ИмяфайлаУФЭБС.xml ed.xsl -o result.html, то действительно получается result.html пригодный для просмотра в броузере. Иными словами, можно создавать через батник, или другим командными средствами (скриптами, к примеру) файлы для общего просмотра сотрудниками Банка. Уточню, на вход надо уже подавать расшифрованный (из Base64) файл.
    В архив вложил сам msxsl.exe и файл шаблона для преобразования. Но.. файл шаблона уже не знаю для какого варианта УФЭБС. Мне из многих регионов присылали файлы, и там достаточно сильно различались форматы. Я подтачивал под конкретные структуры, хотя различаться не должны были. Если у кого шаблон не заработает, пишите - разберемся.
    С уваженнием,
    Измайлов Ф.В.

  • #2
    Измайлов Ф.В.
    Да, действительно интересно. Вот только не скармливаются файлики, формируемые RSBank'ом 86.30. В нём нет перевода строки, то есть всё идёт одной строчкой. Хотя УАРМ такой файл съедает запросто.

    Комментарий


    • #3
      А вот это интересно. Я правильно понял, если xml-файл (текст) сформирован без перевода строк, то он не определяется как xml-файл? Сейчас проверю.

      Комментарий


      • #4
        Проверил, но текст в одну строку принимается, и xml преобразуется. Значит что-то в xml, который сформирован РСбанком 86.30. Или..
        а что пишет msxsl? Если не скармливается, то должен ругаться...

        Комментарий


        • #5
          Не, он определяется как xml, result.html формируется. Но в нём нет значимой информации - только заголовок. Да вот, собственно, этот html:

          Упс. HTML не вставляется.

          Комментарий


          • #6
            Понятно. это вопрос к структуре входного xml и к шаблону. То, о чем я говорил в первом сообщении. Надо смотреть xml и перестраивать XSL-файл.
            С уважением,
            Измайлов Ф.В.

            Комментарий


            • #7
              Дык эта, может я подкину свой хml?

              Комментарий


              • #8
                Pov Если интересно добить вопрос - присылай образец - попробую подкрутить XSLT

                Комментарий


                • #9
                  Да.. невпопад говорим. .присылай на for_cv(at)mail.ru
                  Измайлов Ф.В.

                  Комментарий


                  • #10
                    Ларчик просто открывался. У нас "PacketEPD EDAuthor=" т.д.
                    а у вас "ed:PacketEPD xmlns...."
                    В шаблоне добавь три символа в строке (выделено жирным)
                    xsl:when test="name(*)='ed:PacketEPD' и все заработает.
                    С уважением,
                    Измайлов Ф.В.
                    Я ж говорил, что этот УФЭБС - это кто во что горазд.

                    Комментарий


                    • #11
                      Я в общем пока дуб в xml , но в папке bin установленного АРМ КБР болтаются три десятка .xslt файлов подозрительно похожих содержанием на предложенный Ed.xsl
                      Convertor.xslt
                      ED.xslt
                      ED101.xslt
                      ED102.xslt
                      ED103.xslt
                      ED104.xslt
                      ED105.xslt
                      ED110.xslt
                      ED201.xslt
                      ED202.xslt
                      ED203.xslt
                      ED204.xslt
                      ED205.xslt
                      ED206.xslt
                      ED207.xslt
                      ED209.xslt
                      ED210.xslt
                      ED211.xslt
                      ED214.xslt
                      ED215.xslt
                      ED217.xslt
                      ED218.xslt
                      ED219.xslt
                      ED220.xslt
                      ED221.xslt
                      ED222.xslt
                      PacketEpd.xslt
                      PacketESID.xslt
                      SigEnvelope.xslt
                      SoapEnvelope.xslt
                      Unknown.xslt
                      Имена явно указывают на отношение к конкретным типам ЭПД, которые см АРМ КБР довольно наглядно отображает.
                      Попробовал прикрутить их к описанному выше способу, но чего-то не так - ошибки компиляции:

                      Error occurred while compiling stylesheet 'ed.xslt'.

                      Code: 0x80004005
                      Недопустимая строка с указанием класса

                      Error occurred during compilation of included or imported stylesheet 'file:///E:/TEMP/Convertor.xslt'.

                      В Convertor.xslt наваяны какие-то функции преобразования на C#

                      Как бы это разрулить...?
                      Последний раз редактировалось keldon; 19.09.2006, 11:53.

                      Комментарий


                      • #12
                        Может у меня старая версия АРМ, но таких файлов не нашел. Мы получили АРМ от МЦИ (Москва), и тестирование давно закончилось, так версии могут отличаться.
                        а у вас какой регион?
                        Если не Москва, то надо смотреть все XSLT, и саму выписку ... Разрулить можно, но нужны данные.
                        С уважением,
                        Измайлов Ф.В.

                        Комментарий


                        • #13
                          Регион - Карелия.
                          Арм "ПК АРМ КБР вер.1.1.4.16467 от 02.05.2006"

                          Вот xslt файлы, взгляните если будет время

                          Комментарий


                          • #14
                            Посмотрел, форматирование отвратное, но работает. .при одном условии правда. Если входной файл будет иметь расширение XML. а у Вас c1w.
                            Перименовал, и все заработало.
                            С уважением,
                            Измайлов Ф.В.

                            Комментарий


                            • #15
                              ..

                              Комментарий


                              • #16
                                Да, очень смешно. Видать мои буквы особой формы, что наводит на мысли о моем iq
                                Нет, к сожалению, я не настолько глуп и переименовывать файлы я конечно пробовал, но поскольку эффект был нулевой - оставил их как были.
                                По прежнему ничего не работает.
                                Может быть дело в системном окружении - какие ни будь дополнительные библиотеки, xml-парсер особой версии или ещё что?
                                Не работает на стандартном XPSP2 со всеми последующими заплатами включая msxml3sp7.

                                Комментарий


                                • #17
                                  Про отвратное форматирование - это про шаблон XSLT как работает. А не про сообщение )) Сорри, если выразился неудачное, весь в работе
                                  Там вывод в строку и просто текст. А что значит не работает? При работе выдает ошибку? Результат пустой? При таком ПО (XP SP2 ..) вроде все должно функционировать.
                                  вот как я запускаю на выполнение - msxsl A940486M.xml ED101.xslt -o dddd.html
                                  Что на выходе (dddd.html - вкладываю)
                                  Еще раз приношу извинения за случайное слово
                                  С уважением,
                                  Измайлов Ф.В.

                                  Комментарий


                                  • #18
                                    Странно.
                                    При использовании ed101.xml (и любого другого)
                                    выдаётся ошибка:
                                    Error occurred while executing stylesheet 'ed101.xslt'.
                                    Code: 0x80004005
                                    Namespace 'urn:uarm-script' does not contain any functions.
                                    Правда при этом html формируется, но не содержит ничего кроме этого:
                                    Порядковый номер
                                    электронного документа 116821
                                    Дата составления
                                    электронного документа

                                    Это совершенно не похоже на то что отображает АРМ КБР, да и в самом ed101.xslt описано гораздо больше данных.

                                    Покопавшись в остальных файлах в поисках 'urn:uarm-script' (Converter.xslt) я обнаружил что вроде как файлы ed*.xslt образуют некую иерархию начинающуюся с ed.xslt который при применении и выдаёт ошибку:

                                    Error occurred while compiling stylesheet 'ed.xslt'.
                                    Code: 0x800401f3
                                    Недопустимая строка с указанием класса

                                    и не формирует ничего.

                                    Комментарий


                                    • #19
                                      В файле ed101.xslt есть строка xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmln .... и так далее
                                      в этой мтроке есть объявление пространства имен ed - xmlns:ed="urn:cbr-ru:ed:v1.1". Если его слегка модифицировать на xmlns:ed="urn:cbr-ru:v1.1", то все работает без ошибок. Почему у меня оказался такой вариант файла ed101.xslt - не понимаю, хотя я игрался с префиксами, видно удалил случайно, и попал на работающий вариант. И второй вопрос, почему без этих двух символов работает - тоже не понимаю. Не настолько хорошо знаю синтаксис объявления NameSpaces.
                                      Вот такие дела.
                                      С уважением,
                                      Измайлов Ф.В.

                                      Комментарий


                                      • #20
                                        Ясно что ничего не ясно... Ладно, спасибо за помощь, и за ed.xls думаю он ещё мне пригодится.

                                        ЗЫ Хочешь не хочешь, а пора похоже самому браться за xml, ещё бы время найти...

                                        Комментарий


                                        • #21
                                          Некоторое решение проблемы нашлось.

                                          В общем удалось выяснить откуда растут ноги у проблем с компиляцией.
                                          Ноги растут из Convert.XSLT, а именно из модуля с функциями на C#
                                          Скорее всего msxsl.exe не понимает C#, упоминание о чём-то подобном я
                                          видел в каком-то из буржуйских блогов.
                                          Проблему решил просто - вырезал из ED.xslt сыслку на Convert.xslt, из
                                          остальных *.xslt - ссылку xmlns:usr="urn:uarm-script" и все обращения к функциям usr: см. _changes.txt
                                          В списке четыре функции, форматирующих вывод чисел, после удаления естественно
                                          в некоторых документа числа вида 1234,56 превратились в 123456, а "тысячач двести"
                                          в 120000.
                                          В итоге вся иерархия (как выяснилось она начинается не с ed.xslt, а либо
                                          с PacketEPD либо PacketESID) обрабатывается без ошибок.

                                          Минусы использования:
                                          Не все ED отображаются в эргономичном виде, вид ED205, ED206 пришлось переделывать к табличному.
                                          Из за вырезанного Convertor.xslt, числа отображаются в "сыром" виде.

                                          Плюсы: Пакет предназначен для отображения любых ED в любом сочетании. Те если даже
                                          обрабатывать пакет содержащий одновременно все возможные ED в произвольном порядке -
                                          отображено будет всё.

                                          ЗЫ По хорошему надо бы конечно переписать Convertor.xslt с C# на Java Script (котрый msxsl понимает)
                                          но в данный момомент и в том и в другом я такой же дуб как и в XML. Посему это
                                          займёт неопределённое время. Ежели кто-то знающий сподобится - welcome.

                                          Комментарий


                                          • #22
                                            Но файл конвертер (converter.xslt) переписал на JScript
                                            Основная проблема была понять как происходит передача параметров, как к ним обращаться. Пропись суммы нашел в недрах интернета, но пришлось кое-что доправить руками, т.к наша(банковская) пропись суммы отличается от представления автора.
                                            Пробуй. Тестируй.
                                            С уважением,
                                            Измайлов Ф.В.

                                            Комментарий

                                            Пользователи, просматривающие эту тему

                                            Свернуть

                                            Присутствует 1. Участников: 0, гостей: 1.

                                            Обработка...
                                            X