Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #52, МАРТ 2005 г.

БД и XML

Ижевский Виталий Григорьевич

Спецвыпуск: Хакер, номер #052, стр. 052-066-4


xPath - текст выражения xPath.

При использовании в XML DOM некоторые выражения XPath интерпретируются неправильно. Для исправления этой ошибки нужно указать после создания COM-объекта вот это:

xmld.setProperty('SelectionLanguage','XPath');

xmld - название созданного COM-объекта. В документации говорится, что параметр SelectionLanguage установлен в XPath по умолчанию.

Проблемы с языком

Язык XML - мультинациональный, но количество кодировок и поддерживаемых языков полностью остается на совести разработчиков парсеров. Для обозначения кодировки символов в заголовке документа нужно написать <?xml version=”1.0” encoding=”windows-1251”?>, где windows-1251 - используемая кодировка. Сейчас стало модным использовать кодировку UTF-8. Например, парсер libxml2 автоматически перекодирует в UTF-8 все загруженные файлы, поэтому при использовании DOM-функций это нужно учесть и использовать функции перекодировки, которые, кстати, есть в этой библиотеке. Следует заметить, что windows-1251 - это только одно из указаний парсеру. Возможно, нужно будет писать win1251 или win-cur - опять же, на совести разработчиков парсеров.

В MSXML одновременно можно использовать только один язык и указывать его можно только один раз. То есть если в xml- и xsl-документе несколько раз будут указываться кодировки (пусть даже одинаковая), будет выдано сообщение об ошибке. Оптимально загружать сначала xml-документ, а потом уже и xsl-шаблон (но уже без указания в нем кодировки). Шаблон будет правильно загружен и обработан. А вот парсер libxml2 принимает все без исключения кодировки и преобразует их в UDF-8.

Как видишь, проблема с адресной строкой легко решается. Данный пример можно усовершенствовать добавив кеширование поиска. В MSXML существует собственный кеш, но управлять им нельзя. В LibXML, напротив, ничего кеширующего замечено не было, зато есть методы прямого доступа к памяти libXML.

Реляционность vs XML

Можно найти много общего между реляционным способом обработки данных и методами, которые предлагают технологии XML. Более того, практически все то, что может SQL (имеется в виду оператор select), умеет и XML. И даже больше. Я не хочу сказать, что технологии XML придут на смену реляционным. Наоборот: именно при их связке можно оценить мощь XML.

Хотя языки запросов, разработанные для XML (это в первую очередь XQuery), являются более мощными, чем SQL, структура реляционных таблиц отличается от структуры XML, так как XML в первую очередь создан для описания древовидных, а не линейных структур. Основное преимущество реляционных баз - это скорость работы с большими объемами данных. Для поиска по XML-документу его нужно полностью загрузить (разобрать) в оперативную память машины. Представь себе объем данных XML в 500 Мб. Конечно, при современном развитии вычислительной техники это не такая уж большая проблема (недостаток ума программиста компенсируется гигагерцами и гигабайтами), но в целом возможно оперировать с XML-данными только сравнительно небольшого размера.

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

Назад на стр. 052-066-3  Содержание  Вперед на стр. 052-066-5