Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Язык XML

Источник: realcoding.net

[1 страница]
Предлагаю сразу определиться с аббревиатурой. «XML» расшифровывается как «Extensible Markup Language» (расширенный язык разметки), отсюда смело можно сделать вывод, что это потомок HTML. Резонный вопрос: чем же не устраивал разработчиков HTML и что послужило толчком для создания нового языка? Достаточно вспомнить о предназначении HTML: визуальное представление данных. XML же разрабатывался для их структурирования, на что его предок рассчитан не был. HTML концентрируется на отображении данных и их внешнем виде, а XML — на описании данных и их структуре. Отсюда следует, что XML не является заменой HTML. Перед этими языками ставятся абсолютно разные задачи, хотя внешний вид кода схож.

В прагматическом плане коротко определить XML можно как кроссплатформенное, программно- и аппаратно-независимое средство для передачи информации.

Как и его предок, новый язык («новый» — в сравнении с HTML, так как XML был разработан года три назад) имеет свои тэги (tags), называемые нодами. Разница лишь в том, что HTML имеет четко определенные тэги (<a>, <p>, <h1> и т.д.), новые тэги появляются лишь по воле разработчиков стандартов и браузеров. В XML совсем другая картина: количество предустановленных (служебных) тэгов минимизировано, и программист волен использовать собственные тэги и собственную структуру документа для хранения данных.

Рассмотрим простой пример. Мы имеем стопку книг, которую нам необходимо структурировать (т.е. разложить по полочкам). Что нам нужно для характеристики книги? Ее автор, название, год издательства. Наш XML-документ будет выглядеть следующим образом:

<?xml version="1.0" encoding="windows-1251"?>
<library>
<book>
<author>А. Конан-Дойль</author>
<title>Шерлок Холмс</title>
<year>1996</year>
</book>

<book>
<author>Л. Толстой</author>
<title>Анна Каренина</title>
<year>2001</year>
</book>
</library>

Заметьте, в этом примере нигде не указано, как нужно отображать информацию (каким цветом, шрифтом, размером шрифта и т.п.), а лишь показана структура документа: имеется библиотека (<library>), в ней лежат книги (<book>), характеристиками которых являются автор (<author>), название (<title>) и год издательства (<year>).

Предлагаю разобраться с использованием XML.

В классической HTML-разметке информация хранится внутри .html-файла. Когда нам необходимо что-то изменить, мы должны работать одновременно и с данными, и с правилами их отображения, что довольно неудобно. XML решает эту проблему так: данные мы можем хранить в одном файле (XML), а правила их представления — в другом (HTML). Однако XML позволяет хранить данные и внутри HTML-файла — в островках данных (data islands). Тем не менее, информация по-прежнему структурирована и отделена от правил визуального представления.

XML позволяет обмениваться информацией несовместимым системам. На сегодня существует множество стандартов хранения информации в разных операционных системах и базах данных, что не позволяет обмениваться информацией в разных системах. XML успешно решает эту проблему.

Помимо того, XML хранится в обычных текстовых файлах, что позволяет разработчикам различных языков программирования и операционных систем создавать разные приложения на основе одного стандарта, доступного всем.

Однако не стоит думать, что XML делает все что угодно. Он лишь дает возможность хранить данные, а управлением данными занимаются языки программирования.

Вернемся к нашему примеру. Прежде чем создать XML-документ, необходимо уяснить принципы создания правильно сформированных XML-документов (well-formed).

Каждый документ должен сообщать, что за тип данных он содержит. Для того чтобы обработчик (программа, анализирующая документ, — в нашем случае браузер Internet Explorer 5+) правильно обрабатывал XML-документ, первая строка указывает, что документ сформирован по версии XML 1.0 и имеет кодировку windows-1251. Следующая строка является корневым, первичным элементом документа ( root element), является обязательным компонентом и сообщает разработчику, что содержит этот документ (в нашем случае <library> говорит нам, что мы имеем дело с библиотекой).

Не все элементы языка HTML требуют закрывающего тэга (<br>, <hr> и т.п.) Синтаксис XML же требует обязательного закрытия тэгов. Хотя есть и исключения: первая строчка нашего примера не имеет закрывающего тэга. Это объясняется тем, что эта строка не выступает частью документа и информации, а является заголовком.

XML-тэги регистрозависимы. Т.е. тэги <author> и <Author> будут двумя разными тэгами; соответственно, оба требуют закрывающих тэгов, идентичных открывающим, иначе ошибка.

Так как XML предназначен для структурирования данных, естественным условием является четкость вложения тэгов. Если в HTML можно было написать <b><i>Текст</b></i>, то XML требует четкой вложенности: <b><i>Текст</i></b>, иначе ошибка.

Как уже упоминалось, XML-документ должен содержать корневой элемент (тэг), в нашем случае это <library>.

Как и в HTML, в XML тэги могут иметь атрибуты. Разница лишь в том, что значения атрибутов должны обязательно заключаться в кавычки (<book language=“rus”>, но не <book language=rus>), иначе ошибка.

Одновременно недостатком и преимуществом HTML была его способность игнорировать двойные пробелы: если мы напишем «Это мой текст», то в HTML он воспримется как «Это мой текст». В XML двойные пробелы не игнорируются.

Зато по части комментариев к коду в XML ничем не отличается от предка (<!--Комментарий-->).

