Интернет магазин китайских планшетных компьютеров



Компьютеры - YAML - Легкость для чтения и записи

04 июня 2011


Оглавление:
1. YAML
2. Легкость для чтения и записи
3. Синтаксические элементы
4. Реализации



Синтаксис YAML минимален, особенно по сравнению с XML синтаксисом. В спецификации указывают, что большое влияние оказал стандарт RFC 822.

Использование

YAML в основном используется как формат для файлов конфигурации. Применяется для настройки веб-каркасов Ruby on Rails, Symfony, GAE framework и Google App Engine.

Пример

В некотором проекте нужно хранить конфигурацию, описывающую отображение текстовых команд на функции, с помощью регулярных выражений. Можно представить эту структуру простым текстом, типа конфигурационного файла от древней UNIX-программы:

PRIVMSG newUri ^http://.*
PRIVMSG deleteUri ^delete.*
PRIVMSG randomUri ^random.*

Тогда расходы на разметку минимальны, но все становится очень негибко — значения не могут включать пробелы, не могут быть многострочными и т. п. Подходит только в простых случаях.

В XML, расходы на разметку намного больше:

<bindings>
 <binding>
   <ircEvent>PRIVMSG</ircEvent>
   <method>newUri</method>
   <regex>^http://.*</regex>
 </binding>
 <binding>
   <ircEvent>PRIVMSG</ircEvent>
   <method>deleteUri</method>
   <regex>^delete.*</regex>
 </binding>
 <binding>
   <ircEvent>PRIVMSG</ircEvent>
   <method>randomUri</method>
   <regex>^random.*</regex>
 </binding>
</bindings>

Конечно, можно сделать более «дешёвое» отображение с использованием атрибутов:

<event name="PRIVMSG">
 <method name="newUri" regex="^http://.*" />
 <method name="deleteUri" regex="^delete.*" />
 <method name="randomUri" regex="^random.*" /> 
</event>

Теперь то же самое на YAML:

event: PRIVMSG
methods:
  - name: newUri
    regexp: '^http://.*'
  - name: deleteUri
    regexp: '^delete.*'
  - name: randomUri
    regexp: '^random.*'

Говоря об отличиях YAML от XML, отметим также, что вложенные XML элементы могут использоваться для отображения произвольных структур, а YAML более близок к отображению типичных моделей данных из Perl, Python, Java, позволяя описывать свободные сочетания последовательностей, сопоставлений и скалярных типов — то есть ближе к реальным структурам данных языков программирования, и не требует различных соглашений про DOM-отображения структур данных на документы и обратно, как требуется в XML.



Просмотров: 3647


<<< Oeminfo.ini
Реестр Windows >>>