Языки описания информации Лекция 2. Кафедра ОСУ ИК ТПУ Весенний семестр 2012/2013 уч. года Описание типов документов
План работы Типы документов Data Type Definition Примитивы
Описание синтаксиса языков разметки Метаязык XML предназначен для создания конкретных языков разметки, для которых определены наборы элементов и атрибутов, наилучшим образом подходящие для описываемой информации. Для конкретных языков разметки нужно описывать их синтаксис, чтобы можно было формальным образом проверять правильность составления XML-документов.
Языки описания синтаксиса В XML-технологии имеется два языка для описания синтаксиса конкретных языков разметки: – язык Document Type Defenition (DTD), описывающий структуру документа с помощью декларативных правил (разработан совместно с метаязыком SGML и не использует синтаксис языка XML); – языка XMLSchema, описывающую структуру документа с использованием синтаксиса языка XML (специально разработан для метаязыка XML).
Формальное описание синтаксиса конкретного языка не является обязательным. Если с помощью конкретного языка разметки требуется разработать только несколько однотипных XML-документов, то не обязательно описывать его синтаксис. Но если с помощью конкретного языка разметки создается много XML-документов, или если данный язык разметки используется разными пользователями, то формальное описание синтаксиса желательно.
Правильные XML документы Правильные (корректно сформированные) XML документы соответствуют основным правилам XML документов. Каждый XML-документ должен быть правильным, т.е. отвечать минимальным требованиям по составлению XML-документа. Если документ не является правильным, он не может считаться XML-документом.
Действительные XML-документы Правильный XML-документ также может быть валидным (действительным). Валидные XML-документы соответствуют более строгим критериям. Валидным (действительным, valid) называется правильный (well-formed) документ, отвечающий двум дополнительным требованиям: – пролог документа должен содержать специальное объявление типа документа, которое содержит определение типа документа (DTD), задающее структуру документа; – остальной документ должен отвечать структуре, заданной в DTD.
Синтаксис - схема В XML-технологии вместо термина «синтаксис» чаще используется термин «схема». Отсюда и название языков: XML Schema, RDF Schema.
Что включают схемы конкретных языков разметки? множество допустимых элементов; – если специально не определено, то нельзя использовать другие имена элементов, кроме содержащихся в этом множестве (словарь языка); шаблон каждого элемента, который определяет, – какие элементы или данные могут находиться внутри элемента, – в каком порядке, – сколько их может быть, – являются ли они обязательными; набор разрешенных атрибутов; – каждое объявление атрибута определяет его имя, тип данных, – значения атрибутов по умолчанию (если они есть) и – обязательность из задания.
Язык Document Type Definition Язык Document Type Definition (DTD) используется для описания схем (синтаксиса) конкретных языков разметки. Данный язык был унаследован от языка SGML. Описание конкретного языка разметки с помощью языка DTD может включаться в XML- документ или содержаться в отдельном файле (внешнее DTD-описание). Для включения DTD описания в XML-документ используется элемент, который добавляется в начало XML-документа.
Если DTD-описание языка разметки включается в XML-документ, то элемент DOCTYPE записывается следующим образом:
Если в этом документе используется внешнее DTD- описание (обычно содержащееся в файле с расширением dtd), то DOCTYPE будет иметь следующий вид: – [имя_корневого_элемента] – указывает имя корневого элемента конкретного языка разметки (оно должно в точности соответствовать имени корневого элемента, записанного в XML- документе); – [тип] – может принимать одно из двух значений: SYSTEM – DTD- описание является закрытым, не для общего распространения, PUBLIC – DTD-описание является открытым для общего использования; – [идентификатор] – формальный открытый идентификатор для типа PUBLIC; – [адрес] – адрес файла или URL.
Например, если описание конкретного языка разметки, который использовался при составлении XML-документа, сохранить в файле BookDTD, то данный документ должен включать следующую запись:
Ссылка на открытое DTD-описание для конкретного языка XHTML записывается следующим образом:
Объявление типа документа
Форма записи Document Type Definition (DTD) Объявление типа документа имеет следующую обобщенную форму записи: – Имя – название корневого тэга XML документа. – DTD – определение типа документа. DTD состоит из символа левой квадратной скобки [, после которой следует ряд объявлений разметки, заканчивающихся правой квадратной скобкой ]. Объявления разметки описывают логическую структуру документа; т.е. задают элементы документа, атрибуты и другие компоненты. Пример валидного XML-документа, содержащего DTD с единственным объявлением разметки, которое определяет один тип элемента в документе, SIMPLE:
Объявления языка DTD Описание конкретного языка разметки на языке DTD состоит из объявлений, которые описывают логическую структуру документа. DTD включает следующие основные типы объявлений: – объявления типов элементов – определяют типы элементов, которые может содержать документ, а также их содержимое и порядок следования элементов; – объявления списков атрибутов – задают имена атрибутов, которые могут быть использованы с определенным типом элемента, а также типы данных и устанавливаемые по умолчанию значения этих атрибутов; – объявления сущностей – используются для описания часто используемых фрагментов текста или для встраивания в XML-документ не текстовых типов данных; – объявления нотаций – могут использоваться для описания форматов внешних данных.
Объявление типов элементов В валидном XML-документе требуется полностью объявить тип каждого элемента, который используется в документе, в объявлении типа элемента внутри DTD. В объявлении типа элемента задается – имя типа элемента и – его допустимое содержимое (в частности, указывает типы и порядок следования элементов, которые данный тип элемента может содержать).
Все объявления типов элементов в DTD аналогичны схеме базы данных – задают полную логическую структуру документа. Объявление типа элемента имеет следующую обобщенную форму: – Имя – имя объявляемого типа элемента; о – опись_содержимого – это описание содержимого, определяющего, что может содержать элемент.
Объявление типов элементов В объявлении типа элемента задается – имя элемента и – его допустимое содержимое (часто описывающее порядок размещения дочерних элементов), в частности, указывает типы и порядок следования элементов, которые данный тип элемента может содержать. Объявление типа вложенного элемента имеет следующую общую форму: – [имя] – это имя объявляемого типа элементов; – [содержание] –описание содержимого, определяющего, что может содержать элемент.
Модели содержимого элемента Содержимое элемента (то, что находится между открывающим и закрывающим тэгами элемента) может быть описано четырьмя различными способами (с использованием разных моделей содержимого): Пустое содержимое (EMPTY) – элемент должен быть пустым – т.е. не должен иметь содержимого. Любое содержимое (ANY) – указывает, что элемент может иметь любое допустимое для этого типа содержимое (наиболее неопределенный тип описания содержимого и позволяет создавать типы элементов без ограничений на их содержимое). Дочернее содержимое – элемент может содержать только вложенные элементы, но не может символьные данные (будет рассматриваться далее). Смешанное содержимое – элемент может содержать комбинацию дочерних элементов определенного типа и символьных данных (самый общий вариант описания с ограничением содержимого элементов).
Пустое содержимое EMPTY - пустое содержимое, элемент должен быть пустым – т.е. не должен иметь содержимого. Например: – В этом случае элементы image, могут записываться в XML-документе следующим образом: или
Любое содержимое ANY - любое содержимое, указывает, что элемент может иметь любое допустимое для этого типа содержимое (наиболее неопределенный тип описания содержимого и позволяет создавать типы элементов без ограничений на их содержимое). Например:
Задание дочернего содержимого элемента Элемент с «дочерним содержимым» могут непосредственно содержать только определенные дочерние элементы, но не символьные данные. Пример описания элемента book имеющего дочернее содержимое: В данном случае элементы book должны иметь только один дочерний элемент title, за которым следует ровно один дочерний элемент author.
Пример объявления типов элементов Например, объявление типа элемента с именем TITLE, для содержимого которого могут использоваться только символьные данные (дочерние элементы не допускаются): Объявление для типа элемента с именем GENERAL, содержимое которого может быть любым:
Пример XML документа с DTD Mozart Violin Concertos 1, 2, and 3 Telemann Trumpet Concertos Handel Concerti Grossi Op. 3
Задание дочернего содержимого элемента Элемент может непосредственно содержать только определенные дочерние элементы, но не символьные данные. В тексте документа дочерние элементы можно разделять символами пробела, табуляции, возврата каретки или перевода строки, чтобы улучшить восприятие документа, но процессор будет игнорировать эти символы и не передаст их приложению.
Задание дочернего содержимого элемента Пример XML-документа, описывающего книгу: The Scarlet Letter Nathaniel Hawthorne
Модели содержимого элемента Последовательная модель содержимого – Элемент должен иметь строгую заданную последовательность дочерних элементов. Выборочная модель содержимого – Выборочная форма модели содержимого указывает, что элемент может иметь только один (любой) из набора допустимых дочерних элементов
Последовательная модель содержимого (sequence) Элемент должен иметь строгую заданную последовательность дочерних элементов. Имена типов дочерних элементов должны отделяться запятыми. Неправильный порядок, пропуск дочернего элемента или использование одного и того же типа дочернего элемента более одного раза также недопустимо.
Пример последовательная модели содержимого Например: указывает, что элемент MOUNTAIN должен иметь – один дочерний элемент NAME, – после которого идет один дочерний элемент HEIGHT, – за которым следует один дочерний элемент STATE:
Выборочная модель содержимого (choice) Выборочная форма модели содержимого указывает, что элемент может иметь только один (любой) из набора допустимых дочерних элементов, разделяемых символом|. Например: указывает, что элемент FILM может состоять из одного дочернего элемента STAR, или одного дочернего элемента NARRATOR, или одного дочернего элемента INSTRUCTOR:
Выборочная модель содержимого (choice) Валидные документы: Robert Redford Не валидный документ: Sir Gregory Parsloe Galahad Threepwood
Уточнение формы содержимого В любой форме модели содержимого после имени элемента можно задать символы: знаки вопроса (?), плюса (+) и звездочки (*). Смысл использования этих знаков поясняется в следующей таблице: Символ Значение ? Ни одного или один экземпляр (0 или 1) + Один или более экземпляров (1 или n) * Ни одного или несколько экземпляров (0 или n)
Уточнение формы содержимого Например: означает – можно включить один или более дочерний элемент NAME, – дочерний элемент HEIGHT является не обязательным, – дочерний элемент STATE является обязательным. Тогда, следующий элемент будет действительным: Pueblo Peak Taos Mountain New Mexico
Пример уточнения содержимого Например, можно включать несколько или ни одного дочернего элемента STAR, либо один дочерний элемент NARRATOR, либо один дочерний элемент INSTRUCTOR: Соответственно, каждый из следующих трех элементов будет корректным: Tom Hanks Meg Ryan Sir Gregory Parsloe
Уточнение всей модели содержимого Символы ?, + или * также могут использоваться для модификации всей модели содержимого. Для этого они записываются непосредственно после закрывающих скобок. Например: дает возможность включить один или несколько дочерних элементов любого из этих трех типов в любом порядке.
Такое объявление делает корректными следующие элементы: Bertram Wooster Sean Connery Plug Basham Sean Connery Meg Ryan Stinker Pike
Сложные модели содержимого Более сложные модели содержимого формируются путем вложения выборочной модели содержимого внутрь последовательной модели, либо последовательной модели в выборочную модель. Например:
В соответствии с этим DTD, следующий корневой элемент будет действительным: The Net fictional Sandra Bullok так же, как такой: How to Use XML instructional Penny Donaldson
Задание смешанного содержимого В этом случае элемент может включать символьные данные. Если же в объявлении задан один или несколько типов дочерних элементов, он может содержать любые из этих дочерних элементов в любом порядке и с любым количеством вхождений (нуль и более). При смешанном содержимом можно задавать типы дочерних элементов, но нельзя задавать порядок или количество вхождений дочерних элементов, а также задавать обязательность включения для определенных типов дочерних элементов.
Для объявления типа элемента смешанного содержимого, можно воспользоваться одной из следующих форм модели содержимого: 1.#PCDATA - только символьные данные (может и не иметь никаких символов – т.е. быть пустым). 2. Символьные данные с необязательными дочерними элементами. – В этом случае после ключевого слова PCDATA записывается один или несколько дочерних элементов (разделяя их символами | и помещая звездочку (*) в конце всей модели содержимого).
Пример смешанного содержимого Например, следующее объявление указывает, что элемент TITLE может содержать символьные данные плюс ни одного или несколько дочерних элементов SUBTITLE: В соответствии с этим объявлением следующие элементы TITLE являются допустимыми: Moby-Dick Or, the Whale Or, the Whale Moby-Dick Moby-Dick Or, the Whale Another Subtitle
Объявление атрибутов В валидном XML-документе должны быть полностью описаны все атрибуты, которые предполагается использовать для элементов документа. Все атрибуты, ассоциированные с определенным элементом, описываются с помощью специального типа DTD-разметки, называемого объявлением списка атрибутов.
В объявлении атрибутов задаются: – имена атрибутов, ассоциированных с элементом. В валидном документе можно включить в начальный тэг элемента только те атрибуты, которые определены для элемента; – тип данных каждого атрибута; – обязательность для каждого атрибута. Если атрибут необязателен, в объявлении списка атрибутов указывается, что должен делать процессор, если атрибут опущен (например, можно задать значение атрибута по умолчанию, которое будет использовать процессор).
Форма записи объявления списка атрибутов Объявление списка атрибутов имеет следующую общую форму: – [Имя Элемента] – имя элемента, связанного с атрибутом или атрибутами. – [Определения Атрибутов] – это одно или несколько определений атрибутов, каждое из которых определяет один атрибут.
Каждое определение атрибута является последовательностью следующих трех значений: [Имя Атрибута] [Тип Атрибута] [Значение ПоУмолчанию] – [Имя Атрибута] – имя атрибута; – [Тип Атрибута] – тип атрибута, т.е. виды значений, которые могут быть присвоены атрибуту; – [Значение ПоУмолчанию] – это объявление по умолчанию, которое указывает на обязательность атрибута и содержит другую информацию.
Если для данного типа элемента будет задано более одного объявления списка атрибутов, содержания двух объявлений объединяются. Если атрибут с заданным именем объявлен для одного и того же элемента несколько раз, первое объявление используется, а последующие – игнорируются. Множественные объявления списков атрибутов могут иметь место, если документ имеет как внутренние, так и внешние DTD.
Пример определения атрибутов Допустим, тип элемента с именем FILM объявлен следующим образом: Объявление двух атрибута – Class и Year – для элемента FILM:
Атрибуту class можно присваивать любую строку в кавычках (ключевое слово CDATA); – если в XML-документе данному атрибуту значение не задается, то ему будет автоматически присваиваться значение по умолчанию "fictional". Атрибуту year можно присвоить любую строку в кавычках; – однако, этому атрибуту должно быть обязательно присвоено значение в каждом элементе film (ключевое слово #REQUIRED), поэтому значение по умолчанию не задается.
Пример описания XML документа Следующий полный XML-документ включает это объявление списка атрибутов, а также элемент FILM: The Morning After Morgan Attenbury
Тип атрибута Тип атрибута является вторым необходимым компонентом в определении атрибута. Он задает вид значений, которые вы можете присваивать атрибуту внутри документа. Тип атрибута может задавать тремя различными способами: – Строковый тип - атрибуту может быть назначена любая строке в кавычках (литералу). Для задания такого типа используется ключевое слово CDATA. Например: – Маркерный тип - можно задать значения, на которые наложен ряд ограничений. – Нумерованный тип – можно задать одно или список определенных значений.
Задание маркерного типа атрибута Значение, присваиваемое маркерному типу атрибута, должно удовлетворять дополнительному ограничению, которое задается в описании атрибута с помощью ключевых слов – ID – идентификатор (уникальное значение); – IDREF – ссылка на идентификатор; – IDREFS – набор ссылок на идентификаторы; – ENTITY – не анализируемая сущность; – ENTITIES – набор не анализируемых сущностей.
Маркерный тип ID ID - для каждого элемента атрибут должен иметь уникальное значение. – Значение должно начинаться с буквы или символа подчеркивания (_), за которыми могут идти или не идти другие буквы, цифры, символы точки (.), тире (–) или символы подчеркивания. Данный тип элемента может иметь только один атрибут типа ID, а в объявлении значения атрибута по умолчанию должно фигурировать #REQUIRED или #IMPLIED.
Пример использования ID Например, для атрибута StockCode определен маркерный тип с использованием ключевого слова ID. Это ключевое слово означает, что для каждого элемента атрибуту должно быть присвоено уникальное значение. Например, присвоение товарного кода "S021" двум элементам ITEM не допускается. Peach Tea Pot Electric Coffee Grinder Candy Thermometer
Маркерные типы IDREF и IDREFS IDREF - значение атрибута должно совпадать со значением атрибута элемента типа ID внутри документа. – Другими словами, этот тип атрибута является ссылкой на уникальный идентификатор другого атрибута. IDREFS - этот тип атрибута похож на тип IDREF, но при этом значение может включать ссылки на несколько идентификаторов – разделенных пробелами – внутри строки в кавычках.
Задание маркерного типа атрибута (2) ENTITY - значение атрибута должно совпадать с именем примитива, объявленного в DTD. – Этот примитив не обрабатывается синтаксическим анализатором и ссылается на внешний файл, обычно содержащий не XML-данные. ENTITIES - этот тип атрибута похож на тип ENTITY, за исключением того, что значение может содержать имена нескольких не анализируемых примитивов – разделенных пробелами – внутри строки в кавычках.
Задание маркерного типа атрибута (3) NMTOKEN - это значение есть элементарное имя (name token), представляющее собой имя, состоящее из одной или более букв, цифр, точек (.), тире (–) или символов подчеркивания (_). – Элементарное имя может также содержать двоеточие (:), но не на первом месте. NMTOKENS - этот тип атрибута похож на тип NMTOKEN, но значение может содержать несколько элементарных имен – разделенных пробелами – внутри строки в кавычках.
Пример использования IDREF Такой тип атрибута является ссылкой на уникальный идентификатор другого атрибута. Например, можно добавить атрибут IDREF с именем GoesWith к элементу ITEM: Затем можно использовать этот атрибут для ссылки на другой элемент ITEM: Electric Coffee Grinder Coffee Grinder Brush
Пример использования IDREFS Eсли атрибуту GoesWith назначен тип IDREFS: Тогда можно использовать его на ссылки на несколько других элементов: Electric Coffee Grinder 1 pound Breakfast Blend Coffee Beans Coffee Grinder Brush
Пример использования ENTITY Например, в DTD можно объявить элемент с именем IMAGE, представляющий графическое изображение, и атрибут типа ENTITY с именем Source, указывающий на источник графических данных: Если объявлен не анализируемый примитив с именем Logo, который содержит графические данные для изображения, то можно присвоить этот примитив атрибуту Source элемента IMAGE в документе следующим образом:
Пример использования ENTITIES Если атрибуту Source назначен тип ENTITIES : Тогда можно использовать его для ссылки на несколько не анализируемых примитивов (допустим, примитивов, содержащих графические данные в альтернативных форматах), например, таким образом:
Пример использования NMTOKEN Например, если атрибуту ISBN назначите тип NMTOKEN следующим образом: Тогда можете присвоить ему значение, начинающееся с цифры (цифры в качестве первых символов допустимы для типов NMTOKEN и NMTOKENS, но не для любых других маркерных типов): The Portrait of a Lady
Пример использования NMTOKENS Если атрибуту Codes назначен тип NMTOKENS: Тогда такому атрибуту можно присваивать несколько значений в виде элементарных имен: long sleeve Henley
Перечисляемый тип атрибутов Значение, присваиваемое маркерному типу атрибута должно совпадать с одним из имен, приведенных в списке типов атрибутов. Эти имена могут иметь одну из следующих двух форм записи. – Открывающая скобка, вслед за которой идет список элементарных имен, разделенных символами |, после чего следует закрывающая скобка. Напомним, что элементарное имя – это имя, состоящее из одной или нескольких букв, цифр, точек (.), тире (–) или символов подчеркивания (_), а также может включать одно двоеточие (:), но не на первом месте. – Ключевое слово NOTATION, за которым идет пробел, затем открывающая скобка, затем список имен нотаций, разделяемых символами |, после чего следует закрывающая скобка. Каждое из этих имен должно точно соответствовать имени нотации, объявленному в DTD. Нотация описывает формат данных или идентифицирует программу, применяемую для обработки определенного формата.
Пример задания нумерованного типа Пример XML-документа, использующего нумерованный тип атрибута Class: The Use and Care of XML Michael Young Если атрибут Class будет опущен, то ему будет по умолчанию присвоено значение "fictional". Присвоение атрибуту Class значения, отличного от "fictional", "instructional" или "documentary", приведет к ошибке.
Пример задания нумерованного типа (2) Например, можно ограничить значения атрибута Format одним из этих имен нотаций с помощью следующего объявления: В дальнейшем вы можете использовать элемент Format для указания формата определенного элемента EXAMPLE_DOCUMENT, как в следующем примере: Присвоение атрибуту Format значения, отличного от "HTML", "SGML" или "RTF", приведет к ошибке. (Обратите внимание на использование здесь раздела CDATA – при этом вы можете свободно использовать символ левой угловой скобки (
Объявление значений по умолчанию Третий (последний) обязательный компонент в определении атрибута – задает, является ли атрибут обязательным, и если нет, указывает, что должен предпринимать процессор в случае, когда атрибут опущен. Так, объявление должно обеспечить значение атрибута по умолчанию, которое будет использовать процессор в том случае, если атрибут отсутствует.
Объявление значений по умолчанию Объявление обязательности атрибута и его значения по умолчанию может иметь следующие четыре формы: 1.#REQUIRED – требуется обязательно задавать значение атрибута для каждого элемента. 2.#IMPLIED - можно либо включить, либо опустить атрибут, если атрибут опущен, то никакое значение по умолчанию процессору не передается. 3. AttValue (значение атрибута по умолчанию) - можно либо включить, либо опускать атрибут для элемента. 1. Если атрибут опускается, то процессор использует значение по умолчанию, как если бы атрибут был включен и задано его значение. 4.#FIXED AttValue (значение атрибута по умолчанию) - можно либо включать, либо опускать атрибут для элемента ассоциированного типа. 1. если атрибут опускается, то процессор будет использовать значение, заданное по умолчанию; 2. если атрибут включается, то ему должно быть задано значение по умолчанию (у атрибута м.б. только одно значение).
Например, следующее объявление присваивает фиксированное значение по умолчанию атрибуту Class: В соответствии с этим объявлением следующие два эквивалентных элемента будут корректными: The Making of XML в то время как следующий элемент будет некорректным: The Making of XML
Включение в XML-документ внешних данных Хотя метаязык XML в основном разработан для создания языков описания текстовой информации, но он также предоставляет средство взаимодействия с другими данными (например, двоичными данными, такими, как растровые изображения). Для обработки данных других типов нужно – задать их тип с помощью нотации и – включить их в XML-документ с помощью сущности. Кроме не текстовых типов можно использовать и текстовые данные специальных форматов (например, даты).
Нотации Под нотацией понимается специальная метка, сообщающая XML-процессору об используемом типе данных. Одним из применений нотаций является описание текстовых данных, имеющих особый формат, например, дат. Нотация описывает определенный формат данных. Для этого указывается – адрес описания формата, – адреса программы, которая может обрабатывать данные в этом формате, – либо просто описание формата. Нотация может использоваться, для описания формата общей внешней не анализируемой сущности, либо можете присвоить нотацию атрибуту, который имеет перечисляемый тип NOTATION.
Нотация имеет следующую форму записи: – [Имя Нотации] – имя нотации; – [Систем Литерал] – системный литерал (ограничен одинарными (') или двойными (") кавычками), который может включать любое известное описание формата, чтобы сообщить XML-процессору, как отображать или обрабатывать включаемые в XML-документ данные. Идентификатор ([Систем Литерал]) должен быть уникальным и сообщать XML-процессору достаточно информации для обработки данных. Объявление нотации создает метку, которая используется вместе с объявлением атрибута или не анализируемой внешней сущностью.
Примеры описания системного литерала URI программы, которая может обрабатывать или отображать формат данных, как в следующих примерах:
URI документа в сети, который описывает формат данных, например: Простое описание формата, например:
Пример Нотации используются служат для задания форматов данных и типа программ:
Сущности Сущности (примитивы, entity) в языке XML являются средством встраивания в XML-документ многократно повторяющихся блоков текста, а также способом встраивать различных, не текстовых типов данных. Сущностями могут быть – часто используемые блоки текста, что позволяет быстро вставлять их в нужные места. – внешние файлы, чтобы иметь возможность включать их содержание в XML-документ; в таких файлах могут содержаться текстовые или двоичные данные. Определение сущностей выполняется аналогичного тому, как объявляются элементы и атрибуты конкретного языка.
Текстовые сущности В DTD могут описываться следующие типы сущностей: Текстовая сущность это простая текстовая строка, для которой задается имя, например: Для вставки данной строки в XML-документе используется ссылка на нее, в виде «&abc;». Внешняя текстовая сущность содержит текст из внешнего источника. Примеры описания: – Задание внешней общей сущности посредством его формального открытого идентификатора: – Задание внешней общей сущности посредством местонахождение на компьютере или в сети: Ссылка на эти сущности указывается в виде «&man;».
Не анализируемые внешние сущности Сущности, используемые для импорта не текстовых данных, называется не анализируемыми сущностями (unparsed entity). Объявления не анализируемой и текстовых сущностей аналогичны, за исключением – ключевого слова NDATA и – типа нотации, следующих за системным или открытым идентификатором. Например:
Примеры описания сущностей Пример 1: не анализируемая сущность задается посредством ее формального открытого идентификатора: Пример 2: данные импортируются из другого файла: Ссылка на эту сущность указывается в виде «&logo;».
Пример использования нотаций и сущностей Объявлены двух нотации, jpeg и png, используя в качестве идентификаторов их типы MIME. Объявлены не анализируемые сущности bob и judy, ссылающиеся на графические файлы. Элемент объявлен пустым с атрибутом "source", Для атрибута "source" задается значение, которого является именем сущности.
Описанные не анализируемые сущности могут использоваться следующим образом: XML-процессор, обнаружив элемент, находит имя сущности в атрибуте source. Поскольку сущность объявляется как не анализируемая (посредством ключевого слова NDATA), процессор XML не обрабатывает ее как данные XML, а передает прямо в ту часть программы, которая умеет ее обрабатывать. Например, в web-браузере есть функция, воспринимающая некоторые типы графических данных и способная выводить их на экран.
Вставка ссылок на сущности Не анализируемые сущности непосредственно в XML-документ не встраиваются. Вместо этого ссылки на них передаются в элемент с помощью атрибутов, имеющих тип ENTITY или ENTITIES. Вставка содержимого (замещающий текст) сущности (примитива) в документ осуществляется с помощью ссылок на сущности. Ссылки на сущность имеет следующий общий вид: &Имя Сущности;.
Язык XML Schema Языка DTD не основывается на синтаксисе языка XML и имеет ограниченный набор типов данных. Описания на языке DTD конкретного языка разметки (структура содержимого и объявления списков атрибутов) трудно читать и понимать, в элементах и атрибутах нельзя задавать тип и шаблоны данных. Для преодоления этих недостатков был разработан другой язык описания синтаксиса (структуры) конкретных языков разметки, называемый XML Schema, который также часто обозначается как XSD (XML Schema Definition). Язык XML Schema имеет следующее пространство имен –
Преимущества языка XSD Основное преимущество языка XSD является то, что он разработан на основе метаязыка XML и использует его синтаксис. – Это позволяет обрабатывать описания синтаксиса на языке XSD с помощью тех же программ, что и сами документы. – Схемы XML можно расширять с помощью применения пространств имен. Другое большое преимуществ языка XSD является поддержка большого количества типов данных. – Это позволяет точнее задавать правила проверки содержания XML-документов и создавать новые типы данных.
Рассмотрим пример простого XML- документа (note.xml) Луценко Фролов Напоминание Не забудь о собрании лаборатории в субботу!
DTD описание (в файле note.dtd) В первой строке определяется, что элемент note должен иметь 4 дочерних элемента: to, from, heading, body. В последующих строках описывается, что эти дочерние элементы имеют тип "#PCDATA" (т.е. могут содержать текст).
Связывание DTD описания с XML документом Луценко Фролов Напоминание Не забудь о собрании лаборатории в субботу!
Описание схемы на языке XML Schema На языке XML Schema язык разметки использованный для составления XML- документа note.xml может быть описан следующим образом (файл note.xsd):
Связывание XML-документ note.xml с описанием его синтаксиса на языке XML Schema можно выполнить следующим образом: < сообщение xmlns=" xmlns:xsl=" xsl:schemaLocation=" note.xsd"> Луценко Фролов Напоминание Не забудь о собрании лаборатории в субботу!
Здесь все используемые элементы, с помощью первого атрибута объявлены в пространстве имен " Во втором атрибуте (xmlns:xsl=" создается префикс для пространства имен «XML Schema Instance», которое используется для связывания с экземплярами документов описания схем на языке XSD. Из данного пространства имен можно использовать атрибут schemaLocation, которому задается два значения, разделенные пробелом. – первое значение ( – это используемое пространство имен, – второе значение (note.xsd) – местоположение документа с описанием XML схемы для данного пространства имен. Например: xsl:schemaLocation=" note.xsd"