WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » Программирование на PHP. Работа с XML. SAX, DOM - краткое введение

Программирование на PHP. Работа с XML. SAX, DOM - краткое введение


Дата публикации: 12-01-2008

Александр Грималовский, providerZ.ru

 

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

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

Работа с XML-данными в PHP

 

Общая информация об XML

 

XML (eXtensible Markup Language, расширяемый язык разметки) - достаточно новая технология (первый вариант спецификации XML увидел свет в 1998-м году) и поэтому многим она либо незнакома, либо знакома лишь поверхностно. Но самое главное - как правило люди не видят способов применения XML в своей повседневной работе. Из-за этого многие люди, особенно не являющиеся профессиональными разработчиками (т.к. по последним опросам более половины профессоналов используют XML-технологии в своей работе) обходят стороной эту технологию стороной, пытаясь взамен разработать что-то свое.

Поэтому прежде, чем начать описание того, как работать с XML-данными в PHP и как использовать их в ваших программах, необходимо, хотя бы вкратце описать, что же такое XML. Хочу сразу предупредить вас, что подробное рассмотрение непосредственно XML-технологий выходит за рамки нашего повествования и всем, кто захочет узнать больше об XML как таковом - должен будет сделать это самостоятельно. В интернете есть огромное количество информации об XML, но начинать нужно с самого полного и правильного документа, касающегося XML - его спецификации (кстати, есть и русские переводы этой спецификации). Кроме того советую вам посетить сайт http://xmlhack.ru/ - там вы найдете множество интересной информации об XML на русском языке и ссылки на другие ресурсы сети, посвященных XML.

Итак, что же такое XML? Как уже было сказано ранее - это расширяемый язык разметки. Под термином "язык разметки" понимается любой язык, который позволяет определять назначение, свойства, способ отображения и т.п. частей документа путем добавления в текст документа "тегов" - специальных конструкций, распознаваемых парсером языка. Чтобы не запутать вас этим ужасным определением приведу простой и всем понятный пример - язык HTML, который является ничем иным как языком разметки (HTML - Hyper Text Markup Language, язык разметки гипертекстовых документов). Однако при всей своей мощи язык HTML является все-таки ограниченным, поскольку определяет фиксированный набор тегов, каждый из которых может использоваться лишь для одной, предназначенной ему цели, что, согласитесь, не подходит в качестве метода для решения любой задачи представления информации. Хотя использование CSS1 и особенно CSS2 отчасти позволяет расширить рамки этого языка по крайней мере в части его визуального отображения, но этот метод также имеет свои недостатки:

  1. Возможность задания фактически любого визуального отображения для любого тега значительно осложняет работу программ, занимающихся анализом HTML документов. Например роботы поисковых машин в общем случае уже не могут утверждать, что тег <h1> имеет больший вес, чем тег <p> в данном конкретном документе, потому что используя CSS я могу добиться прямо противоположных результатов визуального отображения того же документа.

  2. Реализация CSS (и особенно CSS2) в современных браузерах оставляет желать много лучшего. Наилучших результатов здесь добились авторы Gecko - движка для браузеров, на котором построены браузеры Netscape 6, Mozilla, Galeon и другие. Opera 6 тоже выглядит достаточно хорошо в плане поддержки стандартов CSS1 и CSS2, Internet Explorer на фоне их выглядит довольно бледно - у него наблюдаются явные проблемы с реализацией некоторых частей спецификации CSS2 (что, впрочем, неудивительно - ребята из Редмонда всегда отличались оригинальным взглядом на вопрос поддержки в своих программах спецификаций, в разработке которых они же сами и принимали непосредственное участие).

И помимо всего этого у HTML есть еще один огромный недостаток - используя этот язык можно описать, как должен выглядеть документ, но нельзя описать то, какая информация содержится в этом документе. Это порождает целую массу проблем. Одной из самых серьезных можно назвать проблему поиска информации, потому что те же поисковые машины вынуждены лишь делать предположения о том, что документ, который они нашли в той или иной мере соответствует запросу. Но как ни хороши алгоритмы работы современных поисковых машин - в результатах их работы все равно много "мусора".

Язык XML появился на свет во многом благодаря существованию описанных выше проблем, когда стало ясно, что необходим язык, настолько же простой и понятный как HTML, но способный хранить в себе любую информацию в структурированном виде, имеющий синтаксис, который бы позволил легко писать программы для работы с документами XML, имеющий встроенные средства проверки корректности структуры и информации, описанной в документе и другие параметры, облегчающие создание, обработку и использование данных, описанных в документах XML. Нужно сказать, что к моменту создания XML подобный язык уже существовал (это язык SGML - Standard Generalized Markup Language), но этот язык настолько сложен, что широкое использование его значительно затруднено. Надо сказать, что со своей задачей разработчики XML справились просто превосходно - спецификация языка XML 1.0 соответствует всем требованиям. Однако перейдем от слов к делу и посмотрим на пример XML-документа, например, описывающего книгу:

<book isbn="0395489326">
    <author>John R. R. Tolkien</author>
    <title>Lord of the rings</title>
    <category>Fantasy</category>
    <price currency="USD">9.95</price>
</book>

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

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

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Pixadel:

    "Хорошо, Java, ВОЗМОЖНО, хороший пример того как должен выглядеть язык. Но тогда программы на Java — это хороший пример как НЕЛЬЗЯ писать программы."

    Опрос

    Какими социальными сетями Вы пользуетесь?

    Vkontakte.ru
    Одноклассники
    Мой Мир - mail.ru
    Google Plus
    Facebook
    ЖЖ
    Другие
    Не пользуюсь