사용자 도구

사이트 도구


kb:yamltutorial

YAML Tutorial

YAML 문법/구조에 대한 간단한 설명

YAML 구조

기본적으로 XML과 마찬가지로 트리 구조다.

1. 기본 구조

부모 자식의 구분은 들여쓰기를 통해 이루어진다.

parent:
    child-1: first child
    child-2: 
        grandchild-1: first grand child
        grandchild-2: second grand child

같은 부모를 가지는 자식 노드들은 들여쓰기가 정확히 일치해야 한다. 틀리면 에러다.

에러

child-1:
    grandchild-1: first grand child
    grandchild-2: second grand child
 child-2: <-- error
    grandchild-1: first grand child
    grandchild-2: second grand child

정상

child-1: first child
    grandchild-1: first grand child
    grandchild-2: second grand child
child-2: 
        grandchild-1: first grand child   <-- this is ok
        grandchild-2: second grand child

2. 노드

하나의 노드는 기본적으로 key:value의 페어로 이루어진다. value에 해당하는 항목에는 3가지가 있다.

  1. C 쪽의 POD 타입 비슷한 스칼라(scalar) : 문자열, 정수, 실수, 날짜 등등 여러 가지 타입이 들어갈 수 있다.
    key: value
  2. 시퀀스로 이루어진 자식 노드들. C 쪽의 배열(array)을 생각하면 된다. 정수형의 키를 가지는 노드라고 생각하면 쉽다.
    key: 
      - child: 1
        name: tom
      - child: 2
        name: john
  3. 매핑으로 이루어진 자식 노드들. 각 노드 간의 구분은 문자열로 이루어지며, 순서를 보장하지 않는다. 키 문자열을 이용해 정렬해 버리기 때문이다.
    key: 
        child-1: tom
        child-2: john

자식 노드를 가지는 노드는 스칼라 값을 가질 수 없다. 앵커 및 알리아스 같은 경우에는 예외가 된다고도 볼 수 있는데, 이것은 따로 설명을 한다.

3. 주석

주석은 '#' 문자로 시작하는 라인으로만 달 수 있다. 스칼라 값 옆에다 달 수는 없다. 스칼라 값 옆에다 다는 경우 그냥 문자열로 취급한다.

# this is valid comment
key: 
  - child: 1   # this is invalid comment
    name: tom
  - child: 2
    name: john

4. 앵커/알리아스

반복되는 값은 앵커 및 알리아스를 통해 줄일 수 있다.

anchors:
    first-anchor: &first <-- 앵커 선언.
        Name: tom
        Birth: 1977.4.21
    second-anchor: &second <-- 앵커 선언.
        Name: john
        Birth: 1979.7.15

first-child  : *first <-- 앵커 알리아스.
second-child : *second <-- 앵커 알리아스.

이렇게 하면 프로그램 상에서 “first-child” 키를 통해 자식 노드를 접근하면 “first-anchor” 노드 아래에 있는 값들이 나오게 된다. C 쪽의 포인터를 생각하면 쉽다.


kb/yamltutorial.txt · 마지막으로 수정됨: 2014/11/07 16:06 (바깥 편집)