-
Notifications
You must be signed in to change notification settings - Fork 2
exam15
1. Понятие единого указателя ресурса. Форма записи и основные протоколы. Понятия абсолютного и относительного пути.
2. Современные языки определения и обмена данными в интернете (XML, XSD, JSON).
Выполнили: Полс Андрей ИДМ-22-06, Берковец Александр ИДМ-22-03, Белов Владислав ИДМ-22-02, Чурбанов Ростислав ИДМ-22-08
Понятие единого указателя ресурса. Форма записи и основные протоколы. Понятия абсолютного и относительного пути.
Единый указатель ресурсов (англ. URL — Uniform Resource Locator) — единообразный локатор (определитель местонахождения) ресурса. Ранее назывался Universal Resource Locator — универсальный локатор ресурса. URL — это стандартизированный способ записи адреса ресурса в сети Интернет.
Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII - символов (к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая традиционная форма записи URL:
<схема>://<логин>:<пароль>@<хост>:<порт>/<URL-путь>
-
Схема – это тот протокол передачи данных, по которому, происходит обращение к ресурсу (http/https).
-
Логин и пароль — имя пользователя и пароль, используемые для доступа к ресурсу. Связка логин и пароль не всегда используется. Например, для доступа к какой-либо веб-странице, по протоколу http – как правило, эти данные не указывают.
-
@ — разделитель между хостом и парой логин-пароль. В случае, если логин-пароль не указывается, то разделитель не указывается.
-
Хост – доменное имя или IP-адрес (ссылки) того ресурса, к которому нужно обратиться.
-
Порт – уникальный номер, который выделяется тому приложению, которое будет обрабатывать запрос пользователей.
-
URL — путь – указывается уточняющая информация о местонахождении ресурса. Зависит от используемого протокола. В случае с протоколом HTTP задается путь с указанием каталогов и подкаталогов, где лежит ресурс.
-
Параметры – следуют сразу после имени файла и пишутся после знака вопроса (?). Для разделения этих параметров используется знак амперсанда (&).
-
Якорь – это специальная строка, в которой могут иметься как буквенные символы, так и цифры. С помощью якоря ссылаются на определенное место на сайте, который открывается. Благодаря этому пользователь попадается не на главную страницу портала, а сразу в нужное место. Якорь располагается в единообразном локаторе сразу после знака решетки (#).
Общепринятые схемы (протоколы) URL включают:
-
ftp — Протокол передачи файлов FTP
-
http — Протокол передачи гипертекста HTTP
-
https — Специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS)
-
mailto — Адрес электронной почты
Абсолютный URL-адрес содержит все сведения, необходимые для поиска ресурса.
Относительный URL-адрес находит ресурс, используя абсолютный URL-адрес в качестве отправной точки. По сути, "полный URL-адрес" целевого объекта указывается путем объединения абсолютных и относительных URL-адресов. Относительный URL-адрес обычно состоит только из пути и, при необходимости, ресурса, но без схемы или сервера.
XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.
Простейший XML-документ выглядит следующим образом:
<?xml version="1.0" encoding="windows-1251"?>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price></price>
</book>
Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа <book>
(открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title
, author
, year
, price
). Последняя строка определяет конец корневого элемента </book>
(закрывающий тег).
XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.
Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.
Все элементы могут иметь подэлементы (дочерние элементы) [2]:
<корневой>
<потомок>
<подпотомок>.....</подпотомок>
</потомок>
</корневой>
XML Schema — язык описания структуры XML - документа. Спецификация XML Schema является рекомендацией W3C.
XML Schema, как и большинство языков описания данных XML, был задуман для определения правил, которым должен подчиняться документ. Но в отличие от других языков описания данных он был разработан так, чтобы его можно было использовать в создании программного обеспечения для обработки XML-документов.
После проверки документа на соответствие XML Schema читающая программа может создать модель документа (конкретный тип документа как в DTD), которая включает:
- словарь (названия элементов и атрибутов);
- модель отношений между элементами и атрибутами и их структуру;
- типы данных элементов и атрибутов. Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти как каркас (по схеме) будущего объекта, так и сам объект (при наполнении каркаса данными), соответствующие заданной структуре (схеме) XML-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.
Другим удобством XML Schema является то, что один словарь может ссылаться на другой, и, таким образом, разработчик может использовать уже существующие словари и легче устанавливать и распространять стандарты XML-структуры для определённых задач (например, словарь протокола SOAP).
Файл, содержащий XML Schema, обычно имеет расширение «.xsd» (XML Schema definition) [3].
Простой пример схемы на XML Schema, расположенной в файле "country.xsd" и описывающей данные о населении страны:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="country">
<xs:complexType>
<xs:sequence>
<xs:element name="country_name" type="xs:string"/>
<xs:element name="population" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Пример документа, соответствующего этой схеме:
<?xml version="1.0" encoding="utf-8"?>
<country>
<country_name>France</country_name>
<population>59.7</population>
</country>
Схемы XSD способны решать следующие задачи:
- Перечисление элементов в документе XML и проверка наличия в документе только объявленных элементов.
- Объявление и определение атрибутов, модифицирующих элементы документа.
- Определение родительско-дочерних отношений между элементами.
- Определение состояний и моделей содержания для элементов и атрибутов.
- Задание типов данных.
- Установка значений по умолчанию.
- Возможность расширения.
- Поддержка использования пространств имен.
JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан Дугласом Крокфордом.
Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается независимым от языка и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON [1].
За счёт своей лаконичности по сравнению с XML формат JSON может быть более подходящим для сериализации сложных структур. Применяется в веб-приложениях как для обмена данными между браузером и сервером (AJAX), так и между серверами (программные HTTP-сопряжения).
Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией JSON.parse()
.
JSON-текст представляет собой (в закодированном виде) одну из двух структур:
- Набор пар ключ: значение. В различных языках это реализовано как запись, структура, словарь, хеш-таблица, список с ключом или ассоциативный массив. Ключом может быть только строка (регистрозависимость не регулируется стандартом, это остаётся на усмотрение программного обеспечения. Как правило, регистр учитывается программами — имена с буквами в разных регистрах считаются разными, например[5]), значением — любая форма. Повторяющиеся имена ключей допустимы, но не рекомендуются стандартом; обработка таких ситуаций происходит на усмотрение программного обеспечения, возможные варианты — учитывать только первый такой ключ, учитывать только последний такой ключ, генерировать ошибку.
- Упорядоченный набор значений. Во многих языках это реализовано как массив, вектор, список или последовательность.
Структуры данных, используемые JSON, поддерживаются любым современным языком программирования, что и позволяет применять JSON для обмена данными между различными языками программирования и программными системами.
В качестве значений в JSON могут быть использованы:
- запись — это неупорядоченное множество пар ключ:значение, заключённое в фигурные скобки «{ }». Ключ описывается строкой, между ним и значением стоит символ «:». Пары ключ-значение отделяются друг от друга запятыми.
- массив (одномерный) — это упорядоченное множество значений. Массив заключается в квадратные скобки «[ ]». Значения разделяются запятыми. Массив может быть пустым, то есть не содержать ни одного значения. Значения в пределах одного массива могут иметь разный тип.
- число (целое или вещественное).
- литералы true (логическое значение «истина»), false (логическое значение «ложь») и null.
- строка — это упорядоченное множество из нуля или более символов юникода, заключённое в двойные кавычки. Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты «\» (поддерживаются варианты ", \, /, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке Unicode в виде \uFFFF.
Следующий пример показывает JSON-представление данных об объекте, описывающем человека. В данных присутствуют строковые поля имени и фамилии, информация об адресе и массив, содержащий список телефонов. Как видно из примера, значение может представлять собой вложенную структуру [4].
{
"firstName": "Иван",
"lastName": "Иванов",
"address": {
"streetAddress": "Московское ш., 101, кв.101",
"city": "Ленинград",
"postalCode": 101101
},
"phoneNumbers": [
"812 123-1234",
"916 123-4567"
]
}
На языке XML подобная структура выглядела бы примерно так:
<person>
<firstName>Иван</firstName>
<lastName>Иванов</lastName>
<address>
<streetAddress>Московское ш., 101, кв.101</streetAddress>
<city>Ленинград</city>
<postalCode>101101</postalCode>
</address>
<phoneNumbers>
<phoneNumber>812 123-1234</phoneNumber>
<phoneNumber>916 123-4567</phoneNumber>
</phoneNumbers>
</person>
Применение
XML (расширяемый язык разметки) существует уже более 3 десятилетий и является неотъемлемой частью каждого веб-приложения. Будь то файл конфигурации, картографический документ или определение схемы, XML упростил обмен данными, придав им четкую структуру и помогая в динамической настройке и загрузке переменных.
JSON хранит все свои данные в формате карты (пары ключ / значение), который является аккуратным и более простым для понимания. Пользователи делают упор на простоту моделирования данных или сопоставления непосредственно с объектами предметной области как на главное преимущество JSON перед XML, что делает его структуру более предсказуемой и легкой для понимания.
Если проекту требуется разметка документа и информация о метаданных, лучше использовать XML. В противном случае, для более организованного обмена данными, JSON может быть более предпочтительным выбором [5].
-
📃 Представление об URL (универсальный указатель ресурсов), его структура
-
📃 I. Коротко об XML — Документация Краткое руководство по XML 01.12.2015 v2
ИСТОЧНИКИ
-
📑 Учебный материал (лекция, практикум...) или стандарт
-
📃 Научно-популярная или техническая статья (Википедия...)
-
🎦 Видео-ролик
-
💻 Веб-приложение
-
💬 Чье-то мнение (хабр...)