Skip to content
Andrey-Pavlov-A edited this page Dec 9, 2021 · 27 revisions

Основные синтаксические конструкции языков XML, XSD, JSON. Назначение и варианты использования.

Выполнил: Павлов Андрей ИДБ-18-07

XML

XML — это сокращение от eXtensible Markup Language, а переводится это как «Расширяемый язык разметки». Смысл XML в том, чтобы выстроить внутри документа логическую структуру — чтобы было видно, что к чему относится и как всё связано между собой, в каком формате представлены данные. Он нужен для представления данных в браузере

Простейший XML- документ может выглядеть так:

<?xml version="1.0"?> <list_of_items> <item id="1"><first/>Первый</item> <item id="2">Второй <sub_item>подпункт 1</sub_item></item> <item id="3">Третий</item> <item id="4"><last/>Последний</item> </list_of_items>

Тело документа XML состоит из элементов разметки (markup) и непосредственно содержимого документа - данных (content). XML - тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка. Более подробно о типах применяемой в документах разметки мы поговорим чуть позже. Любой XML-документ должен всегда начинаться с инструкции , внутри которой также можно задавать номер версии языка, номер кодовой страницы и другие параметры, необходимые программе-анализатору в процессе разбора документа. Правила создания XML- документа В общем случае XML- документы должны удовлетворять следующим требованиям:

  • В заголовке документа помещается объявление XML, в котором указывается язык разметки документа, номер его версии и дополнительная информация
  • Каждый открывающий тэг, определяющий некоторую область данных в документе обязательно должен иметь своего закрывающего "напарника", т.е., в отличие от HTML, нельзя опускать закрывающие тэги
  • В XML учитывается регистр символов
  • Все значения атрибутов, используемых в определении тэгов, должны быть заключены в кавычки
  • Вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов
  • Вся информация, располагающаяся между начальным и конечными тэгами, рассматривается в XML как данные и поэтому учитываются все символы форматирования ( т.е. пробелы, переводы строк, табуляции не игнорируются, как в HTML)

XSD

XSD — это язык описания структуры XML документа. Его также называют XML Schema. При использовании XML Schema XML парсер может проверить не только правильность синтаксиса XML документа, но также его структуру, модель содержания и типы данных. Такой подход позволяет объектно-ориентированным языкам программирования легко создавать объекты в памяти, что, несомненно, удобнее, чем разбирать XML как обычный текстовый файл. Язык XML Schema Definition Language, который также называют XML Schema Language, во многом похож на язык XDR, с которым вы познакомились раньше. Схемы XSD способны решать следующие задачи:

  • Перечисление элементов в документе XML и проверка наличия в документе только объявленных элементов.
  • Объявление и определение атрибутов, модифицирующих элементы документа.
  • Определение родительско-дочерних отношений между элементами.
  • Определение состояний и моделей содержания для элементов и атрибутов.
  • Задание типов данных.
  • Установка значений по умолчанию.
  • Возможность расширения.
  • Поддержка использования пространств имен.

Корневым элементом в схеме XML является элемент Schema, который содержит все остальные элементы в документе схемы. В рамках корневого элемента схемы XSD атрибутом xmlns определяется пространство имен XMLSchema, которое содержит элементы и атрибуты XSD схемы.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> Все элементы XSD начинаются с префикса xsd:, который указывается для пространства имен XSD, объявленного в корневом элементе экземпляра схемы.

XML-документ, который проверяется с помощью схемы, также должен содержать объявление пространства имен. Пространство имен всегда указывается в корневом элементе экземпляра документа с помощью атрибута xmlns: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Это пространство имен содержит элементы и атрибуты XMLSchema, которые можно включать в документ XML. По общему соглашению префикс xsi используется для этого пространства имен и добавляется в начале имен всех элементов и атрибутов, принадлежащих пространству имен, отделяясь от них двоеточием. Ссылка на конкретную схему приводится в атрибуте: xsi:schemaLocation="http://kit.znu.edu.ua/scemes/имя_файла.xsd"

