Это более подробный ответ, чем ответ Джонатана (который в остальном верен).
Формат Yaml больше похож на json, чем на xml. Yaml и json предназначены для простого представления основных, но часто используемых структур данных, общих для большинства языков (и распространенных в языках сценариев). Xml разработан как язык разметки и метаспецификация с множеством функций, облегчающих смешивание различных типов документов.
Самые простые и наиболее часто используемые контейнеры в Yaml — это последовательности и карты. В языках программирования последовательности часто называют списками или массивами, а карты часто называют словарями, хэшами, хэш-картами или массивами (что просто странно; я смотрю на вас, PHP).
Таким образом, ваш документ эквивалентен документу yaml/json (действителен для обоих типов):
{"style": {"name": "Retro"}, "style": {"name": "Nouveau"}, "style": {"name": "Plain"}}
Если вы знаете json или любой другой язык с картами в стиле {}, довольно легко понять, в чем проблема. Написание этого в рубине будет:
{"style" => ..., "style" => ..., "style" => ...}
Последняя пара ключ/значение перезаписывает предыдущую, и до них невозможно добраться. И поэтому вам нужно изменить формат вашего документа.
Предложение 1
Предложение Джонатана Джулиана довольно хорошее:
Retro:
type: style
Nouvaeu:
type: style
Plain:
type: style
Предложение 2
Я бы, вероятно, использовал что-то вроде:
styles:
Retro:
Nouvaeu:
Plain:
Или просто оставьте «стили» вообще, если это подразумевается контекстом.
Предложение 3
Другой пример, больше похожий на xml, — использовать !!pair.
!!pair
- style:
name: Retro
- style:
name: Nouveau
- style:
name: Plain
Это более или менее (в зависимости от парсера/языка) эквивалентно структуре данных:
[("style", {"name": "Retro"}),
("style", {"name": "Nouveau"}),
("style", {"name": "Plain"})]
person
driax
schedule
26.07.2011