XF за 15 минут

Эта статья, первоначально опубликованная на OpenNet.ru, может считаться очень кратким введением в XF.

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

Чем полезен 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 (Волков Максим).