Процесс создания схемы включает в себя два шага — определение и объявление типов элементов или типов атрибутов. Элементы и атрибуты XML-документа объявляются элементами схемы xsd:element и xsd:attribute. Структура же XML-документа определяется элементами схемы xsd:simpleType и xsd:complexType.

Основное объявление элемента состоит из имени и типа данных: <xsd:element name="имя_элемента" type="xsd:тип_данных"/>

В схемах XSD дескрипторы, используемые в документах XML, разделяются на две категории — сложные типы и простые типы. Элементы сложных типов могут содержать другие элементы, а также обладают определенными атрибутами; элементы простых типов такими возможностями не обладают. Атрибут - объявление простого типа, которое не может содержать другие элементы. Объявление атрибута похоже на объявление элемента: <xsd:attribute name="имя_атрибута" type="xsd:тип_данных"/>

JSON

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

  • Данные записываются в виде пар "имя/значение"
  • Данные разделяются запятыми
  • В фигурных скобках записываются объекты
  • В квадратных скобках записываются массивы JSON представляет собой строку, формат которой очень похож на буквенный формат объекта JavaScript. Можно включать одни и те же базовые типы данных внутри JSON, так же как и в стандартном объекте JavaScript - строки, числа, массивы, булевы и другие объектные литералы. Это позволяет построить иерархию данных, к примеру, так: { "squadName": "Super hero squad", "homeTown": "Metro City", "formed": 2016, "secretBase": "Super tower", "active": true, "members": [ { "name": "Molecule Man", "age": 29, "secretIdentity": "Dan Jukes", "powers": [ "Radiation resistance", "Turning tiny", "Radiation blast" ] }, { "name": "Madame Uppercut", "age": 39, "secretIdentity": "Jane Wilson", "powers": [ "Million tonne punch", "Damage resistance", "Superhuman reflexes" ] }, { "name": "Eternal Flame", "age": 1000000, "secretIdentity": "Unknown", "powers": [ "Immortality", "Heat Immunity", "Inferno", "Teleportation", "Interdimensional travel" ] } ] }

JSON и объекты JavaScript

Формат JSON почти идентичен объектам JavaScript. В JSON ключи должны быть строками, записанные в двойных кавычках:

{ "name":"John" }

В JavaScript ключи могут быть строками, числами или именами идентификаторов:

{ name:"John" }

Значения в JSON В JSON значения должны быть одним из следующих типов данных:

  • строка
  • число
  • объект (объект JSON)
  • массив
  • boolean
  • null В JavaScript значения могут быть любого типа из приведенных выше плюс любым допустимым выражением JavaScript, включая:
  • функция
  • дата
  • undefined В JSON строковые значения должны записываться в двойных кавычках:

{ "name":"John" }

В JavaScript строковые значения можно записывать как в двойных, так и в одинарных кавычках:

{ name:'John' }

JSON использует синтаксис JavaScript Так как синтаксис JSON происходит от синтаксиса записи объектов JavaScript, то для работы с данными JSON внутри JavaScript требуется очень мало дополнительных инструментов. В JavaScript, например, можно создать объект и присвоить ему значения следующим образом:

var person = { "name":"John", "age":31, "city":"New York" };

Получить доступ к данным объекта JavaScript можно так:

// возвращает John

person.name;

Или так:

// возвращает John

person["name"];

Изменить данные объекта можно так:

person.name = "Gilbert";

Или так:

person["name"] = "Gilbert";

Источники

https://thecode.media/chto-takoe-xml/ http://kunegin.narod.ru/ref2/xml/go21.htm https://habr.com/ru/post/90696/ https://bdpx.github.io/xml/lab3/xsd.html https://developer.mozilla.org/ru/docs/Learn/JavaScript/Objects/JSON https://msiter.ru/tutorials/javascript/js_json_syntax

Clone this wiki locally