Главная  / Формат электронного документа EDoc

ЗАО «Агропромбанк», являясь аккредитованным удостоверяющим центром, в целях стандартизации электронных документов в Приднестровской Молдавской Республике, разработал стандарт контейнера электронного документа – EDoc.

Стандарт гарантирует неизменность электронного документа и неотрекаемость подписанта при использовании квалифицированной электронной подписи. В стандарт контейнера электронного документа заложена возможность работы с электронным документом в любой современной операционной системе с использованием современных средств разработки программного обеспечения.

В чем преимущества стандарта EDoc?

  •   Гарантирует неизменность и неотрекаемость
  •   Основан на открытом стандарте XML
  •   Работает в любой ОС и с любыми языками программирования
  •   Позволяет отделить электронный документ от визуального представления
  •   Позволяет использовать вложения
  •   Позволяет использовать последовательное и параллельное подписание одновременно
  •   Позволяет ссылаться на другие документы
  •   Позволяет использовать несколько представлений на один вид документа. Поддерживает версионность представлений
  •   Полностью машиночитаемый с возможностью отображения визуальной формы
  •   Занимает небольшой объём на жестком диске
  •   Можно использовать вне систем электронного документооборота
  •   Можно распространять любым доступным способом передачи цифровой информации

Структура документа в формате EDoc

Структуру EDoc документа можно представить в виде контейнера, включающего последовательность блочных элементов различного содержания.


XML

<root xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:edoc="http://agroprombank.com/edoc.xsd">
	<edoc:Document Id="document-Guid документа">
		<edoc:Template Id="templateGuid" CompilerVersion="версия компилятора/сборки, которой был создан документ">
			<edoc:Reference URI="Uri репозитория, где находится шаблон для текущего документа">
				<edoc:DigestMethod Algorithm="Название алгоритма, которым будет сформирован хэш-образ для xslt-шаблона" />
				<edoc:DigestValue><!--хэш образ xslt-шаблона--></edoc:DigestValue>
			</edoc:Reference>
		</edoc:Template>
		<edoc:References>
			<!--блок ссылок на другие документы-->
			<edoc:ReferenceDocument Id="referenceGuid 1" Name="Дополнение 1 к документу №-" />
			<edoc:ReferenceDocument Id="referenceGuid 2" Name="Дополнение 2 к документу №-" />
		</edoc:References>
		<edoc:Data>
			<!--Данные XML в свободной форме-->
		</edoc:Data>
		<edoc:Attachments>
			<!--блок вложений-->
			<edoc:Attachment Id="attachmentGuid 1">
				<edoc:Reference URI="Uri файла вложения">
					<edoc:DigestMethod Algorithm="Название алгоритма, которым будет сформирован хэш-образ для файла вложения" />
					<edoc:DigestValue><!--хэш образ вложения--></edoc:DigestValue>
				</edoc:Reference>
			</edoc:Attachment>
		</edoc:Attachments>
	</edoc:Document>
	<edoc:TemplateData Id="templateGuid"><!--base 64 файла шаблона--></edoc:TemplateData>
	<edoc:AttachmentData Id="attachmentGuid 1"><!--base 64 файла вложения--></edoc:AttachmentData>
	<edoc:Signatures>
		<!--блок списка подписей-->
		<edoc:Signature Id="signatureGuid">
			<!--стандартный элемент XMLDSig, который подписывает блок данных, либо блок данных и другие подписи, либо только другую подпись-->
		</edoc:Signature>
	</edoc:Signatures>
</root>
1

Общее описание документа (Document)

Контейнер электронного документа основан на машиночитаемом формате электронной разметки XML. Контейнер имеет стандарт структуры документа – XSD. Все служебные теги стандарта находятся в пространстве имен «edoc:». Корневым элементом документа EDoc является элемент «Document». В корневом элементе документа располагается вся значимая подписываемая информация документа.