Бывает, что необходимо хранить специфическую информацию (например, программный код), содержащий значительное число спецсимволов (<, >, &, ‘, “). Конечно, можно заменять эти символы на escape-последовательности (&lt;, &gt;, &amp;), однако это неудобно, если нужно хранить целые функции. В XML можно заключать необходимые данные в конструкцию <![CDATA[…]]>. Информация, которая хранится в этой секции, не обрабатывается интерпретатором, потому ошибок не вызывает:

<script>
<![CDATA[
function doThis (a, b) {
if (a<b && a<0) {
  return 1
}
else {
  return 0
}
}
]]>
</script>

Примечательно, что XML-документы могут дополняться, и это не влияет на работу программы, обрабатывающей их. Если наша программа выводит нам автора и название книги, и мы добавим в XML-документ еще одну характеристику книги (например, количество страниц — <pages></pages>), это никак не отразится на работе программы, ведь по-прежнему в характеристике книги будут присутствовать нужные нам тэги — <author> и <title>.

В HTML мы имели кое-какое представление о взаимосвязях между тэгами — например, <title> должен был содержаться внутри тэга <head>. Так как XML имеет четко определенную структуру, взаимосвязи также разграничиваются и характеризуют родительские и дочерние элементы. В нашем примере тэг <book> является дочерним для тэга <library> и родительским для тэгов <author>, <title>, <year>.

Как и в HTML, в XML существует понятие содержимого тэгов, только в более разграниченном виде. В HTML мы могли охарактеризовать тэг <a href=” http://www.site.com”>Мой сайт</a> как тэг <а>, который имеет атрибут href со значением http://www.site.com и содержимым тэга Мой сайт. В XML речь идет о четырех типах содержимого: элементное (данный элемент (тэг) содержит другие элементы (тэги)), смешанное (тэги и текст), простое (текст) и пустое (тэг содержит только атрибуты и не имеет содержимого — <a href=“ http://www.site.com ”></a>). Если мы имеем дело с тэгами, которые не имеют содержимого, для оптимизации кода лучше закрывать такие тэги прямо в открывающем тэге (<book language=”rus”/> вместо <book language=”rus”></book>).

Так как XML дает разработчику право самостоятельно устанавливать тэги, существуют простые правила задания их имен:

• имя тэга может содержать буквы, цифры и другие символы, кроме пробела;

• имя не может начинаться с цифры или знака пунктуации;

• имя не может начинаться со слова XML.

Также не следует использовать знак -, так как в некоторых случаях это может вызвать ошибку программы, которая обрабатывает XML-документ.

XML позволяет именовать тэги не только латинскими буквами, однако я бы не рекомендовал пользоваться этой возможностью.

На начальном этапе использования XML может возникнуть вопрос, зачем использовать вложенные тэги, когда есть атрибуты? К примеру, можно было записать нашу библиотеку так:

<?xml version="1.0" encoding="windows-1251"?>
<library>
<book author=”А. Конан-Дойль” title=”Шерлок Холмс” year=”1996”/>
</library>

Да, это сокращает код, однако необходимо помнить, зачем мы за это взялись — затем, чтобы структурировать информацию. Такая запись не дает наглядного представления о структуре данных, не дает возможности хранить больше одного значения в атрибуте (в отличие от дочерних элементов), имеет худшую расширяемость.

Однако не стоит вдаваться в крайности и с дочерними элементами. Необходимо продумать структуру и обоснованно использовать и атрибуты, и дочерние элементы.

Итак, мы создали наш первый XML-документ (файл с расширением .xml). Как его просмотреть? Нет ли в нем ошибок? Все предельно просто: необходим IE 5+ и двойной щелчок на XML-файле. Если документ сформирован без ошибок, он отобразится в браузере, вы сможете видеть код с подсветкой синтаксиса и возможностью разворачивать/сворачивать дочерние элементы. Если же в коде допущены ошибки, вместо документа будет выдано сообщение об ошибке.

Перед тем как говорить о манипуляциях с XML-документом, окончательно определимся с его структурой. Вот конечный вид нашего файла:

<?xml version="1.0" encoding="windows-1251"?>
<library>
<book pages=“843”>
<author>А. Конан-Дойль</author>
<title>Шерлок Холмс</title>
<year>1996</year>
</book>

<book pages=“457”>
<author>Л. Толстой</author>
<title>Анна Каренина</title>
<year>2001</year>
</book>
</library>

В примерах мы будем использовать внешний XML-файл, однако стоит сказать пару слов про «островки данных» (data islands). С их помощью дается возможность хранить XML-данные прямо в HTML-документе. Для этого XML-структура должна быть заключена в тэги <xml id="library"></xml>, где атрибут id используется для идентификации «островка» и использования его содержимого. «Островки» можно подгружать и из внешних файлов: <xml id="library" src="library.xml"></xml>. Интересным решением при управлении XML-данными видится возможность слияния с HTML-правилами отображения информации. В следующем примере показана возможность представления данных нашей библиотеки:

<html>
<body>
<xml id="library " src="library.xml"></xml>

<table border="1" datasrc="# library">
<tr>
<td><span datafld="author"></span></td>
<td><span datafld="title"></span></td>
<td><span datafld="year"></span></td>
</tr>
</table>

</body>
</html>



Похожие статьи:
- Слежение за контентом на динамических сайтах
- Регулярные выражения
- Оптимальное использование MySQL
- SSI в примерах
- Кроссбраузерное выравнивание по центру (table height=100%)
- Советы дилетанта или как сделать полноценный корпоративный сайт.
- Язык XML
- PHP в примерах
- Табличная вёрстка
- Исследование поисковых систем
- MySQL против PostgreSQL
- Hackers Manifesto
- Резервное копирование баз MySQL


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]