Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

JsonML , язык разметки JSON - это облегченный язык разметки, используемый для сопоставления XML (расширяемый язык разметки) и JSON (нотация объектов JavaScript). Он преобразует XML-документ или фрагмент в структуру данных JSON для простоты использования в средах JavaScript, таких как веб-браузер , что позволяет манипулировать данными XML без дополнительных затрат на анализатор XML .

JsonML имеет наибольшее применение в веб-приложениях Ajax (асинхронный JavaScript и XML). Он используется для передачи XHTML (расширяемого языка разметки гипертекста) клиенту, где он может быть детерминированно преобразован в элементы DOM (объектной модели документа). Во время строительства можно использовать стратегию прогрессивного улучшения, чтобы привязать динамическое поведение к статическим элементам. [1]

JsonML также можно использовать в качестве базовой структуры для создания сложных клиентских шаблонов, называемых JBST (JsonML + шаблоны на стороне браузера). [2] Синтаксически JBST выглядит как пользовательские элементы управления JSP (JavaServer Pages) или ASP.NET (Active Server Pages .NET). Интерактивные примеры доступны на сайте jsonml.org.

Синтаксис [ править ]

Преобразование из XML в JsonML частично обратимо. Пространства имен XML обрабатываются путем добавления к имени элемента префикса пространства имен, например, <myns:myElement/>становится ["myns:myElement"].

Пример преобразования [ править ]

JsonML позволяет любому XML-документу быть уникальным в виде строки JSON. В синтаксисе используются:

  • Массивы JSON для представления элементов XML;
  • Объекты JSON для представления атрибутов;
  • Строки JSON для представления текстовых узлов.

«Обычное» преобразование JSON дает более компактное представление, но теряет часть структурной информации документа, поскольку не определяет, является ли пара ключ-значение атрибутом или узлом:

{ "person" :  {  "address" :  {  "city" :  "Anytown" ,  "postalCode" :  "98765-4321" ,  "state" :  "CA" ,  "street" :  "12345 Sixth Ave" ,  "type" :  "home"  },  "created" :  "2006-11-11T19: 23" ,  "firstName" :  "Robert" ,  "lastName" :  "Smith" ,  "modified":  "2006-12-31T23: 59" }}

Неправильное название "Форма объекта" [ править ]

В потоке группы пользователей JSON Дуглас Крокфорд неправильно использовал термин «JsonML» для описания двух вариантов: «форма массива» и «форма объекта». [3] Это было неправильное употребление термина JsonML, который всегда обозначал то, что Крокфорд называл «формой массива». [4]

Сравнение с аналогичными технологиями [ править ]

XML / XSLT [ править ]

XML и XSLT (преобразования расширяемого языка таблиц стилей) также могут создавать шаблоны на стороне клиента, и оба позволяют кэшировать шаблон отдельно от данных. Однако многие программисты считают, что синтаксисом JBST легче управлять из-за его знакомства. JBST изначально использует JavaScript в шаблоне, а не требует смешивания различных типов управляющих языков.

InnerHTML [ править ]

Хотя JsonML и innerHTML , казалось бы, используются для выполнения схожих задач, они совершенно разные. InnerHTML требует, чтобы вся разметка была в точной форме, что означает, что либо сервер отображает разметку, либо программист выполняет дорогостоящие конкатенации строк в JavaScript.

JsonML использует шаблоны на стороне клиента через JBST, что означает, что HTML преобразуется в шаблон JavaScript во время сборки . Во время выполнения предоставляются данные, и результатом являются элементы DOM. Результирующие элементы DOM могут быть вставлены или заменены существующим элементом, что innerHTML не может легко сделать без создания лишних элементов DOM. Для повторной привязки требуется только запрос дополнительных данных, которые меньше, чем полностью развернутая разметка. В результате часто достигается большой прирост производительности, поскольку разметка запрашивается или кэшируется отдельно от данных.

Шаблон сообщения HTML / шаблон на стороне браузера [ править ]

Для простоты innerHTML был предпочтительным методом для стиля HTML-сообщения [5] Ajax. Однако такие инструменты, как JsonFx [6], нацелены на упрощение реализации JsonML и JBST, при этом обеспечивая полный шаблон Ajax для создания шаблонов на стороне браузера. [7]

Ссылки [ править ]

  1. ^ McKamey, Стивен М. (3 февраля 2007). «JsonML - поведение привязки к элементам DOM» . Официальный сайт . JsonML.org. Архивировано из оригинального 14 августа 2010 года . Проверено 7 января 2011 года .
  2. ^ McKamey, Стивен М. (3 августа 2008). «JsonML + шаблоны на стороне браузера (JBST)» . Официальный сайт . JsonML.org . Проверено 7 января 2011 года .
  3. ^ http://tech.groups.yahoo.com/group/json/message/1115
  4. ^ http://jsonml.org/syntax/
  5. ^ "Сообщение HTML" . О AjaxPatterns.org . AjaxPatterns.org. Архивировано из оригинала на 1 июля 2012 года . Проверено 7 января 2011 года .
  6. ^ «Добро пожаловать в JsonFx.NET» . Официальный сайт JsonFx.NET . Стивен М. МакКейми . Проверено 7 января 2011 года .
  7. ^ "Шаблоны на стороне браузера" . AjaxPatterns.org. Архивировано из оригинала 7 июля 2012 года . Проверено 7 января 2011 года .

Внешние ссылки [ править ]

  • JsonML.org
  • Статья IBM developerWorks
  • Реализация Java JSONML - автор Дуглас Крокфорд
  • JsonFx.NET - C # /. NET JBST Framework
  • C ++ JDX XPath 2.0 для XML, JSON и JsonML