ГЛАВА 14. РНР и XML
Знакомство с синтаксисом XML
Для большинства читателей, знакомых с SGML или HTML, структура документов XML не содержит ничего нового. Пример простого документа XML приведен в листинге 14.1.
Листинг 14.1. Пример документа XML
<?xml version="1.0"?>
<!DOCTYPE cookbook SYSTEM "cookbook.dtd">
<cookbook>
<recipe category="italian">
<title>Spaghetti alla Carbonara</title>
<description>This traditional Italian dish is sure to please even the most discriminating critic.</description>
<ingredients>
<ingredient>2 large eggs</ingredient>
<ingredient>4 strips of bacon</ingredient>
<ingredient>l clove garlic</ingredient>
<ingredient>12 ounces spaghetti</ingredient>
<ingredient>3 tablespoons olive oil</ingredient>
</ingredients>
<process>
<step>Combine oil and bacon in large skillet over medium heat. Cook until bacon is brown and crisp.</step>
<step>whisk eggs in bowl. Set aside.</step>
<step>Cook pasta in large pot of boiling water to taste, stirring occasionally. Add salt as necessary.</step>
<step>Drain pasta and return to pot. adding whisked eggs. Stir over medium-low heat for 2-3 minutes.</step>
<step>Mix in bacon. Season with salt and pepper to taste.</step>
</process>
</recipe>
</cookbook>
Обратите внимание на основные компоненты, из которых состоит документ XML:
- пролог XML;
- теги;
- атрибуты;
- ссылки на сущности;
- инструкции по обработке;
- комментарии.
Пролог XML
Все документы XML начинаются с пролога(prolog). Пролог сообщает, что документ написан на XML, а также указывает, какая версия XML при этом использовалась.
Поскольку текущая версия XML имеет номер 1.0, все ваши документы XML должны начинаться со строки
<?xml version="1.0">
Следующая строка в листинге 14.1 указывает на внешний DTD. Пока не обращайте на нее внимания — DTD подробно рассматриваются в следующем разделе «Определение типа документа(DTD)»:
<!DOCTYPE cookbook SYSTEM "cookbook.dtd">
Оставшаяся часть листинга 14.1 состоит из элементов, очень похожих на элементы документов HTML. Первый элемент, cookbook, называется корневым элементом(root element), поскольку в эту пару тегов заключены все остальные теги документа. Конечно, вы можете присвоить корневому элементу любое имя по своему усмотрению. Главное, о чем следует помнить, — все остальные элементы должны находиться внутри пары корневых тегов.
Пролог может содержать другие инструкции. Например, объявление можно расширить, указав, что документ является автономным:
<?xml version="1.0" standalone="yes">
Присваивание yes атрибуту standalone сообщает механизму обработки XML-кода о том, что документ не импортирует других файлов(например, DTD).
Хотя это расширение, как и многие другие, приносит несомненную пользу, я сокращаю описание синтаксиса до минимума, чтобы лучше выделить основную тему этой главы — совместное использование РНР и XML.
Элементы
Оставшаяся часть документа состоит в основном из различных служебных элементов и соответствующих данных. Служебные элементы легко узнать по угловым скобкам(как в разметке HTML). Элемент может быть пустым или содержащим информацию; в этом случае элемент содержит открывающий и закрывающий теги. Если элемент не пуст, то в теги включаются имена, описывающие природу данных. Как видно из листинга 14.1, эти теги очень похожи на теги документов HTML. Впрочем, следует помнить о некоторых важных различиях:
- Непустые элементы должны содержать как открывающий, так и закрывающий тег. В элементах, которые логически не могут иметь закрывающего тега, используется альтернативная форма синтаксиса <элемент />. Возникает вопрос — у каких элементов нет закрывающего тега? Достаточно вспомнить некоторые теги форматирования HTML — например, <br>, <hr> и <img>, у них нет парных тегов. Теги этого формата могут создаваться и в документах XML
- Элементы XML должны находиться на правильном уровне вложенности. Документ XML, приведенный в листинге 14.1, синтаксически правилен; другими словами, теги элементов не встречаются там, где их быть не должно. Например, следующий фрагмент недопустим:
<title>Spaghetti alia Carbonara
<ingredients></title>
- В элементах XML различается регистр символов. Некоторым читателям это наверняка не понравится. Например, в XML теги <tag>, <Tag> и <TAG> считаются разными тегами. Привыкайте поскорее — с непривычки это может свести вас с ума.
Атрибуты
Теги XML, по аналогии с тегами HTML, могут обладать атрибутами. Атрибуты содержат дополнительную информацию о содержании, которая в дальнейшем используется при форматировании или обработке XML. Значения атрибутов присваиваются в формате «имя=значение», и, в отличие от HTML, атрибуты XML должны быть заключены в апострофы или кавычки. В листинге 14.1 встречается пример использования атрибута:
<recipe category="italian">
Атрибут сообщает, что данный рецепт(recipe) относится к категории «итальянской кухни»(italian). Наличие такой информации упрощает дальнейшую группировку и обработку данных.
Ссылки на сущности
Концепция сущности(entity) упрощает сопровождение документа, обеспечивая возможность ссылки на некоторое содержание по ключевым словам. Ключевое слово может относиться как к простейшему фрагменту вроде расширения аббревиатуры, так и к совершенно новому фрагменту кода XML. Сущности удобны тем, что они могут многократно использоваться в документах XML. При последующей обработке документа все ссылки на сущность заменяются конкретным содержанием, указанным при объявлении сущности. Объявление сущности включается в DTD документа XML.
Чтобы сослаться на некоторую сущность в документе HTML, следует указать ее имя с префиксом «амперсанд»(&) и суффиксом «точка с запятой»(;). Допустим, вы объявили сущность с информацией об авторских правах. После этого на данную сущность можно ссылаться следующим образом:
&Соруright:
При этом строка документа XML может выглядеть так:
<footer>
...прочие данные колонтитула...
&Copyright:
</footer>
Сущности, как и переменные и шаблоны, часто применяются в ситуациях, когда некоторая информация может измениться в будущем или документ содержит множество повторяющихся ссылок. Мы вернемся к проблемам объявления ссылок в разделе «Определение типа документа(DTD)».
Инструкции по обработке
Инструкции по обработке(processing instructions, PI) представляют собой внешние команды, которые выполняются приложением, работающим с документом XML.
В общем случае синтаксис PI выглядит так:
<?приложение инструкции?>
Атрибут приложение указывает, какой программе адресованы последующие инструкции. Например, для выполнения команды РНР в документе XML можно воспользоваться следующей конструкцией:
<?php print "Today's date is:".date("m-d-Y");?>
Инструкции по обработке удобны тем, что они позволяют нескольким приложениям совместно работать с одним документом.
Комментарии
Комментарии принадлежат к числу основных возможностей любого языка. В XML используется тот же синтаксис комментариев, что и в HTML:
<!-- комментарии ->
Итак, мы проанализировали структуру типичного документа XML. Но у документов XML существует еще один важный аспект — определение типа документа(DTD).
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|