- •1. Классификация форматов электронных изданий. Форматы текстовые и бинарные. Представление сред мультимедиа в электронных изданиях. Требования к форматам.
- •2. Подготовка электронных изданий в формате pdf. Структура документа в формате pdf — трейлер, таблица перекрестных ссылок.
- •3. Иерархическая структура объектов в формате pdf. Виды объектов. Объекты, определяющие вывод и форматирование текста.
- •4. Изменение структуры документа pdf при его последовательном редактировании.
- •5. Подготовка электронных изданий в формате DejaVu. Разделение изображения на слои: передний план, задний план и однобитовую маску. Использование текстового слоя. Создание гиперссылок.
- •6. Подготовка электронных изданий в формате rtf. Структура документа в формате rtf. Группировка символов.
- •7. Представление символов, входящих и не входящих в ascii в формате rtf.
- •8. Управляющие слова и управляющие символы в формате rtf. Задание параметров шрифта и типа выключки.
- •Xml документ состоит из пролога и коревого элемента.
- •10. Создание корректно сформированных xml-документов. Структура xml-документа. Пролог, корневой элемент.
- •11. Объявления xml-документов, инструкции по обработке, комментарии, разделы cdata. Требования к иерархии элементов. Атрибуты. Символьные данные.
- •1. Элементы
- •2. Комментарии
- •3. Инструкции обработки
- •4. Секция cdata
- •5 Требования к xml документу и его компонентам
- •12. Использование примитивов в xml-документах.
- •13. Определение типа документа dtd. Валидные xml-документы. Синтаксис dtd, объявления элементов и списков атрибутов.
- •14. Описание содержимого элементов в xml. Вложенные элементы и символьные данные. Типы атрибутов, значения по умолчанию.
- •Объявления атрибутов. Типы атрибутов, значения по умолчанию.
- •15. Пространства имен xml. Использование пространств имен, префиксы. Уникальные идентификаторы в форме url и urn.
- •16.Стандартные пространства имен. Использование элементов xhtml в xml-документах как пространство имен.
- •17. Описание структуры xml-документа при помощи xml Schema. Описание элементов, атрибутов, вложенных элементов и символьных данных. Число вхождений элементов.
- •1 Способ
- •2 Способ
- •18. Простые и комплексные типы в xml Schema. Типы атрибутов.
- •19. Сравнение dtd и xml Schema.
- •20. Визуальное представление xml-документов и таблицы стилей xsl. Структура xsl-документа, элементы пространств имен xsl и xhtml.
- •21. Шаблоны, образец в xsl. Документы с одним и с несколькими шаблонами.
- •22. Фильтрация и сортировка данных при помощи xsl.
- •23. Описание связей в xml при помощи технологии xLink. Простые связи. Связи поведения.
- •24. Расширенные связи в технологии xLink. Правила обхода между ресурсами.
12. Использование примитивов в xml-документах.
Механизм примитивов в XML является средством повышения производительности, а также способом встраивать различные типы данных в ваш XML-документ. В XML-документе вы можете определить часто используемый блок XML-текста как примитив, что позволяет вам быстро вставлять текст в нужное место. Вы можете также определить как примитив внешний файл, чтобы иметь возможность включать данные файла в вашем документе; эти данные могут содержать XML-текст, другой текст, либо не текстовые данные. Вы определяете примитив в описании типа документа (DTD) с использованием синтаксиса, аналогичного тому, который используется для объявления элемента или атрибута в валидном XML-документе. О DTD и объявлениях типа документа, содержащего их, говорилось в лекции 5.
В спецификации XML термин примитив (entity) в широком смысле относится к любому из следующих типов единиц хранения информации для XML-документов.
Собственно XML-документ как целое.
Внешнее подмножество DTD (см. раздел "Использование внешних подмножеств DTD" в лекции 5).
Внешний файл, определенный как внешний примитив в DTD и допускающий использование посредством ссылки.
Строка в кавычках, определенная как внутренний примитив в DTD и допускающая использование посредством ссылки.
Заметим, что первые три типа единиц хранения информации являются файлами, а последний – строкой символов, заключенных в кавычки.
В данном случае термин примитив используется в узком смысле, а именно, для обозначения внешнего файла или строки в кавычках, определенных как примитив в DTD документа и допускающих использование в документе посредством ссылок на примитивы. Например, следующее DTD определяет внешний файл Topics.xml (этот файл содержит список тем в статье, включенной в документ) как внешний примитив с именем topics, а также строку в кавычках ("A Short History of XML") как внутрений примитив с именем title:
<!DOCTYPE ARTICLE
[
<!ELEMENT ARTICLE (TITLEPAGE, INTRODUCTION, SECTION*)>
<!ELEMENT TITLEPAGE (#PCDATA)>
<!ELEMENT INTRODUCTION (#PCDATA)>
<!ELEMENT SECTION (#PCDATA)>
<!ENTITY topics SYSTEM "Topics.xml">
<!ENTITY title "A short History of XML">
]
>
Впоследствии вы можете вставить полный список тем в любое нужное вам место статьи (например, в аннотацию, введение или заключение), просто включив ссылку на примитив &topics; – как для следующего элемента:
<INTRODUCTION>
This article will cover the following topics:
&topics;
</INTRODUCTION>
Вы можете вставить название статьи в любое место, включив ссылку на примитив &title; – как для следующего элемента:
<TITLEPAGE>
Title: &title;
Author: Michael Young
</TITLEPAGE>
Механизм примитивов наиболее полезен при наличии часто используемых фрагментов XML-текста. Например, если название статьи многократно фигурирует по ее тексту, использование примитива (как в предыдущем примере) позволит сократить время набора, добиться однородности и облегчить внесение изменений в название. Вы можете изменить текст названия, встречающегося в различных листах статьи, просто отредактировав объявление примитива в DTD. Например:
<!ENTITY title "A Long History of XML">
<! -- модифицированное объявление примитива -->
Если вы знакомы с программированием, то легко уловите сходство между механизмом использования примитивов XML и определением констант в языках программирования (например, объявления с помощью инструкции #define в C).
Механизм примитивов также необходим при включении не XML-данных в XML-документ (например, графические данные для изображения).
Существует множество разновидностей примитивов. Материал, излагаемый в этом разделе, может показаться довольно абстрактным (прежде, чем вы познакомитесь с деталями и рассмотрите примеры), возвращение к этой информации впоследствии позволит значительно облегчить восприятие примитивов.
Примитивы классифицируются по трем признакам:
общие и параметрические. Общий примитив включает содержимое документа – т.е. XML-текст или другие текстовые или не текстовые данные, которые вы можете использовать внутри элемента Документ. Оба примера примитивов, рассмотренных в предыдущем разделе ( title и topics ) относятся к общим примитивам. Параметрический примитив содержит XML-текст, который может быть помещен в DTD. В спецификации XML термин примитив относится к общим примитивам;
внутренние и внешние. Внутренний примитив содержится внутри строки в кавычках (примитив title в предыдущем разделе). Внешний примитив содержится в отдельном файле (примитив topics в предыдущем разделе);
разбираемые или неразбираемые. Разбираемый примитив содержит XML-текст (символьные данные, разметка или то и другое). Когда вы вставляете ссылку на разбираемый примитив в документ, ссылка замещается содержимым примитива (замещающий текст), который становится составной частью документа. Синтаксический анализатор XML разбирает (сканирует) содержимое примитива точно так же, как он сканирует непосредственно введенный в документ текст. Оба примера примитивов, рассмотренных в предыдущем разделе ( title и topics ) являются разбираемыми примитивами.
Неразбираемый примитив может содержать любой тип данных: XML-данные или, что чаще, не XML-данные. Не XML-данные могут представлять собой либо текстовые данные (например, название) или не текстовые данные (например, графические данные для изображения). Поскольку неразбираемый примитив обычно не содержит XML, его содержимое нельзя непосредственно вставить в документ посредством ссылки на примитив. Тем не менее, вы можете связать с именем примитива атрибут типа ENTITY или ENTITIES, чтобы приложение получило доступ к имени примитива и его описанию, а также могло работать с его данными.
Поскольку примитивы классифицируются по этим трем признакам и в каждой классификации имеются две категории, теоретически существует восемь потенциальных типов примитивов, как показано на диаграмме (см. рис. 6.1).
Однако 3 типа примитивов из этих 8 в XML не поддерживаются (на диаграмме они зачеркнуты). Следовательно, реально в XML имеется только 5 типов примитивов:
общие внутренние разбираемые;
общие внешние разбираемые;
общие внешние неразбираемые;
параметрические внутренние разбираемые;
параметрические внешние разбираемые.
Объявление примитива должно предшествовать любой ссылке на этот примитив.
Для каждого типа примитива в представленной ниже таблице приведена форма записи ссылки на примитив и перечень возможных мест помещения ссылки на примитив. В таблице также приведены ссылки на разделы в этой лекции, в которых вы можете найти примеры. О ссылках на символы речь пойдет далее в этой лекции, но данный вид ссылок также включен в таблицу для полноты картины.
Тип примитива |
Форма записи ссылки на примитив, где ИмяПримитиваесть имя примитива |
Место, в которое вы можете поместить ссылку на примитив (пример) |
Общий внутренний разбираемый |
&ИмяПримитива; |
В содержимое элемента (см. "Объявление общего внутреннего разбираемого примитива") В значение атрибута (как значение по умолчанию в объявлении атрибута, либо в начальном теге элемента) (см. "Ссылка на примитив Пример 1") |
|
|
В значение в объявлении внутреннего примитива (см. "Ссылка на примитив Пример 2") |
Общий внешний разбираемый |
&ИмяПримитива; |
В содержимое элемента (см. "Объявление общего внешнего разбираемого примитива") |
Общий внешний неразбираемый |
АтрПрим=’ИмяПримитива’ где АтрПрим есть атрибут типа ENTITY или ENTITIES |
В значение в объявлении внутреннего примитива (см. "Ссылка на примитив Пример 2") Вы не можете поместить ссылку на этот тип примитива, но можете присвоить имя примитива атрибуту, имеющему тип ENTITY или ENTITIES(см. "Объявление общего внешнего неразбираемого примитива") |
Параметрический внутренний разбираемый |
%ИмяПримитива; |
В DTD в место помещения объявлений разметки, но не внутри объявлений разметки (исключения приведены в разделе 4 спецификации XML, доступ по адресу http://www.w3.org/TR/REC-xml) (см. "Объявление параметрического внутреннего разбираемого примитива") |
Параметрический внешний разбираемый |
%ИмяПримитива; |
В DTD в место помещения объявлений разметки, но не внутри объявлений разметки (исключения приведены в разделе 4 спецификации XML, доступ по адресу http://www.w3.org/TR/REC-xml) (см. "Объявление параметрического внешнего разбираемого примитива") |
Ссылка на символ |
или &#xh; где 9 – десятичный числовой код символа, а h – шестнадцатеричный числовой код символа |
В содержимое элемента (см. "Вставка ссылок на символы") |
|
|
В значение атрибута (в качестве значения по умолчанию в объявление списка атрибутов, или в начальный тег элемента) (см. "Вставка ссылок на символы") |
|
|
В значение в объявлении внутреннего примитива (см. "Вставка ссылок на символы") |
