- •Интернет-программирование
- •ИП. XML. Введение
- •ИП. «Генеалогия» XML
- •ИП. SGML
- •ИП. SGML-декларация
- •ИП. SGML-декларация для HTML4
- •ИП. SGML-декларация для XML
- •ИП. SGML. Введение в DTD
- •ИП. SGML. DTD. Описание элементов
- •ИП. SGML. DTD. Описание атрибутов
- •ИП. SGML. DTD. Примеры объявления атрибутов
- •ИП. «Генеалогия» XML. SGML. Введение в DTD
- •ИП. XML. Разметка
- •ИП. XML. Пример xml-документа
- •ИП. XML. Элементы или атрибуты
- •ИП. XML. Правильность и валидность
- •ИП. XML. Правильность
- •ИП. SGML. DTD. Типы данных
- •ИП. XML. Корректность
- •ИП. XML. Пространство имен
- •ИП. XML. XML-схема
- •ИП. XML. XML-схема
- •ИП. XML. XML-схема. Простые элементы
- •ИП. XML. XML-схема. Атрибуты
- •ИП. XML. XML-схема. Составные элементы
- •ИП. XML. XML-схема. Составные элементы
- •ИП. XML. XML-схема. Составные элементы
- •ИП. XML. XML-схема. Индикаторы
- •ИП. XML. XML-схема. Ссылка ref
- •ИП. XML. XML-схема. Ссылка ref
- •ИП. XML. XML-схема. Пример XML-документа и его схемы
- •ИП. Работа с XML
- •ИП. Работа с XML. PHP. Валидация
- •ИП. Работа с XML. PHP.
- •ИП. Работа с XML. JavaScript
- •ИП. Работа с XML. Java
ИП. SGML. DTD. Типы данных |
МИЭТ, 2017 |
С точки зрения DTD, XML документ состоит из типов данных:
Элементы (<body>some text</body>)
Атрибуты (<img src="computer.gif" />)
Сущности (< > и т.д.)
PCDATA (анализируемый текст)
CDATA (НЕ анализируемый текст)
ИП. SGML. DTD. Описание элементов |
МИЭТ, 2017 |
Формат описания: <!ELEMENT имя_элемента (модель_содержания) [EMPTY]>
Элементный — не может включать текст внутри тега;
<!ELEMENT project (title, authors?, img?, vuz, annotation?)>
Квантификаторы элементного типа
, - разделяет типы элементов допустимые внутри данного элемента | - разделяет альтернативные элементы + - одно или несколько вхождений ? - ноль или одно вхождение * - ноль или несколько вхождений
() - группировка, например для реализации вариантов для | - «или». Пример: (title | authors)
Текстовый — может включать только текст;
<!ELEMENT author (#PCDATA)>
Смешанный — может включать вложенные теги и текст;
<!ELEMENT projects (project | #PCDATA)>
Произвольный — может включать любое содержимое (не рекомендован).
<!ELEMENT projects ANY>
Ограничения смешанного типа:
нельзя определить порядок следования элементов
нельзя определить количество повторов элементов
одно и то же имя не может быть представлено в объявлении смешанного типа более одного раза.
ИП. SGML. DTD. Описание атрибутов |
МИЭТ, 2017 |
|
Формат: <!ATTLIST имя_элемента имя_атрибута тип_атрибута применение_атрибута> |
||
Пример: <!ATTLIST project title CDATA #REQUIRED> |
|
|
Тип атрибута |
Содержание атрибута в XML документе |
|
CDATA |
Любая символьная строка, не включающая символы разметки |
|
( value1 | value2 | … ) |
Одно из предопределенных значений |
|
ID |
Значение атрибута должно быть уникальным для всего документа |
|
IDREF |
Значение атрибута элемента равно значению «ID-атрибута» |
|
IDREFS |
Значение атрибута может содержать несколько ID |
|
NMTOKEN |
Текст атрибута не содержит пробелов и символы разметки |
|
NMTOKEN |
Несколько NMTOKEN строк, разделяемых пробелами |
|
ENTITY |
Сущность |
|
ENTITIES |
Несколько сущностей |
|
Применение атрибута |
Действие |
|
value |
Это значение устанавливается по умолчанию |
|
#REQUIRED |
Атрибут - обязателен |
|
#IMPLIED |
Атрибут — не обязателен |
|
#FIXED value |
Установленное значение атрибута — не изменяемо |
|
ИП. SGML. DTD. Примеры объявления атрибутов |
МИЭТ, 2017 |
Валидный XML / Не валидный XML
DTD:
<!ELEMENT square EMPTY> <!ATTLIST square width CDATA "0"> <square width="100" />
<square />
DTD:
<!ATTLIST person number CDATA #REQUIRED> <person number="5677" />
<person />
DTD:
<!ATTLIST contact fax CDATA #IMPLIED> <contact fax="555-667788" /> <contact />
DTD:
<!ATTLIST sender company CDATA #FIXED "Sun Microsystems"> <sender company="Sun Microsystems" />
<sender company="Microsoft" />
ИП. «Генеалогия» XML. SGML. Введение в DTD |
МИЭТ, 2017 |
Пример SGML-документа и его DTD-описания
<!DOCTYPE portfolio SYSTEM 'portfolio.dtd'> <projects>
<project id="000002" year="2017">
<title>Мобильное приложение “Student Assistant”</title> <authors>
<author country="RU">Илья Соловьёв</author> </authors>
<img width="185" height="46" href="https://miet.ru/bitrix/templates/.default/img/miee_logo2.png"/> <vuz>МИЭТ</vuz>
<annotation>Расписание + дополнительные опции</annotation>
<!-- объявляем элементы --> <!ELEMENT projects (project*)>
<!ELEMENT project (title, authors?, img?, vuz, annotation?)> <!ELEMENT authors (author+)>
<!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT img EMPTY> <!ELEMENT vuz (#PCDATA)> <!ELEMENT annotation (#PCDATA)>
<!-- объявляем параметрическую сущность (gjlcnfyjdre), которую используем в этом DTD --> <!ENTITY %number "NMTOKEN #REQUIRED">
<!-- объявляем атрибуты --> <!ATTLIST project
id %number #REQUIRED; year %number #REQUIRED>
<!ATTLIST img width %number; height %number;
href CDATA #REQUIRED>
ИП. XML. Разметка
Пролог
Объявление схем
DTD или XML Shema
Тело документа
элементы
комментарии
инструкции обработки
секции CDATA
МИЭТ, 2017
Формат:
<?xml version=”x.x” [encoding=”кодировка”] [standalone=(“yes” | “no”)] ?> Пример:
<?xml version="1.0" encoding="UTF-8"?>
Формат:
<!DOCTYPE имя модификатор URI > Пример:
<!DOCTYPE portfolio SYSTEM 'portfolio.dtd'> - каcтомный dtd <!DOCTYPE portfolio PUBLIC 'world/portfolio.dtd'> - общеизвестный dtd
Элементы:
<тег аттрибут1='значение' … > … </тег>
Комментарии:
<!-- текст комментария -->
Инструкции обработки: <?имя данные?>
имя — идентификатор обрабатывающего приложения данне — данные, которые передаются приложению
Секция CDATA <![CDATA[текст]]>
Определяет не обрабатываемый анализатором XML текст. Например, двоичный код картинки
ИП. XML. Пример xml-документа |
МИЭТ, 2017 |
<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE projects SYSTEM 'portfolio.dtd'> -->
<projects xmlns:miet="http://www.w3.org/2001/XMLSchema-instance" miet:schemaLocation="portfolio.xsd">
<project id="000001" year="2017">
<title>Мобильное приложение “Student Assistant”</title> <authors>
<author country="RU">Янис Василиадис</author> </authors>
<img width="185" height="46" href="https://miet.ru/bitrix/templates/.default/img/miee_logo2.png"/>
<vuz>МИЭТ</vuz>
<annotation>
Портал(доска) объявлений которая позволяет осуществлять информирование студентов и конечно главным плюсом является то, что информация надежно хранится и доступна откуда угодно(в отличии от “обычных” досок объявлений). К примеру, вакансии различных компаний,
</annotation>
</project>
</projects>
ИП. XML. Элементы или атрибуты |
МИЭТ, 2017 |
Ограничения атрибутов:
атрибуты не могут содержать больше одного значения (дочерние элементы могут)
атрибуты тяжело расширяются (в случае каких-либо изменений)
структуры нельзя описать атрибутами (а дочерними элементами — можно)
программам тяжело работать с атрибутами
атрибуты не легко проконтролировать на соответствие единому определению типа документа, устанавливающему валидность того или иного XML документа.
ИП. XML. Правильность и валидность |
МИЭТ, 2017 |
Правильный (well-formed) документ — документ, не содержащий ошибок разметки
Валидный (valid) документ — правильный документ, соответствующий опредлению типа документа (ОТД)
Виды ОДТ:
DTD
XML-sheme
ИП. XML. Правильность |
МИЭТ, 2017 |
Элементы и атрибуты
Должен содержать хотя-бы один элемент
Если элементов несколько должен быть один корневой, включающий остальные
Запрещено перекрытие элементов (т.е. нарушение иерархии)
Начальный тег должен иметь одноименный конечный тег
Имена элементов и атрибутов:
Включают только: включать буквы, цифры, дефисы, символы подчеркивания и точки
Записаны в одном регистре
Начинаются с буквы или символа подчеркивания
Двоеточие может использоваться в имени только один раз для отделения пространства имен
Значения атрибутов заключаются в одинарные или двойные кавычки
Комментарии
Не может быть внутри тега Не может содержать «--» внутри текста