Каждый электронный документа формата EDoc имеет уникальный ID документа, который располагается в атрибуте «Id» ноды «Document». Уникальный идентификатор представляет собой запись «document-Guid документа». Например «document-9e1f08af-c7f8-47f8-9e28-4ee30d53d99f». Эта запись говорит о том, что данный документ имеет уникальный идентификатор «9e1f08af-c7f8-47f8-9e28-4ee30d53d99f». Уникальный идентификатор документа позволяет ссылаться на данный документ из других электронных документов формата EDoc.

XML

<root xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:edoc="http://agroprombank.com/edoc.xsd">
  <edoc:Document Id="document-9e1f08af-c7f8-47f8-9e28-4ee30d53d99f">
     <!-- содержимое электронного документа -->
  </edoc:Document>
</root>
2

Информация о шаблоне визуального представления.

Представляет собой ссылку на xslt-шаблон визуального представления электронного документа. Блок ссылки на xslt шаблон содержит также дополнительную информацию о шаблоне: хэш шаблона, его идентификатор в формате Guid и версию компилятора, которым трансформируется шаблон.
Примеры шаблонов:

Шаблон отображения (электронное письмо)

Шаблон отображения (счет-фактура)

Что такое XSLT-шаблон?

XSLT-шаблоны представляют собой файлы визуального представления документов. Шаблоны построены на основе расширяемого языка преобразований таблиц стилей – XSLT. Они содержат информацию о том, как должен выглядеть документ (форматирование, абзацы, размер листа, поля страницы, таблицы и т.п.). Шаблоны могут быть встроены в файл-контейнер EDoc в виде base64 строки, либо присутствовать только в виде ссылки на репозиторий.

Ссылка на шаблон содержит хэш-образ шаблона, название алгоритма, которым был получен хэш-образ и относительный путь к файлу шаблона. Каждый шаблон подписывается квалифицированной подписью третьей стороны.

Следующим этапом, после подписи шаблона, является загрузка в репозиторий. В качестве репозитория может выступать локальная папка на диске, или удалённая папка на любом сервере, доступном в сети. Uri ссылка (не путать с Url) на шаблон в удалённом репозитории может иметь вид:

template.repository.edoc://orgId/templateId/versionId

где вместо template.repository.edoc:// будет подставлен Url (не путать с Uri) к репозиторию из файла конфигураций и добавлено orgId/templateId/versionId.

При открытии документа в формате EDoc, приоритетом является проверка наличия вложенного в документ XSLT-шаблона, если таковой отсутствует, то его поиск по очереди ведётся во всех доступных онлайн-репозиториях. Загрузка шаблона производится из первого репозитория, в котором он будет найден.

