-
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
— Адрес электронной почты [2]
Абсолютный URL-адрес содержит все сведения, необходимые для поиска ресурса.
Относительный путь описывает путь к указанному документу относительно текущего. Путь определяется с учётом местоположения веб-страницы, на которой находится ссылка. Относительные ссылки используются при создании ссылок на другие документы на одном и том же сайте. Когда браузер не находит в ссылке протокол http://, он выполняет поиск указанного документа на том же сервере.
Относительный путь содержит следующие компоненты:
- папка (имя папки, указывающей путь к файлу);
- файл (имя файла).
Путь для относительных ссылок имеет три специальных обозначения:
-
/
— указывает на корневую директорию и говорит о том, что нужно начать путь от корневого каталога документов и идти вниз до следующей папки -
./
— указывает на текущую папку -
../
— подняться на одну папку (директорию) выше
Главное отличие относительного пути от абсолютного в том, что относительный путь не содержит имени корневой папки и родительских папок, что делает адрес короче, и в случае переезда с одного домена на другой не нужно прописывать новый абсолютный адрес. Но если сторонний ресурс будет ссылаться например, на ваши изображения с относительными адресами, то они не будут отображаться на другом сайте.
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 документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.
Все элементы могут иметь подэлементы (дочерние элементы) [4]:
<корневой>
<потомок>
<подпотомок>.....</подпотомок>
</потомок>
</корневой>
XML Schema — язык описания структуры XML - документа. Спецификация XML Schema является рекомендацией W3C.
XML Schema, как и большинство языков описания данных XML, был задуман для определения правил, которым должен подчиняться документ. Но в отличие от других языков описания данных он был разработан так, чтобы его можно было использовать в создании программного обеспечения для обработки XML-документов.
После проверки документа на соответствие XML Schema читающая программа может создать модель документа (конкретный тип документа как в DTD), которая включает:
- словарь (названия элементов и атрибутов);
- модель отношений между элементами и атрибутами и их структуру;
- типы данных элементов и атрибутов. Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти как каркас (по схеме) будущего объекта, так и сам объект (при наполнении каркаса данными), соответствующие заданной структуре (схеме) XML-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.
Другим удобством XML Schema является то, что один словарь может ссылаться на другой, и, таким образом, разработчик может использовать уже существующие словари и легче устанавливать и распространять стандарты XML-структуры для определённых задач (например, словарь протокола SOAP).
Главными компонентами Schema являются:
- Объявления элементов, которые определяют их свойства. К ним относятся имя элемента и целевое пространство имен. Важным свойством является тип, который ограничивает атрибуты и дочерние элементы, которые может он иметь.
- Объявления атрибутов, которые определяют свойства атрибутов. Снова свойства включают имя атрибута и целевое пространство имен. Тип атрибута ограничивает значения, которые может принимать атрибут. Объявление атрибута может также включать значение по умолчанию или фиксированное значение.
- Простые и сложные типы.
- Определения групп моделей и групп атрибутов. Это группы элементов и атрибутов, которые можно повторно использовать во многих определениях различных типов.
- Атрибут используется для репрезентации отношений сложного типа и объявления атрибута и указывает, является ли атрибут обязательным или необязательным, когда он используется в этом типе.
- Частица элемента аналогичным образом представляет отношение сложного типа и объявления элемента и указывает минимальное и максимальное количество раз, когда элемент может появляться в содержимом.
Файл, содержащий XML Schema, обычно имеет расширение «.xsd» (XML Schema definition) [5].
Простой пример схемы на 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-текст представляет собой (в закодированном виде) одну из двух структур:
- Набор пар ключ: значение. В различных языках это реализовано как запись, структура, словарь, хеш-таблица, список с ключом или ассоциативный массив. Ключом может быть только строка (регистрозависимость не регулируется стандартом, это остаётся на усмотрение программного обеспечения. Как правило, регистр учитывается программами — имена с буквами в разных регистрах считаются разными, например[7]), значением — любая форма. Повторяющиеся имена ключей допустимы, но не рекомендуются стандартом; обработка таких ситуаций происходит на усмотрение программного обеспечения, возможные варианты — учитывать только первый такой ключ, учитывать только последний такой ключ, генерировать ошибку.
- Упорядоченный набор значений. Во многих языках это реализовано как массив, вектор, список или последовательность.
Структуры данных, используемые JSON, поддерживаются любым современным языком программирования, что и позволяет применять JSON для обмена данными между различными языками программирования и программными системами.
В качестве значений в JSON могут быть использованы:
- запись — это неупорядоченное множество пар ключ:значение, заключённое в фигурные скобки «{ }». Ключ описывается строкой, между ним и значением стоит символ «:». Пары ключ-значение отделяются друг от друга запятыми.
- массив (одномерный) — это упорядоченное множество значений. Массив заключается в квадратные скобки «[ ]». Значения разделяются запятыми. Массив может быть пустым, то есть не содержать ни одного значения. Значения в пределах одного массива могут иметь разный тип.
- число (целое или вещественное).
- литералы true (логическое значение «истина»), false (логическое значение «ложь») и null.
- строка — это упорядоченное множество из нуля или более символов юникода, заключённое в двойные кавычки. Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты «\» (поддерживаются варианты ", \, /, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке Unicode в виде \uFFFF.
Следующий пример показывает JSON-представление данных об объекте, описывающем человека. В данных присутствуют строковые поля имени и фамилии, информация об адресе и массив, содержащий список телефонов. Как видно из примера, значение может представлять собой вложенную структуру [6].
{
"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 может быть более предпочтительным выбором [7].
-
📃 Представление об URL (универсальный указатель ресурсов), его структура
-
📃 I. Коротко об XML — Документация Краткое руководство по XML 01.12.2015 v2
ИСТОЧНИКИ
-
📑 Учебный материал (лекция, практикум...) или стандарт
-
📃 Научно-популярная или техническая статья (Википедия...)
-
🎦 Видео-ролик
-
💻 Веб-приложение
-
💬 Чье-то мнение (хабр...)