
Библиотека на C для разбора XML, обеспечивающая потоковый разбор с регистрацией обработчиков, поддержку кодировки UTF-16 и включающая справочное руководство.
Это Expat — библиотека на C для разбора XML, начатая Джеймсом Кларком в 1997 году. Expat — это потоковый анализатор XML. Это означает, что вы регистрируете обработчики в парсере перед началом разбора. Эти обработчики вызываются, когда парсер обнаруживает соответствующие структуры в разбираемом документе. Открывающий тег — пример таких структур, для которых можно зарегистрировать обработчики.
Пользователи Windows должны использовать
пакет expat_win32,
который включает предварительно скомпилированные библиотеки, исполняемые файлы и исходный код для
разработчиков.
Expat — это свободное программное обеспечение.
Вы можете копировать, распространять и изменять его на условиях лицензии,
содержащейся в файле
COPYING,
распространяемом с этим пакетом.
Эта лицензия идентична лицензии MIT/X Consortium.
Если вы собираете Expat из выгруженной копии Git-репозитория, вам нужно запустить скрипт, который генерирует configure-скрипт с помощью инструментов GNU autoconf и libtool. Для этого необходимо иметь autoconf версии 2.58 или новее. Запустите скрипт следующим образом:
./buildconf.sh
После этого следуйте тем же инструкциям, что и при сборке из дистрибутива исходников.
Чтобы собрать Expat из дистрибутива исходников, сначала выполните скрипт настройки оболочки в корневом каталоге дистрибутива:
./configure
Существует множество опций, которые можно передать configure (их можно
узнать, запустив configure с опцией --help). Но наиболее
интересная — та, которая задаёт каталог установки.
По умолчанию configure-скрипт настроит установку
libexpat в /usr/local/lib, expat.h в /usr/local/include и
xmlwf в /usr/local/bin. Если, например, вы предпочитаете установить
в /home/me/mystuff/lib, /home/me/mystuff/include и
/home/me/mystuff/bin, вы можете сообщить об этом configure с помощью:
./configure --prefix=/home/me/mystuff
Ещё одна интересная опция — включение поддержки 64-битных целых чисел для номеров строк и столбцов, а также общего байтового индекса:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Однако такая модификация будет нарушающим обратную совместимость изменением ABI и поэтому не рекомендуется для общего использования, например, в составе дистрибутива Linux, а скорее для сборок с особыми требованиями.
После запуска configure-скрипта команда make соберёт
всё, а make install установит всё в соответствующие
каталоги. Обратитесь к Makefile, чтобы узнать о дополнительных
опциях make. Обратите внимание, что у вас должны быть права на запись
в каталоги, куда будут устанавливаться файлы.
Если вы заинтересованы в сборке Expat для предоставления информации
о документе в кодировке UTF-16 вместо UTF-8 по умолчанию, следуйте
этим инструкциям (после выполнения make distclean).
Пожалуйста, обратите внимание, что мы настраиваемся с --without-xmlwf, так как xmlwf не
поддерживает этот режим компиляции (пока):
Массово исправьте файлы Makefile.am, чтобы использовать libexpatw.la в качестве имени библиотеки:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Запустите automake, чтобы перезаписать файлы Makefile.in:
automake
Для вывода UTF-16 в виде unsigned short (и версия/строки ошибок как char)
выполните:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Для вывода UTF-16 в виде wchar_t (включая строки версии/ошибок) выполните:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Примечание: последнее требует libc, скомпилированной с -fshort-wchar.
Запустите make (которое исключает xmlwf).
Запустите make install (опять же, исключая xmlwf).
Использование DESTDIR поддерживается. Работает следующим образом:
make install DESTDIR=/path/to/image
переопределяет заданный в makefile DESTDIR, поскольку приоритет назначения переменных
Примечание: это относится только к самой библиотеке Expat; сборка UTF-16 версий xmlwf и тестов в настоящее время не поддерживается.
При использовании Expat в проекте, использующем autoconf для настройки, вы
можете использовать проверочный макрос в conftools/expat.m4, чтобы определить, как
включить Expat. Для получения дополнительной информации см. комментарии в начале этого файла.
Справочное руководство доступно в файле doc/reference.html в этом
дистрибутиве.