|
Bog BOS: XML - eXtensible Markup Language
|
Последнее изменение текста: 20001202
Скопировано с www.bog.pp.ru: 2024.11.21
Bog BOS: XML - eXtensible Markup Language
Ссылки:
- стандарты
- приложения XML
- информационные сайты и сборники
- редакторы XML
- анализаторы и API
- стили, web publish
- утилиты
- Tidy - на C - коррекция HTML перед преобразованием в XML
- учебная литература
libxml
Библиотека 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. Есть поддержка синонимов кодировок
и добавление своих кодировок.
Установка libxml2-2.2.4 в RH 6.2
-
скопировать у
гномов и развернуть архив
- ./configure
- --prefix=/usr/local
- --with-zlib=директория
- --enable-corba=yes
- --with-buffers=no (?)
- --with-ftp=yes (использование ftp для получения файлов - выключить)
- --with-http=yes
- --with-html=yes
- --with-xpath=yes
- --with-xptr=yes
- --with-iconv=yes (преобразование кодировок)
- --with-debug=yes
- --with-mem-debug=no
- make
- make install (в /usr/local! в /usr лежит старая версия для gnome)
- /usr/local/include/libxml
- /usr/local/share/gnome-xml/html/gnome-xml
- /usr/local/lib
- libxml.la
- libxml.so.2.2.6 (libxml.so.2, libxml.so)(сделать ldconfig -X; /usr/local/lib
добавлена к /etc/ld.so.conf)
- libxml.a
- xmlConf.sh
- /usr/local/bin
- xmllint
- xml-config (посмотреть параметры сборки или поменять директорию; --libs
дает совет по сборке приложений)
- /usr/local/man/man1: xmllint.1, xml-config.1
- /usr/local/man/man4/libxml.4
- /usr/local/lib/pkgconfig/libxml-2.0.pc
- компиляция программ: -I/usr/local/include/libxml -I/usr/local/include
- сборка программ: -L/usr/local/lib -lxml -lz
xmllint имя-файла ... (разбор XML-документа, проверка валидности, выдача
дерева разбора, тестирование)
- --recover (выдать максимально возможный результат для ошибочного документа)
- --noent (подставить значения entities
- --noout (не выдавать дерево разбора)
- --htmlout (оформить дерево в виде html)
- --valid (проверить валидность документа)
- --postvalid (проверить валидность после разбора)
- --dtdvalid URL (проверить валидность после разбора по казанному DTD)
- --compress (сжать вывод)
- --html (рассматривать документ как HTML)
- --nowarning
- --noblanks (поменьше пустых мест в выводе)
- --encode кодировка (вывести в указанной кодировке)
- множество ключей для отладки
Проверка валидности (соответствия DTD):
xmllint --valid --noout servers.xml
Преобразование XSLT:
xsltproc XSLT-файл XML-файл > результат
API (есть вариант для HTML)
- вызов разборщика
- разобрать документ в памяти: xmlDocPtr xmlParseMemory(char *buffer, int
size);
- разобрать документ в файле: xmlDocPtr xmlParseFile(const char *filename);
- разбор маленькими кусочками: xmlCreatePushParserCtxt, xmlParseChunk, xmlFreeParserCtxt
- SAX
- построение дерева: xmlNewDoc, xmlNewDocNode, xmlNewChild, xmlSetProp
- обход дерева: по ссылкам (doc->children и т.п.), xmlDocGetRootElement
- изменение дерева: xmlGetProp, xmlSetProp, xmlStringGetNodeList, xmlNodeListGetString
- сохранение дерева: xmlDocDumpMemory, xmlDocDump, xmlSaveFile
- подставлять/не подставлять entities: xmlSubstituteEntitiesDefault()
- установить внешнюю переменную xmlDoValidityCheckingDefaultValue=1 для включения
валидатора при разборе
- gdome - DOM-интерфейс к libxml
Xerces C++ 1.3.0 for linux
Библиотека 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:
<?xml-stylesheet type="text/xsl" href="имя-xsl-файла"?>
|
Bog BOS: XML - eXtensible Markup Language
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru