П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 179554 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 77480 раз(а).

Учебник HTML.
Просмотров 75143 раз(а).

Руководство по PHP5.
Просмотров 46178 раз(а).

Хостинг через призму DNS.
Просмотров 53422 раз(а).

Подборка текстов стандартных документов.
Просмотров 46163 раз(а).

Учебник PHP - Самоучитель
Просмотров 52322 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 52873 раз(а).

Внешние атаки...
Просмотров 42785 раз(а).

Учебник PHP.
Просмотров 38302 раз(а).

SSI в примерах.
Просмотров 28393 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 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).

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru