Дружественный Open Document Format

"Да куда ж нам без формата?"

mike (old student)

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

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

Хорошим примером такой эволюции является появление семейства текстовых офисных форматов ODF (Open Document Format). Эти текстовые форматы постепенно идут на смену прошлым стандартам редактируемых офисных данных и предназначены для создания текстовых документов (odt), электронных таблиц (ods), рисунков (odg), презентаций (odp). ODF претендует на то, чтобы быть более простым, более удобным, более понятным форматом, чем ставшие стандартом де-факто форматы от "Майкрософт" rtf, doc, xls и т.д. Кстати, и в самой "Майкрософт" тоже понимают необходимость перемен, и поэтому изобрели свой вариант новых открытых стандартов OOXML.

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

В этих xml-файлах, кроме непосредственного содержания документа, имеются так называемые метаданные. Это дополнительная информация, которая позволяет задать тексту определённые параметры. Например, тип и размер шрифта, положение на странице, параметры печати или вывода на экран монитора. Наибольшую популярность сейчас приобретает стандарт описания метаинформации XML (eXtend Markup Language). Основным требованием этого стандарта как раз и является принцип "юзерфрендли": xml-документы должны быть легко читаемы с помощью простейших текстовых процессоров, а также xml-разметка должна быть простой для понимания простым человеком.

ODF является одной из многочисленных реализаций стандарта XML. Поэтому, открыв odf-документ как zip-архив, не думаю, что разобраться со структурой файлов и папок по их названиям будет слишком большой проблемой. Особенно для тех, кто хоть раз в своей жизни создавал html-странички, ну хотя бы на уровне "я и моя кошка". Главный файл с содержанием - это content.xml, файл стиля - style.xml. В папках могут находиться мультимедийные файлы - картинки, аудио-, видеофайлы. В общем, документ ODF представляет собой что-то вроде веб-сайта времён статических html-страничек. И теги внутри xml-файлов вряд ли будут тяжкими для понимания:

<text:p text:style-name="Standard">
Привет, ODF!
</text:p>

Для сравнения, вот, например, как могут выглядеть метаданные в старом формате RTF от "Майкрософт":

{\loch\f0\fs24\lang1033\i0\b0 \u1055 ?\u1088
?\u1080 ?\u1074 ?\u1077 ?\u1090 ?, ODF!}

Ужас! Согласитесь, сие мало чем отличается от китайской грамоты. Напоминает разметку для полиграфической системы TeX, только невразумительную. Метаданные в формате ODF выглядят более читабельными, чем метаинформация из RTF. Я уже не говорю про DOC, метаданные которого хранятся в бинарном виде.

Естественно, давайте взглянем, как выглядит читабельность в альтернативном OOXML:

<w:t>
Привет, ODF!
</w:t> 

Казалось бы, OOXML проще и компактнее. Особенно это отметят для себя программисты, которые любят писать всякие автоматизации документооборота. Но эта простота может оказаться хуже воровства. Поди сообрази, что значат эти самые "w:t". Разметка OOXML, так сказать, интуитивно непонятна, а ODF более читабелен для человека. И это даёт более лёгкую возможность выуживать как содержание, так и метаинформацию из файла, не прибегая даже к чтению документации по всем тегам этого стандарта. Ведь, как известно, "юзерфрендли" - это когда не нужно читать много документации.

Документацию, конечно же, программистам читать придётся. Но и в отношении документации ODF тоже более гуманен и человечен. Хотя бы потому, что по своим размерам документация ODF поменьше будет, чем OOXML.

Таким образом, ODF является сейчас чемпионом по дружественности, в сравнении с остальными распространёнными офисными форматами.

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

Основной же проблемой перехода на новые стандарты является то, что системы внутреннего документооборота в организациях - вещи очень консервативные. Переход на другие форматы может потребовать длительного времени и определённых средств. Например, в "КВ", как говорит главред, статьи в формате doc ещё лет пять будут актуальными.

Поэтому, отклоняясь от первоначальной темы этой статьи, хотелось бы в заключении напомнить главный фактор перехода на открытые форматы. Главным фактором является проблема культурного и информационного наследия в цифровую эпоху. Файлы данных могут иметь очень большой срок хранения. Всё больше и больше электронных документов имеют потенциальную историческую важность. Мы уже имеем такую ситуацию, когда есть файлы данных, а программа, при помощи которой эти файлы можно открыть, устарела и не работает на современных системах. Как показывает современный опыт, если информация хранится в закрытом или непонятном формате, через какое-то время получить доступ к ней может оказаться крайне сложно или и вовсе невозможно. Открытые стандарты гарантируют доступность информации для будущих поколений.

Михаил АСТАПЧИК


История формата ODF

ODF был изначально разработан в 1999 году компанией StarDivision, выпускавшей офисный пакет StarOffice. В 1999 году эту компанию купила корпорация Sun. В 2000 году Sun открыла исходные тексты офисного пакета StarOffice и выпустила его под свободной лицензией. Проект был назван OpenOffice.org. В том же году стартовал проект по созданию открытого стандарта файла-документа на основе XML. В 2002 году состоялось первое заседание The OASIS Open Office Technical Committee, и новый формат стал официально поддерживаться одной из самых авторитетных международных организаций по стандартизации в области вычислительных технологий. В сентябре 2005 года формат был представлен в Международную Организацию по стандартизации ISO. Sun также официально объявила об отказе использовать какие-либо патентные ограничения в отношении ODF. В 2006 году данный формат был принят ISO под названием ISO/IEC 26300:2006 "Open Document Format for Office Applications (OpenDocument) v1.0 ". На данный момент ведётся работа над версией 1.2.


Простая смотрелка ODT

Немного практики для линуксоидов. Представьте ситуацию в продолжение статьи "Старость в радость": старенький комп, даже AbiWord тормозит, но нужно прочитать текстовый odt-файл. Или же просто неохота открывать OpenOffice, чтобы посмотреть простенький документ на пару абзацев. Для решения этой задачки используем подручные утилиты Linux: unzip для распаковки odt-документа и xmlstarlet для обработки xml-данных. Xmlstarlet - простенькая консольная утилитка в стиле юникс-вэй для сортировки, анализа и редактирования xml-файлов. Есть в Debian или легко качается из Инета. Пишем баш-скрипт следующего содержания:

#!/bin/sh

unzip -p "$1" content.xml | xmlstarlet sel -N text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" -T -t -m '//text:p' -v . -n| more

Сохраняем скрипт под названием, например, odtview и не забываем установить права на выполнение. Теперь текст любого документа odt легко и быстро просмотреть прямо в консоли:

$ путь/odtview document.odt

Небольшой комментарий к скрипту для любознательных. ODT-файл является zip-архивом. Через unzip достаём содержание файла content.xml и направляем это содержание на обработку xmlstarlet. Здесь в длинном теге определяемым параметром text выбираем элементы //text:p и, разделив их переводом строки, передаём консольному редактору more. Параметры для скриптов, в нашем случае название файла, в юникс-системах передаётся в виде $1, $2 и т.д. Изящно.

Данный скрипт полностью работоспособный. Единственное, это в некоторых дистрибутивах утилита xmlstarlet устанавливается как xml, и, естественно, в этом случае скрипт требуется поправить.

Версия для печатиВерсия для печати

Номер: 

32 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!