Автор: Пользователь скрыл имя, 20 Октября 2012 в 17:46, лекция
Передача данных стала фундаментальной частью вычислений. Сети, разбросанные по всему миру, собирают данные о таких разных предметах, как атмосферные условия, производство продуктов и воздушных перевозках. Группы создают электронные справочные списки, которые позволяют им получать информацию, интересную всем. Любители обмениваются программами для их домашних компьютеров. В научном мире сети данных стали необходимы, так как они позволяют ученым посылать программы и данные на удаленные суперкомпьютеры для обработки, получать результаты и обмениваться научной информацией с коллегами.
Если XML- документ не нарушает приведенные правила, то он называется формально-правильным и все анализаторы, предназначенные для разбора XML- документов, смогут работать с ним корректно.
Однако кроме проверки на формальное соответствие грамматике языка, в документе могут присутствовать средства контроля над содержанием документа, за соблюдением правил, определяющих необходимые соотношений между элементами и формирующих структуру документа. Например, следующий текст, являясь вполне правильным XML- документом, будет абсолютно бессмысленным:
<country><title>Russia</title>
Для того, чтобы обеспечить проверку корректности XML- документов, необходимо использовать анализаторы, производящие такую проверку и называемые верифицирующими.
На сегодняшний день существует два способа контроля правильности XML- документа: DTD - определения(Document Type Definition) и схемы данных(Semantic Schema). Более подробно об использовании DTD и схемах мы поговорим в следующих разделах. В отличии от SGML, определение DTD- правил в XML не является необходимостью, и это обстоятельство позволяет нам создавать любые XML- документы, не ломая пока голову над весьма непростым синтаксисом DTD.
Содержимое XML- документа представляет собой набор элементов, секций CDATA, директив анализатора, комментариев, спецсимволов, текстовых данных. Рассмотрим каждый из них подробней.
Элемент - это структурная единица XML- документа. Заключая слово rose в в тэги <flower> </flower> , мы определяем непустой элемент, называемый <flower>, содержимым которого является rose. В общем случае в качестве содержимого элементов могут выступать как просто какой-то текст, так и другие, вложенные, элементы документа, секции CDATA, инструкции по обработке, комментарии, - т.е. практически любые части XML- документа.
Любой непустой элемент должен состоять из начального, конечного тэгов и данных, между ними заключенных. Например, следующие фрагменты будут являться элементами:
<flower>rose</flower>
<city>Novosibirsk</city>
,а эти - нет:
<rose>
<flower>
rose
Набором всех элементов, содержащихся в документе, задается его структура и определяются все иерархическое соотношения. Плоская модель данных превращается с использованием элементов в сложную иерархическую систему со множеством возможных связей между элементами. Например, в следующем примере мы описываем месторасположение Новосибирских университетов (указываем, что Новосибирский Университет расположен в городе Новосибирске, который, в свою очередь, находится в России), используя для этого вложенность элементов XML :
<country id="Russia">
<cities-list>
<city>
<title>Новосибирск</title>
<state>Siberia</state>
<universities-list>
<university id="2">
<title>Новосибирский
<noprivate/>
<address URL="www.nstu.ru"/>
<description>очень хороший институт</description>
</university>
<university id="2">
<title>Новосибирский
<noprivate/>
<address URL="www.nsu.ru"/>
<description>тоже не плохой</description>
</university>
</universities-list>
</city>
</cities-list>
</country>
Производя в последствии поиск в этом документе, программа клиента будет опираться на информацию, заложенную в его структуру - используя элементы документа. Т.е. если, например, требуется найти нужный университет в нужном городе, используя приведенный фрагмент документа, то необходимо будет просмотреть содержимое конкретного элемента <university>, находящегося внутри конкретного элемента <city>. Поиск при этом, естественно, будет гораздо более эффективен, чем нахождение нужной последовательности по всему документу.
В XML документе, как правило, определяется хотя бы один элемент, называемый корневым и с него программы-анализаторы начинают просмотр документа. В приведенном примере этим элементом является <country>
В некоторых случаях тэги могут
изменять и уточнять семантику тех
или иных фрагментов документа, по разному
определяя одну и ту же информацию
и тем самым предоставляя приложению-анализатору
этого документа сведения о контексте
использования описываемых данных. Например,
прочитав фрагмент <city>Holliwood</city> мы можем догадаться,
что речь в этой части документа идет о
городе, а вот во фрагменте <restaurant>Holliwood</
В случае, если элемент не имеет содержимого, т.е. нет данных, которые он должен определять, он называется пустым. Примером пустых элементов в HTML могут служить такие тэги HTML, как <br>, <hr>, <img>;. Необходимо только помнить, что начальный и конечные тэги пустого элемента как бы объединяется в один, и надо обязательно ставить косую черту перед закрывающей угловой скобкой (например, <empty/>;)
Комментариями является любая область данных, заключенная между последовательностями символов <!-- и --> Комментарии пропускаются анализатором и поэтому при разборе структуры документа в качестве значащей информации не рассматриваются.
Если при определении элементов необходимо задать какие-либо параметры, уточняющие его характеристики, то имеется возможность использовать атрибуты эдлемента. Атрибут - это пара "название" = "значение", которую надо задавать при определении элемента в начальном тэге. Пример:
<color RGB="true">#ff08ff</color>
<color RGB="false">white</color>
или
<author id=0>Ivan Petrov</author>
Примером использования атрибутов в HTML является описание элемента <font>:
<font color=”white” name=”Arial”>Black</font>
Для того, чтобы включить в документ символ, используемый для определения каких-либо конструкций языка (например, символ угловой скобки) и не вызвать при этом ошибок в процессе разбора такого документа, нужно использовать его специальный символьный либо числовой идентификатор. Например, < , > " или $(десятичная форма записи),  (шестнадцатеричная) и т.д. Строковые обозначения спецсиволов могут определяться в XML документе при помощи компонентов (entity), о чем мы еще поговорим немного позже.
Инструкции, предназначенные для анализаторов языка, описываются в XML документе при помощи специальных тэгов - <? и ?>;. Программа клиента использует эти инструкции для управления процессом разбора документа. Наиболее часто инструкции используются при определении типа документа (например, <? Xml version=”1.0”?>) или создании пространства имен.
Чтобы задать область документа, которую при разборе анализатор будет рассматривать как простой текст, игнорируя любые инструкции и специальные символы, но, в отличии от комментариев, иметь возможность использовать их в приложении, необходимо использовать тэги <![CDATA] и ]]>. Внутри этого блока можно помещать любую информацию, которая может понадобится программе- клиенту для выполнения каких-либо действий (в область CDATA, можно помещать, например, инструкции JavaScript). Естественно, надо следить за тем, чтобы в области, ограниченной этими тэгами не было последовательности символов ]].
XHTML
XHTML — это основанный на XML язык разметки гипертекста, максимально приближенный к текущим стандартам HTML. XHTML отличается от HTML строгостью написания кода. Если HTML позволял писать практически любые конструкции и браузер их корректно распознавал, то теперь, с появлением XHTML , это стало невозможным. Последний требует строгого соблюдения всех правил, предъявляемых W 3 C . Строгие требования к оформлению XHTML -кода позволяют избежать многих ошибок ещё на стадии написания и отладки.
XHTML — это новый язык, который пришёл на смену старому HTML . Новых версий HTML больше не будет. В итоге все браузеры, как предполагается, перейдут на XHTML (очевидно, что при этом сохранится совместимость со старым HTML , но не более того). XHTML совместим с HTML . Это означает, что даже самые старые браузеры, которые понимают HTML , будут работать и с XHTML . Для проверки правильности написания XHTML-кода существуют программы-валидаторы.
Чем же XHTML 1.0 отличается от HTML ? Существует несколько требований , которые разработчик обязан выполнять:
• в начале документа должен указываться один из возможных DTD ( Document Type Definition ):
• <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/
• <!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/
• <!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/
• в теле XHTML -документа должны обязательно присутствовать следующие тэги: «< html >», «< head >», «< title >» и «< body >»;
• имена тегов и атрибутов должны записываться в нижнем регистре;
• все значения атрибутов должны заключаться в "кавычки";
• все тэги должны закрываться; если у элемента нет закрывающего тэга, следует добавлять в его конец слеш («< br />» или «< br />» — пробел для совместимости со старыми браузерами);
• необходимо соблюдать корректную вложенность тэгов («< b >< i >текст</ b ></ i >» — неверно; следует писать «< b >< i >текст</ i ></ b >»);
• запрещается использовать минимизированные атрибуты (« nowrap » следует заменить на « nowrap = " nowrap "» ); полный список таких атрибутов: checked , compact , declare , defer , disabled , ismap , noresize , noshade , nowrap , multiple , readonly , selected .
• на следующие элементы налагаются ограничения по включению в них других элементов:
• a не может содержать другие элементы a ;
• form не может содержать другие элементы form;
• label не может содержать другие элементы label;
• pre не может содержать img , object , big , small , sub или sup ;
• button не может содержать элементы input, select, textarea, label, button, form, fieldset, iframe или isindex;
• специальные символы в истинном значении должны заменяться на свои эквиваленты:
• « &» на «& ; » ;
• «<» на «<» ;
• «>» на «> ;».
Кроме того, существует ряд необязательных рекомендаций , которые разработчик не обязан выполнять в версии XHTML 1.0, но в последующих версиях этого языка возможно рекомендации перерастут в требования. А именно:
• декларация XML -документа в самом начале кода перед DTD («<? xml version ="1.0" encoding =" windows -1251"?>»);
• наличие атрибута xmlns в элементе html ;
• следование элемента title после тега head ;
• использование атрибута id вместо name ( name считается устаревшим атрибутом);
• наличие атрибута type в элементах подключаемых файлов (таблиц стилей и скриптов);
• отказ от использования атрибута target .
Приведём минимальный код прави
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/
<html xmlns="http://www.w3.org/1999/
<head>
<title> Заголовок </title>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251" />
</ head >
<body>
Содержимое документа
</body>
</html>
Если вставить этот код в файл, сохранить его как « file . html » и открыть через веб-сервер, то вся информация будет получена клиентом как «text/htm l ». То есть, как и обычная HTML -страница. Фактически для браузера это будет не XHTML , а HTML -документ. У XHTML есть свой собственный MIME -тип: «application/xhtml+xml».
MIME — это специальный набор расширений, который указывает программам, как обрабатывать входящую информацию. Изначально MIME -типы были разработаны для почтовых программ, откуда и получили своё название.
Итак, XHTML -данные правильно отдавать клиенту именно в формате «application/xhtml+xml», так как все преимущества, помимо кросс-браузерности (увеличение скорости анализа кода процессором XML , сообщение об ошибках самим браузером и пр.), могут достигаться только в случае, если пользовательский агент поддерживает XHTML и ему сообщается о том, что входящие данные — XHTML -код. Единственное, что надо помнить при отправке XHTML -кода: если браузер понимает XHTML , то только тогда информацию можно отправить как «application/xhtml+xml»; если же нет, то только как «text/htm l ». Список современных клиентов, поддерживающих XHTML : MZ , Opera , NN . IE , к сожалению, пока не понимает «application/xhtml+xml». Проверять, поддерживает ли пользовательский агент нужный MIME -тип можно по исходящему от браузера заголовку «Accept», где содержатся все MIME -типы, известные клиенту. Приведём пример, как это можно сделать с помощью Perl -скрипта:
MIME (Multipurpose Internet Mail Extension) — многоцелевые расширения электронной почты .
#!/usr/bin/perl -w