Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

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

    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).

    Оставить комментарий

    Комментарий:
    можно использовать BB-коды
    Максимальная длина комментария - 4000 символов.
     

    Комментарии

    1.
    99K
    08 июля 2017 года
    Денис Ерохин
    0 / / 08.07.2017
    Мне нравитсяМне не нравится
    29 августа 2017, 01:37:14
    А, сайт и не открывается, значит, так и помер формат в 2008 году, никем кроме этой статьи не замеченный.
    Так или иначе, XML, YAML и JSON (упрощенный YAML) идеально спроектированы, их парсеры многократно протестированы, и подобные велосипеды от первокурсников с NIH синдромом не нужны.
    2.
    99K
    08 июля 2017 года
    Денис Ерохин
    0 / / 08.07.2017
    Мне нравитсяМне не нравится
    29 августа 2017, 01:27:54
    Выглядит как убогая пародия на JSON и непонятно, зачем оно вообще нужно.
    3.
    22K
    24 декабря 2006 года
    Nerd
    11 / / 24.12.2006
    Мне нравитсяМне не нравится
    17 апреля 2008, 13:49:27
    В принципе перспективно, но есть загвоздка XML уже давно принят, на нем давно пишут, и он давно применяется и по моему в SOA это очень широко применяется, а так как в SOA применяется есть вероятность, что в народе XF просто замнут и все.Но есть и плюсы если всетаки он правда такой универсальный,то его думаю если его доработать,возможно как-то избавиться той-же верификации и попытаться внедрить в SOA или еще куда-нибудь веб, то в принципе это будет хороший конкурент XML. Так что дерзай!
    4.
    33K
    16 ноября 2007 года
    shilen
    7 / / 16.11.2007
    Мне нравитсяМне не нравится
    16 ноября 2007, 15:53:04
    Выбор инструмента нада делать исходя из задачи.
    XF годится только для ЭЛЕМЕНТАРНЫХ задач.
    Без DTD опять верификацию тащить в код.
    А для удобства человеческого визуального вполне XSL хватит :)
    Вобщем, не тот калибр :)
    5.
    31K
    19 июля 2007 года
    BlackHeretic
    0 / / 19.07.2007
    Мне нравитсяМне не нравится
    11 ноября 2007, 13:56:45
    А по моему XML все же логичнее.
    6.
    34K
    11 ноября 2007 года
    LiteCat
    0 / / 11.11.2007
    Мне нравитсяМне не нравится
    11 ноября 2007, 11:30:14
    Кстати достаточно удобный синтаксис, приятнее использовать чем XML в тех же конфигах
    Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
    Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог