From: Максим Волков (Floyd_Rose) <xfsoft@mail.ru.>
Newsgroups: email
Date: Mon, 14 Mar 2007 14:31:37 +0000 (UTC)
Subject: XF (eXchange Format) за 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;
}
В примере описываются два объекта, "Фигура 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
1. Строковые данные (названия элементов, классы и значения) могут
содержать любые символы. Если они содержат что-либо кроме латинских
букв, цифр, символов "-" и "_", их необходимо заключить в двойные
кавычки (лишние кавычки там где не надо не мешают). В строках вместо
кавычки используется знак последовательность * , а перевод строки
(необязательно) можно заменить на n. XF чувствителен к регистру (cat и
Cat - не одно и то же).
2. Элемент может иметь значение и/или класс. Класс отделяется от
элемента двоеточием, значение - точкой с запятой. Вот возможные варианты
записи элементов:
element
element = value
element : class
element = value : class
element : class = value
3. Отдельные элементы отделяются друг от друга знаками точкой с запятой.
4. Элемент может иметь потомки, потомки одного элемента не могут иметь
совпадающие имена. Потомки заключаются в фигурные скобки. Если мы
описываем всего один потомок элемента, фигурные скобки можно не ставить.
5. В XF можно использовать комментарии, игнорируемые программами,
обрабатывающими этот формат. Комментарии могут начинаться со звездочки
(тогда они длятся до конца текущей строки) либо с сочетания /* (тогда
они длятся до первого появления сочетания */ ).
Чем полезен XF
XF это не язык разметки (в отличие от XML). XF значительно более прост
как с точки зрения синтаксиса, так и модели данных.
XF может применяться для разработки новых форматов и протоколов,
значительно более компактных чем те, что основаны на XML. XF более
удобен для ручного редактирования человеком, и достаточно удобен даже
без специальных редакторов (например, не требуется каждый раз закрывать
тэги как в XML).
Модель данных XF значительно проще в реализации и понимании. В отличие
от XML DOM, где есть тэги, атрибуты, текст (сложная трехуровневая
организация), модель данных XF (XF Data Model, XFDM) представляет собой
простое дерево элементов одинаковых по своим свойствам. Так, для
представления XFDM в виде реляционной таблицы требуется всего 5 полей
(уникальный номер элемента, номер родителя, имя, класс, значение).
Модель XFDM более близка к классическому представления данных в
программировании - имя, тип (класс), значение. В XFDM легко
идентифицировать любой элемент - путь до него в дереве XF всегда
однозначно указывает на элемент.
XF только начинает свое развитие, только появляется программное
обеспечение, его поддерживающее и использующее. XF не стремится быть
конкурентом XML, но позволяет решать задачи, для которых он создан -
простой и прозрачный обмен данными между программами в виде, понятном
для человека.