Библиотека C для проекта gnome (LGPL & W3C IPR - похож на лицензию
XWindows ). Анализатор XML и HTML в различных режимах (pull, push) с проверкой
валидности по DTD или самому документу. Реализован XPath (не весь)
и Xpointer. Переход от DTD к XMLSchema не сделан. Позволяет загружать внешние
ресурсы по ftp/http. Внутреннее представление близко к DOM. Есть SAX-интерфейс
(SAX - Simple API for XML; меньше возможностей, чем DOM, но требует фиксированный
размер памяти независимо от размеров документа; при использовании DOM -
требуется памяти в 4 больше размера документа). Загрузка PUBLIC entity
не работает (но можно добавть свой механизм каталогов). Поддерживает сжатие
на лету при вводе/выводе.
Поддержка i18n. Внутри все в utf-8. xmlChar - это байт. Конец строки
- нуль. Для нестандартных кодировок при вводе/выводе используется iconv()
- см. iconv.h. Информация о кодировке присоединяется к узлу документа.
xmlSaveFile() сохраняет файл в исходной кодировке, xmlSaveFileTo() и xmlSaveFileEnc()
- в указанной. Аналогично для HTML. Есть поддержка синонимов кодировок
и добавление своих кодировок.
Библиотека C++ для Apache. Русский не любит (может через ICU?).
XML4C 3.3.0 - Xerces 1.3.0 и ICU (International
Components for Unicode) 1.6 от IBM.
Установка Xerces C++ 1.3.0 в RH 6.2 из бинарников (без ICU):
скопировать и развернуть архив
установить XERCESCROOT
установить ICU (а сам ICU у вас есть?)
добавить в PATH поддиректорию $XERCESCROOT/bin
добавить в LD_LIBRARY_PATH $XERCESCROOT/lib
сборка примеров: cd samples; ./configure; make (они попадают в bin)
Установка XML4C 3.3.0 в RH6.2 из бинарников
скопировать и развернуть архив
в lib лежат (установить их в /usr/lib)
libicu-uc.so (меньше, чем из комплекта ICU)
libicudata.so (меньше, чем из комплекта ICU)
libxerces-c1_3.so
Xalan C++ 1.0 for linux
Утилита командной строки для XSLT (называется TestXSLT). На C++. Требует
разделяемой библиотеки xerces (libxerces-c1_3.so) и xalan (libxalan-c1_0.so).
Для интернационализации хочет ICU 1.6 (а так есть UTF-8 и UTF-16). Для
сборки своих программ тебуются .hpp из пакетов xerces и xalan.
Установка Xalan C++ 1.0 в RH 6.2 из бинарников (без ICU)(впрочем, исходники
в том же пакете):
скопировать и развернуть архив (xerces здесь же)
xml-xalan/c/bin к PATH
xml-xalan/c/lib к LD_LIBRARY_PATH
а еще проще (но неправильно :) переслать libxerces-c1_3.so и libxalan-c1_0.so
в /usr/lib, TestXSLT в /usr/local/bin (можно переименовать во что-нибудь
посимпатичнее)
TestXSLT
-in URL-входного-XML
-xsl URL-XSLT
-out выходной-файл
-escape escape-символы (по умолчанию - < > & ' ")
-eer (развертывать сущности)
-q (тишина)
-qc (без предупреждений)
-v (версия)
-indent число (сколько пробелов отсупать для красивого вывода дерева)
-validate
-tt (трассировка шаблонов)
-tg (трассировка событий генерации дерева)
-ts (трассировка событий селекции)
-xml (результат в XML-формате) (-nh: без заголовка)(-stripcdata: удалять
скобки вокруг CDATA)(-escapecdata: удалять скобки вокруг CDATA и escape)
-text (результат в текстовом формате)
-html (результат в HTML)(-stripcdata: удалять скобки вокруг CDATA)(-escapecdata:
удалять скобки вокруг CDATA и escape)
-dom (преобразовать в DOM, затем форматировать в XML)
-param имя выражение (подстановка параметров, символьные строки д.б. в
кавычках - иначе рассматриваются как числа - и не содержать кавычек)
Просмотр в браузере
Для просмотра XML файла в браузере необходимо задать стиль преобразования
XML в HTML или XHTML сразу после указания DTD: