Jump to content

JsonML

Язык разметки JSON
Тип интернет-СМИ
application/jsonml+json (неофициальный)
Тип формата Язык разметки и система веб-шаблонов
Расширено с XML , JSON и JavaScript

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 Строки для представления текстовых узлов.
JsonML в кодировке Исходный XML
["person",
  {"created":"2006-11-11T19:23",
   "modified":"2006-12-31T23:59"},
  ["firstName", "Robert"],
  ["lastName", "Smith"],
  ["address", {"type":"home"},
    ["street", "12345 Sixth Ave"],
    ["city", "Anytown"],
    ["state", "CA"],
    ["postalCode", "98765-4321"]
  ]
]
<!-- XML representation of a person record -->
<person created="2006-11-11T19:23" modified="2006-12-31T23:59">
    <firstName>Robert</firstName>
    <lastName>Smith</lastName>
    <address type="home">
        <street>12345 Sixth Ave</street>
        <city>Anytown</city>
        <state>CA</state>
        <postalCode>98765-4321</postalCode>
    </address>
</person>

«Обычное» преобразование 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]

Валидация

[ редактировать ]

JsonML можно проверить с помощью следующей схемы JSON:

{
  "type": "array",
  "minItems": 1,
  "maxItems": 3,
  "items": [
    {"type": "string"},
    {"oneOf": [
      {"type": "object"},
      {"type": "string"},
      {"type": "array", "items":{"$ref": "#"}}
    ]},
    {"oneOf": [
      {"type": "string"},
      {"type": "array", "items":{"$ref": "#"}}
    ]}
  ]
}

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

[ редактировать ]

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

ВнутреннийHTML

[ редактировать ]

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

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

Шаблон HTML-сообщения/шаблоны на стороне браузера

[ редактировать ]

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

  1. ^ МакКейми, Стивен М. (3 февраля 2007 г.). «JsonML — привязка поведения к элементам DOM» . Официальный сайт . JsonML.org. Архивировано из оригинала 14 августа 2010 года . Проверено 7 января 2011 г.
  2. ^ МакКейми, Стивен М. (3 августа 2008 г.). «JsonML + Шаблоны на стороне браузера (JBST)» . Официальный сайт . JsonML.org . Проверено 7 января 2011 г.
  3. ^ «Json: Сообщение: Org.json.JSONML.java» . Архивировано из оригинала 27 апреля 2012 г. Проверено 12 февраля 2009 г.
  4. ^ «JsonML (язык разметки JSON)» .
  5. ^ «HTML-сообщение» . О AjaxPatterns.org . AjaxPatterns.org. Архивировано из оригинала 1 июля 2012 года . Проверено 7 января 2011 г.
  6. ^ «Добро пожаловать в JsonFx.NET» . Официальный сайт JsonFx.NET . Стивен М. МакКейми . Проверено 7 января 2011 г.
  7. ^ «Шаблоны на стороне браузера» . AjaxPatterns.org. Архивировано из оригинала 7 июля 2012 года . Проверено 7 января 2011 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ce2d9686bfdc380b2c1e8c47fa927516__1719948600
URL1:https://arc.ask3.ru/arc/aa/ce/16/ce2d9686bfdc380b2c1e8c47fa927516.html
Заголовок, (Title) документа по адресу, URL1:
JsonML - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)