Структура XML-документов По материалам курса University of Washington
XML Язык XML основан на HTML, но является, с одной стороны, его расширением, а с другой стороны, он имеет более строгие правила. Основные цели создания XML: 1.Обеспечить возможность универсального текстового представления структурированных данных. 2.Дать возможность создавать языки, подобные XHTML на основе единых правил и с помощью простых средств. 3.Обеспечить возможность обработки структурированных данных с помощью универсальных программных средств. Таким образом, с помощью XML удается: 1.Переносить данные из одной системы в другую; единственное условие – обе системы должны уметь разбирать структуру данных XML. 2.Просто определять легко понимаемые человеком и машиной языки, такие как XHTML, MathML, SVG и т.д. 3.Создавать универсальные программы обработки текстов на XML для получения внутреннего представления представленных структур (DOM).
Структура документа XML В целом структура XML-документа знакома нам по структуре XHTML-документа: заголовок и тело, которое содержит корневой элемент и вложенные в него и друг в друга другие элементы. Содержание моего элемента Замечания: 1.В 2006 году разработан стандарт XML 1.1, однако, в качестве номера версии нужно указывать 1.0, если только вы не используете в документе специфических возможностей XML Все программы обязаны понимать кодировки UTF-8 и UTF-16, однако, если в вашем документе используются, скажем, русские символы – используйте соответствующую кодировку, скажем, windows В отличие от HTML все пробелы и переводы строк внутри текстовых элементов сохраняются, а имена элементов и атрибутов чувствительны к регистру букв.
Проверка правильности XML-документа Имеются две формы проверки правильности: формальная правильность (структурная); говорят, что формально правильный документ well-formed; содержательная правильность (по составу и содержанию тегов элементов и атрибутов); говорят, что содержательно правильный документ valid. для проверки формальной правильности достаточно проанализировать внешнюю структуру документа: правильно ли сделана вложенность элементов; все ли значения атрибутов заключены в кавычки и т.п. для проверки содержательной правильности используются специальные языки, определяющие допустимость тегов, атрибутов, правильность их вложенности друг в друга и т.п. Наиболее известным из таких языков является язык описания документов DTD.
Пример XML-документа How to get a best mark Oh, please, please, help me! Для форматирования XML-документа можно использовать язык CSS, только привязка CSS-страниц к XML-документу производится чуть-чуть по-другому, чем в HTML: Однако, чаще для форматирования применяется другой способ: XML-документ преобразуется в HTML и форматируется с помощью XSL-документа. XSL – это отдельный сложный язык.
Использование «сущностей» (entities) Если в текстовых элементах документа нужно использовать специальные символы, &, ', ", то, как и в HTML вместо них используются замещающие их последовательности символов. Набор стандартных сущностей невелик (только для пяти вышеперечисленных символов, нет даже сущности для «неразрываемого пробела»), однако при определении своего языка (с помощью DTD) можно определить свои собственные сущности. Символ«Сущность» > && ' (апостроф)' " (двойная кавычка)" произвольный символ&# ;
Использование неанализируемого текста myFunction 0 && x Если в тексте часто используются знаки &,, то использовать сущности становится очень неудобно. Можно явно указать, что некоторый фрагмент текста не нужно анализировать на наличие сущностей и вложенных элементов, а нужно брать «как есть». Для этого используется специальный элемент CDATA :
Описание конкретного языка с помощью DTD Как обычно, начинаем со случая, когда описание структуры документа вложено непосредственно в сам документ («смешивание языков»). Конкретное содержание документа может быть определено, если определен синтаксис языка, то есть состав элементов и атрибутов, возможные значения атрибутов и т.п. Это можно сделать с помощью языка описания структуры XML-документа DTD. Описание структуры документа начинается с описания структуры корневого узла, которое содержит описание элементов, атрибутов и т.д. содержание документа
Простой пример DTD Студенты Преподаватель Заметка Не забудьте про экзамен! В этом примере описано, что корневой элемент должен содержать элементы to, from, heading и body (в указанном порядке), а, в свою очередь, эти элементы могут содержать внутри себя произвольный текст.
Вынесение DTD в отдельный документ Студенты Преподаватель Заметка Не забудьте про экзамен! Описание типа документа может быть отделено от самого документа. Описание элементов тогда будет содержаться в отдельном файле, а из основного документа будет ссылка на него.
Структура блоков XML-документа Синтаксически XML-документ состоит из следующих строительных блоков: 1.Элементы (elements) 2.Атрибуты (attributes) 3.Сущности (entities) 4.Текст PCDATA (parsed character data) 5.Текст CDATA (character data) Примеры из XHTML: 1.Элементы: p в Это просто параграф 2.Атрибуты: src в 3.Сущности: nbsp в Слова отделены пробелами 4.Текст PCDATA: текст, в котором происходит перевод сущностей и анализируются вставленные элементы (как внутри параграфа). 5.Текст CDATA: текст, который берется без изменений (как в )
Описание элементов XML-документа При описании элементов указывают, что может содержаться внутри элемента, а также, какие он может иметь атрибуты. Вот несколько способов описать содержимое: Элемент должен быть пустым Элемент должен содержать произвольный текст Элемент может содержать произвольную комбинацию текста и любых других элементов. Элемент должен содержать указанные элементы в одном экземпляре в указанном порядке. Все дочерние элементы должны быть также описаны.
Описание элементов (продолжение) Элемент должен содержать один или более элементов message. Элемент должен содержать произвольное число элементов message, в том числе и ни одного. Элемент может содержать не более одного элемента message. Элемент должен элемент to, а после него – message или body. Элемент может содержать любые из указанных элементов или текст в произвольном порядке в любом количестве.
Описание атрибутов Предназначено для описания состава и содержания атрибутов некоторого элемента и имеет следующий вид: Например, если элемент schedule может содержать атрибут date как показано ниже: то описание синтаксиса может выглядеть так:
Типы и значения атрибутов CDATA Произвольный текст (val1|val2|...) Одно из указанных значений ID Уникальный в документе идентификатор IDREF Ссылка на другой идентификатор в документе ENTITY Сущность Вот несколько возможных типов атрибутов (список не полный): value Указано конкретное текстовое значение #REQUIRED Обязательный атрибут #IMPLIED Необязательный атрибут #FIXED value Значение атрибута должно быть только таким, как указано Вот несколько возможных способов задать значение атрибута по умолчанию:
Атрибуты и вложенные элементы Атрибуты, как и вложенные элементы, можно использовать для описания структуры элементов. Иногда трудно выбрать, какой способ предпочесть. friends или 25/12/2008 friends или, может быть, friends Основное правило: используйте атрибуты только если значение точно не будет иметь внутренней структуры; значение уточняет информацию об элементе (мета-данные).
Описание сущностей Сущности используются для введения часто используемых текстовых фрагментов и символов. Синтаксис: например,