БД и 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 – это мощная технология, которая не заменит реляционную, но улучшит ее возможности. |