XF за 15 минут
XF (eXchange Format) - это новый универсальный, легкий и переносимый формат представления данных в текстовом виде, который легко воспринимается человеком и обрабатывается программами.
XF может использоваться для:
- разработки форматов и протоколов обмена и хранения данных;
- представления данных в виде, понятном для человека;
- представления сложных структур данных с возможностью простого расширения.
Пример 1
Maxim: person {
tel = "444 55 100";
email = "xfsoft@mail.ru";
address = "ул. Березовая, 3";
}
Документ XF имеет древовидную структуру, в фигурные скобки { и } заключаются потомки элемента (в данном случае элемента Maxim). Отдельные элементы-потомки разделяются точкой с запятой (;). Потомки одного и того же элемента должны иметь уникальные (неповторяющиеся) имена.
Знаком равенства отделяются значения элементов (телефон, email, адрес).
В кавычки (") с двух сторон заключаются имена и значения элементов, содержащие какие либо символы кроме латинских букв, цифр, подчеркивания (_) и тире (-).
Пример 2
"Фигура 1": "квадрат" { x = 100; y = 150; "сторона" = 300; } "Фигура 2": "круг" { x = 200; y = 300; "радиус" = 200; "цвета" { "закрашен" = "да"; "цвет-окружности" = "красный"; "цвет-фона" = "зеленый"; } }
В примере описываются два объекта, "Фигура 1" и "Фигура 2". Двоеточием от названия или значения элемента отделяется класс элемента, показывающий, что по сути описывает элемент (в примере, квадрат и круг). Любой элемент может иметь значение и/или класс.
Как видно, в названиях элементов, их классах и значениях можно использовать любые интернациональные символы (XF полностью поддерживает Unicode UTF-8 и UTF-16).
Пример 3
Parent; Parent { Child; Child; }
В этом примере Parent - это один и тот же элемент (имя любого элемента можно использовать неоднократно. То же касается и элементов Child - это один и тот же элемент (поскольку они потомки одного и того же элемента и имеют одинаковое имя), мы просто два раза ссылаемся на элемент.
Пример 4
xf version = "1.0";
Из примера видно, что если у элемента всего один потомок, его можно не заключать в фигурные скобки (для лаконичности). Так что вместо записи
A { B { C { D } } };
можно написать всего лишь
A B C D;
Пример 5
My name = "Max"; My surname = "Volkov"; My { address street = "Какая-то улица"; address house = "5"; name = "Ivan"; }
В примере мы несколько раз ссылаемся на элемент My, а также на элемент address, что допустимо. Недопустима лишь последняя строка примера - там мы повторно пытаемся определить значение элемента, что недопустимо.
Правила использования XF
- Строковые данные (названия элементов, классы и значения) могут содержать любые символы. Если они содержат что-либо кроме латинских букв, цифр, символов "-" и "_", их необходимо заключить в двойные кавычки (лишние кавычки там где не надо не мешают). В строках вместо кавычки используется знак последовательность \* , а перевод строки (необязательно) можно заменить на \n. XF чувствителен к регистру (cat и Cat - не одно и то же).
- Элемент может иметь значение и/или класс. Класс отделяется от элемента двоеточием, значение - точкой с запятой. Вот возможные варианты записи элементов:
element element = value element : class element = value : class element : class = value
Чем полезен XF
XF это не язык разметки (в отличие от XML). XF значительно более прост как с точки зрения синтаксиса, так и модели данных.
XF может применяться для разработки новых форматов и протоколов, значительно более компактных чем те, что основаны на XML. XF более удобен для ручного редактирования человеком, и достаточно удобен даже без специальных редакторов (например, не требуется каждый раз закрывать тэги как в XML).
Модель данных XF значительно проще в реализации и понимании. В отличие от XML DOM, где есть тэги, атрибуты, текст (сложная трехуровневая организация), модель данных XF (XF Data Model, XFDM) представляет собой простое дерево элементов одинаковых по своим свойствам. Так, для представления XFDM в виде реляционной таблицы требуется всего 5 полей (уникальный номер элемента, номер родителя, имя, класс, значение). Модель XFDM более близка к классическому представлению данных в программировании - имя, тип (класс), значение. В XFDM легко идентифицировать любой элемент - путь до него в дереве XF всегда однозначно указывает на элемент.
XF только начинает свое развитие, только появляется программное обеспечение, его поддерживающее и использующее. XF не стремится быть конкурентом XML, но позволяет решать задачи, для которых он создан - простой и прозрачный обмен данными между программами в виде, понятном для человека.
Ссылки
Любые вопросы по XF и XFLib можете направлять на электронную почту max@xfhome.org (Волков Максим).
- Сайт проекта XFHome.org (http://xfhome.org). Разработка и стандартизация формата XF, разработка программного обеспечения для работы с XF и документации.
- Введение в XF за 15 минут (http://xfhome.org/?page=15mins). Очень краткое введение в XF.
- Формат обмена данными XF, ревизия 5 (http://xfhome.org/files/xf_10.pdf).
- Библиотека XFLib для работы с XF (http://xfhome.org/?page=soft).
Оставить комментарий
Комментарии
Так или иначе, XML, YAML и JSON (упрощенный YAML) идеально спроектированы, их парсеры многократно протестированы, и подобные велосипеды от первокурсников с NIH синдромом не нужны.
XF годится только для ЭЛЕМЕНТАРНЫХ задач.
Без DTD опять верификацию тащить в код.
А для удобства человеческого визуального вполне XSL хватит :)
Вобщем, не тот калибр :)