programing

YAML이 마크 업 언어가 아닌 경우 무엇입니까?

copysource 2021. 1. 16. 20:38
반응형

YAML이 마크 업 언어가 아닌 경우 무엇입니까?


YAML이 XML보다 마크 업 언어가 덜한 이유를 알 수 없습니다. 마크 업 언어의 목적은 문서의 구조를 정의하는 것이며 YAML은이를 정확히 수행합니다. (YAML은 Yaml ai n't markup language를 의미합니다.)

YAML이 대신해야하는 것은 Yet another markup language 입니다.


따라서 마크 업 언어는 일반적으로 사람이 읽을 수있는 기본 텍스트와 처리를 지시하는 특수 표시기 또는 "마크 업"을 가정합니다. 이 아이디어는 누군가의 원고의 인쇄 버전을 가져 와서 새 줄이 어디로 가야하는지, 편집 등을 표시하기 위해 "마크 업"하는 편집자에게서 나왔습니다.

이러한 방식으로 SGML은 마크 업 언어를 선언하기위한 메타 언어이고 HTML은 마크 업 언어입니다. 1996-7 년에 XML이 등장했을 때 마크 업 언어를 만들기위한 단순화 된 SGML 메타 언어로 판매되었습니다. XML (및 SGML)에는 텍스트의 일부를 "표시"하는 요소와 표시를 수정하는 속성이 있습니다. 시간이 지남에 따라 XML은 문서 마크 업 이상의 용도로 사용되었으며 사람들은 데이터 직렬화에 사용했습니다. 물론 해결해야 할 큰 문제였습니다.

YAML과 JSON은 현장에 등장했으며 문서 마크 업이 아닌 데이터 직렬화에 중점을 두었습니다 . 이러한 언어에는 핵심 문서 텍스트가 없습니다.
따라서 YAML Ai n't Markup Language는 XML과 매우 정확하게 구별됩니다.


여기 진짜 이야기입니다 ... :)

Clark, Oren과 저는 2001 년 4 월에 YAML 작업을 시작했습니다. Oren과 Clark은 SML 메일 링리스트의 일부였으며 XML을 더 간단하게 만들려고 노력했습니다. 방금 Data :: Denter라는 Perl 용 데이터 직렬화 언어를 작성했습니다. Clark은 Data :: Denter 구문과 유사한 YAML이라는 아이디어에 대해 저에게 연락했습니다. Clark은 이미 yaml.org를 인수했습니다.

몇 달 동안 함께 작업 한 후 YAML ( 당시에 Yet Another Markup Language 를 의미 함)이 실제로 마크 업 언어 (텍스트 문서의 다양한 요소를 표시)가 아니라 직렬화 언어 (텍스트 유형 / 주기적 데이터 그래프의 표현). 우리 모두는 YAML이라는 이름을 좋아했기 때문에 YAML Ai n't Markup Language 를 의미하도록 역동 칭했습니다 .

http://yaml.org/spec/ 은 다음으로 시작합니다.

YAML ™ ( "낙타"와 운율)은 애자일 프로그래밍 언어의 일반적인 기본 데이터 구조를 중심으로 설계된 인간 친화적 인 교차 언어 유니 코드 기반 데이터 직렬화 언어입니다.

더 나아 졌다고 말할 수 없었습니다 ... :


XML은 HTML 및 SGML에서 이름의 "ML"부분을 상속 받았습니다. "마크 업"언어 인 "마크 업"언어는 "텍스트 의이 부분은 굵게 표시되어야합니다"또는 "와 같은 마크 업 지침과 함께 일반 텍스트의 스트림입니다. 이 텍스트는 제목입니다. " 즉, 텍스트의 특정 부분은 굵은 체 또는 제목으로 표시됩니다 .

나중에 일부 사람들은 태그와 속성으로 만 구성된 XML을 작성하고 태그를 마크 업할 일반 텍스트가 없습니다. (XML의 적절한 사용 여부에 대한 의견과 스타일이 다릅니다). 이러한 방식으로 사용하면 XML은 트리 구조 데이터를 기록하는 언어가됩니다.

YAML은 데이터 모델 이 트리 구조가 적용되는 기본 선형 텍스트 개념이없는 트리 구조 포함하기 때문에 "아님"마크 업 언어 입니다. 거기에 마크 업할 것이 없습니다. 또는 다르게 넣으면 YAML 스트림이 나타내는 데이터 마크 업이 아닙니다. 반대로, XML 태그로 표현 되는 데이터 마크 업이거나 적어도 일부 관점에 따라야합니다. (두 경우 모두, 상기 데이터 표현 에는 YAML의 콜론 및 들여 쓰기 또는 '='및 XML의 따옴표와 같은 일부 마크 업이 포함되어 있지만 그게 요점이 아닙니다).


다음 은 YAML에 대한 페이지 의 인용문입니다 .

독자들의 마음에 가장 먼저 떠오르는 질문은 "왜 YAML이라는 이름인가?"라고 생각합니다. "Yet Another XXX"를 의미하는 "YA *"형태의 두문자어를 귀엽게 채택한 도구가 많이 있습니다. 오픈 소스 위트의 군비 경쟁에서 YAML은 묵시적인 약어를 피하고 대신 재귀 적 "YAML Ai n't Markup Language"에 정착합니다. 그러나 여기에는 특정한 의미가 있습니다. YAML은 마크 업 언어가하는 일을 수행하지만 마크 업을 요구하지 않습니다.

XML과 같은 다른 전통적인 언어보다 훨씬 적은 마크 업이 필요하기 때문에 이름이 선택되었습니다. 마크 업 지향보다는 데이터 지향적이라는 점을 구별합니다.


YAML이 XML보다 마크 업 언어가 덜한 이유를 알 수 없습니다.

XML 대신 YAML을 사용하면 몇 가지 장점이 있습니다. 우선, 더 사람이 읽을 수 있습니다. XML 데이터 구조와 달리 각 데이터 요소의 태그 이름을 정의하고 제공해야합니다. 개발자는 XML 코드에 대해 부피가 크고 사용자는 XML 문서를 이해하기가 매우 어렵습니다. 실제로 XML은 사용자-기계 통신이 아니라 기계 간 통신을위한 것입니다. YAML은 사람이 쉽게 읽을 수 있기 때문에 사용자가 데이터 소스를 읽고 / 변경할 수 있도록 처리하고 컴퓨터 프로그램과 통신하는 데 사용할 수 있습니다.

다음은 구조가 어떻게 다른지 보여주는 예입니다.

XML Examples:
<busNo>101
    <busStop>ABC
           <busFee>5.4</busFee>
    </busStop>
    <busStop>CUHK
           <busFee>5.4</busFee>
    </busStop>
    <busStop>HKU
           <busFee>5.4</busFee>
    </busStop>
    <busStop>XYZ
           <busFee>5.4</busFee>
    </busStop>
</busNo>

YAML Examples:
--- #bus no
101  : [ABC:5.4, HKU:5.4, CUHK:5.4, XYZ:5.4]

The best example to use YAML is used for configuration file of the program. Certainly, you can parse your own format of configuration file into XML and pass it into your program. But, you can use YAML instead. Also, you could have faster development, especially on web development. YAML is designed with scripting languages such as Python, Perl, Ruby.etc. YAML is designed to translate easily to strucutres which are common to various languages stated above.

In conclusion, YAML is designed for human-read, which make less of a markup language than XML.

ReferenceURL : https://stackoverflow.com/questions/6968366/if-yaml-aint-markup-language-what-is-it

반응형