JsonML
JsonML| 인터넷 미디어 유형 | application/jsonml+json(iii) |
|---|---|
| 형식 유형 | 마크업 언어 및 웹 템플릿 시스템 |
| 연장 위치 | XML, JSON 및 JavaScript |
JsonML, JSON Markup Language는 XML(Extensible Markup Language)과 JSON(JavaScript Object Motoration) 사이의 매핑에 사용되는 경량 마크업 언어다.웹브라우저 등 자바스크립트 환경 내에서 사용하기 쉽도록 XML 문서나 파편을 JSON 데이터 구조로 변환해 XML 파서 오버헤드 없이 XML 데이터를 조작할 수 있도록 했다.
JsonML은 Ajax(Asynchronous JavaScript 및 XML) 웹 어플리케이션에서 적용성이 가장 뛰어나다.XHTML(eXtensible HyperText Markup Language)을 DOM(Document Object Model) 요소로 결정적으로 재구성할 수 있는 클라이언트로 전송하는 데 사용된다.동적 행동을 정적 요소에 결합하기 위해 건설 중에 점진적 강화 전략을 사용할 수 있다.[1]
JsonML은 JBST(JsonML+Browser-Side Templates)라는 복잡한 클라이언트측 템플릿을 만드는 기본 구조로도 사용될 수 있다.[2]구문론적으로 JBST는 JSP(JavaServer Pages) 또는 ASP처럼 보인다.NET (Active Server Pages )NET) 사용자 제어.대화형 예제는 jsonml.org 웹사이트에서 이용할 수 있다.
구문
XML에서 JsonML로의 변환은 부분적으로 되돌릴 수 있다.XML 네임스페이스는 네임스페이스 접두사로 요소 이름을 미리 입력하여 처리한다(예:<myns:myElement/>된다["myns:myElement"].
변환 예제
JsonML은 모든 XML 문서를 JSON 문자열로 고유하게 나타낼 수 있도록 허용한다.구문에서는 다음을 사용한다.
| JsonML 인코딩 | 원본 XML |
|---|---|
["사람", {"created":"2006-11-11T19:23", "modified":"2006-12-31T23:59"}, ["이름", "로버트"], ["성", "스미스"], ["주소", {"형식":"집"}, ["거리", "12345 6 Ave"], ["도시", "어느 동네"], ["주", "CA"], ["우편 번호", "98765-4321"] ] ] | <!-- 사람 기록의 XML 표현 --> 2006-11-T19:23" 수정="2006-12-31T23:59" 수정="2006-121-31T23:59"><첫 번째 이름> 스미스</라스트네임><주소 유형="집">12345 6번째 Ave</거리 <도시>아무 도시나CA</state>98765-4321</postalCode> </address> </person> |
"일반적인" JSON 변환은 보다 압축적인 표현을 만들지만, 키 값 쌍이 속성인지 노드인지 정의하지 않는다는 점에서 문서 구조 정보의 일부를 잃게 된다.
{"사람": { "주소": { "도시": "어느 동네", "우편 번호": "98765-4321", "주": "CA", "거리": "12345 6 Ave", "형식": "집" }, "created": "2006-11-11T19:23", "이름": "로버트", "성": "스미스", "modified": "2006-12-31T23:59" }} "객체 양식" 불일치
JSON 사용자 그룹 스레드에서 더글라스 크록포드는 "어레이 형태"와 "객체 형태"[3]라는 두 가지 변형을 설명하기 위해 "JsonML"이라는 용어를 잘못 사용했다.이것은 항상 크록포드가 "어레이 형태"라고 부르는 것을 의미하는 JsonML이라는 용어의 오용이었다.[4]
유사한 기술과의 비교
XML/XSLT
XML과 XSLT(Extensible Stylesheet Language Transformations)도 클라이언트측 템플리트를 생성할 수 있으며, 두 가지 모두 데이터와는 별도로 템플리트를 캐싱할 수 있다.그러나 많은 프로그래머들은 JBST의 구문이 익숙하기 때문에 관리하기 쉽다고 생각한다.JBST는 다른 유형의 제어 언어의 혼합을 요구하지 않고 템플릿에 JavaScript를 기본적으로 사용한다.
이너HTML
겉보기에는 유사한 작업을 수행하는 데 사용되는 반면, JsonML과 내부는HTML은 상당히 다르다.InnerHTML은 서버가 마크업을 렌더링하거나 프로그래머가 JavaScript에서 값비싼 문자열연결을 수행하는 것을 의미하는 정확한 형태의 모든 마크업을 요구한다.
JsonML은 JBST를 통해 클라이언트측 템플리트를 사용하는데, 이는 빌드 시 HTML이 자바스크립트 템플릿으로 변환된다는 것을 의미한다.런타임에 데이터가 공급되고 그 결과 DOM 요소가 된다.결과 DOM 요소는 삽입하거나 기존 요소를 교체할 수 있으며, 내부는HTML은 과도한 DOM 요소를 만들지 않고는 쉽게 할 수 없다.리바인딩은 완전히 확장된 마크업보다 작은 추가 데이터만 요청하면 된다.그 결과 데이터와는 별도로 마크업을 요청하거나 캐시에 저장하기 때문에 큰 성능의 이득을 얻는 경우가 많다.
HTML 메시지 패턴/브라우저 측면 템플리트
심플함을 위해 내적인HTML은 Ajax의 HTML-Message 패턴[5] 스타일에 선호되어 왔다.그러나 JsonFx와[6] 같은 도구는 완전한 브라우저 측면 템플리트 Ajax 패턴을 제공하는 동시에 JsonML과 JBST 구현을 단순화하는 것을 목표로 한다.[7]
참조
- ^ McKamey, Stephen M. (3 February 2007). "JsonML - Binding Behaviors to DOM Elements". Official website. JsonML.org. Archived from the original on 14 August 2010. Retrieved 7 January 2011.
- ^ McKamey, Stephen M. (3 August 2008). "JsonML + Browser-Side Templating (JBST)". Official website. JsonML.org. Retrieved 7 January 2011.
- ^ http://tech.groups.yahoo.com/group/json/message/1115[데드링크]
- ^ http://jsonml.org/syntax/
- ^ "HTML Message". About AjaxPatterns.org. AjaxPatterns.org. Archived from the original on 1 July 2012. Retrieved 7 January 2011.
- ^ "Welcome to JsonFx.NET". JsonFx.NET Official Website. Stephen M. McKamey. Retrieved 7 January 2011.
- ^ "Browser-Side Templating". AjaxPatterns.org. Archived from the original on 7 July 2012. Retrieved 7 January 2011.
외부 링크
- JsonML.org
- IBM developerWorks 기사
- Java JSONML 구현 - Douglas Crockford 작성
- JsonFx.NET - C#/.NET JBST 프레임워크
- XML, JSON 및 JsonML용 C++ JDX XPath 2.0