XML

    <!--
    edoc:Reference - стандартный элемент XMLDSig (с исключённым блоком <Transforms></Transforms> 
    - всегда используется http://www.w3.org/2001/10/xml-exc-c14n#), который перенесён 
    из пространства ds: в пространство edoc:.
     -->
    <edoc:Template Id="d9bd3d56-9a38-447c-9fdf-ef7cf5f2edd5" CompilerVersion="1.0">
        <edoc:Reference URI="template.repository.edoc://templates/apb/score/scorenA4v.xslt" />
            <edoc:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
            <edoc:DigestValue>YwixZsCF5RjSL1l6/10Jr09ByICxN7yihLZpjzpCpWI=</edoc:DigestValue>
        
    </edoc:Reference>
    </edoc:Template>
3

Ссылки на другие документы (Reference)

Формат EDoc позволяет ссылаться на другие документы EDoc обеспечивая взаимосвязь между документами. Каждый документ может ссылаться на несколько документов реализуя связь один ко многим. Ссылки на другие документы используются, например, для ответов на письма либо для ссылки на договор в актах оказания услуг и других случаях.

Ссылки на другие документы находятся блоке «References». Каждая ссылка на другой документ описывается в ноде «ReferenceDocument». В атрибутах указываются параметры внешнего документа. Атрибут «Id» содержит уникальный ID документа, атрибут «Name» содержит название документа. Количество ссылок не ограниченно.

XML

<edoc:References>
    <!--блок ссылок на другие документы-->
    <edoc:ReferenceDocument Id="referenceGuid 1" Name="Дополнение 1 к документу №-" />
    <edoc:ReferenceDocument Id="referenceGuid 2" Name="Дополнение 2 к документу №-" />
</edoc:References>
<edoc:Data>
</edoc:Data>
4

Данные документа (Data)

Блок данных «Data» описывает суть документа. Содержимое блока данных зависит от вида документа. Каждый вид документа определяет свой набор тегов и значений. Стандарт электронного документа EDoc позволяет создавать свои варианты документов либо воспользоваться форматами предлагаемыми Удостоверяющим Центром ЗАО «Агропромбанк».

Политика стандарта EDoc однозначно требует машиночитаемости блока данных. Отображение информации в понятном человеку виде, достигается путем XSLT преобразования документа. Более подробная информация о преобразовании содержится в разделе информации о шаблоне визуального представления.

Перед разработкой собственного формата данных, настоятельно рекомендуем ознакомиться со списком описанных форматов на сайте Удостоверяющего Центра.

Стандарт запрещает использовать несколько блоков данных в одном документе.

XML

<edoc:Data>
    <score>
        <purveyor>ООО "Кристалл"</purveyor>
        <fiscalcode>0100085621</fiscalcode>
        <address>г. Тираспроль, ул. Ленина № д.</address>
        <phone>(533) 8-00-00</phone>
        <paymentaccount>3242180000028648 в ОАО "Чистые пруды" г. Тирасполь, МФО 486302, КУБ №, к.сч 30340000079</paymentaccount>
        <scorenumber>96</scorenumber>
        <scoredate>01 апреля 2020г.</scoredate>
        <scorepayer>ОАО "Чистые пруды", г. Тирасполь</scorepayer>
        <orders>
            <order>
                <number>1</number>
                <nameorder>Заправка лазерного картриджа</nameorder>
                <countunits>шт.</countunits>
                <count>10</count>
                <price>82</price>
                <sum>820</sum>
            </order>
                <order>
                <number>2</number>
                <nameorder>Восстановление лазерного картриджа</nameorder>
                <countunits>шт.</countunits>
                <count>1</count>
                <price>81.35</price>
                <sum>81.35</sum>
            </order>
                <order>
                <number>3</number>
                <nameorder>Ремонт лазерного картриджа</nameorder>
                <countunits>шт.</countunits>
                <count>4</count>
                <price>66</price>
                <sum>264</sum>
            </order>
            <sumorders>1165.35</sumorders>
            <sumorderstext>Одна тысяча сто шестьдесят пять рублей 35 копеек</sumorderstext>
        </orders>
    </score>
</edoc:Data>
5

Информация о вложенных файлах (Attachments)

Контейнер электронного документа EDoc позволяет работать с вложениями. Вложенным может быть файл любого формата и размера. Стандарт позволяет работать как с вложениями внутри документа, так и находящихся в виде отдельных файлов. Стандарт гарантирует проверку файла на предмет подмены и корректировки. Каждое вложение защищенно ХЭШ значением, которое формируется с помощью математических алгоритмов на основании содержимого файла. Значение ХЭШ функции и название алгоритма указываются в параметрах вложения.

Информация о вложенных файлах содержится в ноде «Attachments». Информация о конкретном вложенном файле содержится в ноде «Attachment». Каждое вложение имеет уникальный идентификатор – GUID который указывается в атрибуте «Id». Нода «Reference» содержит информацию о вложенном файле. Атрибут «URI» содержит информацию о местоположении файла согласно формата URI. Значение ХЭШ функции содержатся в ноде «DigestValue». Параметры алгоритма формирования ХЭШ значения указываются в ноде «DigestMethod» и атрибуте «Algorithm».

Содержимое файла может быть вложено в документ EDoc. Описание формата вложения содержится в разделе 7 Вложенные файлы (данные).

XML

<!--
    edoc:Reference - стандартный элемент XMLDSig (с исключённым блоком <Transforms></Transforms>
    - всегда используется http://www.w3.org/2001/10/xml-exc-c14n#), который перенесён
    из пространства ds: в пространство edoc:. Transform в данном случае применяется только к файлам типа Xml.
     -->
    <edoc:Attachments>
        <!--блок вложений-->
        <edoc:Attachment Id="attachmentGuid 1">
            <edoc:Reference URI="Uri файла вложения">
                <edoc:DigestMethod Algorithm="Название алгоритма, которым будет сформирован хэш-образ для файла вложения" />
                <edoc:DigestValue><!--хэш образ вложения--></edoc:DigestValue>
            </edoc:Reference>
        </edoc:Attachment>
    </edoc:Attachments>
6

Вложенный шаблон визуального представления (TemplateData)

Стандарт позволяет отделять шаблон визуального представления от содержимого документа, а также вкладывать шаблон визуального представления внутрь документа. Вложение шаблона визуального представления позволяет работать с документами в оффлайн режиме, программе просмотра электронного документа не придётся искать шаблон отображения в репозитории шаблонов, но при этом размер самого электронного документа увеличится на размер вложенного шаблона.

Если программа просмотра находит вложенный шаблон, то документ отображается только с помощью вложенного шаблона отображения.

Данные вложенного шаблона находятся за пределами блока подписываемых данных в ноде «TemplateData». Значение атрибута «Id» содержит уникальный ID шаблона. Данный уникальный идентификатор должен совпадать со значением атрибута «Id» ноды «Template» в блоке подписываемых данных. Если идентификаторы не будут совпадать, то вложенный шаблон применяться не будет. Шаблон в формате Base64 строки располагается внутри ноды «TemplateData».

XML

<edoc:TemplateData Id="templateGuid">
    <!--base 64 файла шаблона-->
</edoc:TemplateData>
7

Вложенные файлы (AttachmentData)

Стандарт позволяет размещать содержимое вложенных файлов внутри электронного документа. Это позволит автономно использовать документ, в случае использования внешних файлов, они всегда должны поставляться вместе с документом и находится в постоянной доступности. Вложение файлов позволяют это избежать, но при этом размер электронного документа увеличивается на размер вложенных файлов.

Содержимое файлов размещается в ноде «AttachmentData» в формате Base64 строки. Каждый файл имеет уникальный идентификатор – атрибут «Id». Данный идентификатор должен совпадать со значением атрибута «Id» ноды «Attachment» в блоке подписываемых данных.

Стандарт поддерживает сколь угодно много вложенных файлов. Хэш файла должен совпадать с указанным в блоке подписанных данных.

XML

<edoc:AttachmentData Id="attachmentGuid 1">
        <!--base 64 файла вложения-->
</edoc:AttachmentData>
8

Электронные подписи

EDoc гарантирует неизменность и неотрекаемость электронного документа благодаря электронной подписи. Стандарт позволяет накладывать подписи формата Xades: XADES-BES, XADES-T, а также подписи формата XMLDSIG

Стандарт поддерживает последовательное, параллельное и смешанное подписание документа.

При параллельном подписании подписывается только блок данных. При данной схеме удаление/отмена одной подписи не ведет к невозможности проверки остальных подписей. Каждая подпись независима.

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

Смешенное подписание позволяет комбинировать параллельное и последовательное подписание. В таком режиме могут одновременно присутствовать как последовательные, так и параллельные подписи. Подобный режим подходит для двух или трех сторонних договоров, когда каждая из сторон формирует свою цепочку последовательных подписей.

XML

    <edoc:Signatures>
    <!--блок списка подписей-->
        <edoc:Signatures id="signatureGuid">
            <!--
            стандартный элемент XMLDSig, который подписывает блок данных,
            либо блок данных и другие подписи, либо только другую подпись
            -->
        </edoc:Signatures>
    </edoc:Signatures>