JsonML

JsonML
JSON 마크업 언어
인터넷 미디어 유형
application/jsonml+json(iii)
형식 유형마크업 언어 및 웹 템플릿 시스템
연장 위치XML, JSONJavaScript

JsonML, JSON Markup LanguageXML(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 문자열로 고유하게 나타낼 수 있도록 허용한다.구문에서는 다음을 사용한다.

  • XML 요소를 나타내는 JSON 어레이.
  • 속성을 나타내는 JSON 개체.
  • 텍스트 노드를 나타내는 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]

참조

  1. ^ 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.
  2. ^ McKamey, Stephen M. (3 August 2008). "JsonML + Browser-Side Templating (JBST)". Official website. JsonML.org. Retrieved 7 January 2011.
  3. ^ http://tech.groups.yahoo.com/group/json/message/1115[데드링크]
  4. ^ http://jsonml.org/syntax/
  5. ^ "HTML Message". About AjaxPatterns.org. AjaxPatterns.org. Archived from the original on 1 July 2012. Retrieved 7 January 2011.
  6. ^ "Welcome to JsonFx.NET". JsonFx.NET Official Website. Stephen M. McKamey. Retrieved 7 January 2011.
  7. ^ "Browser-Side Templating". AjaxPatterns.org. Archived from the original on 7 July 2012. Retrieved 7 January 2011.

외부 링크