Несколько версий xalan и xerces

Фон

У нас есть зависимости от нескольких версий Xalan и Xerces в нашей довольно большой системе C++. Это накапливалось годами и не является оптимальным по нескольким причинам.

Сейчас мы переходим с Solaris на Linux и считаем целесообразным свести к минимуму зависимость от третьих сторон.

Мы определили, что нам по-прежнему нужны Xerces 2.8 и Xerces 3.x. И Ксалан 1.х

Целевая платформа — RHEL6.

Проблема

Из репозитория RHEL мы можем получить Xerces 3.0 и Xalan 1.10 (сборка против Xerces 3.0)

Мы установили Xerces 2.8 в /usr/local...

Мы не можем понять, как Xalan работает с Xerces (по ссылке). То есть:

  • Нужны ли нам две библиотеки Xalan, одна связана с 3.x, а другая с 2.8?
  • Можем ли мы иметь одну версию Xalan, скажем, 1.11, которая (по какой-то магии) работает с обеими версиями xerces?

Мы не можем быть единственными с этой проблемой, или мы просто идиоты? (что было бы лучшим сценарием... :))


person Fredrik    schedule 29.01.2014    source источник
comment
Вы могли бы уточнить, что вы говорите о версиях этих продуктов на C++, а не о версиях Java.   -  person Michael Kay    schedule 30.01.2014


Ответы (2)


Из того, что я только что прочитал на xerces.apache.org, Xerces 2.X и Xerces 3.x имеют разные API, и поэтому вам нужно будет связать один ИЛИ другой.

И как вы можете видеть на xalan.apache.org:

«Для библиотеки Xalan-C/C++ 1.11 требуется Xerces-C/C++ XML Parser 3.0 или новее, версия 3.1.1 предпочтительнее», а для Xalan 1.10 требуется Xerces 2.7.0 (вероятно, будет работать с 2.8.0).

Так что да, вам понадобятся две разные версии библиотек Xalan, если вы не можете разрешить свои зависимости только для Xalan 1.11.0, и в этом случае у вас может быть только один установленный Xalan и один Xerces.

person Salsa    schedule 06.02.2014
comment
Поскольку мы не можем избавиться от зависимостей как от Xerces 2.x, так и от 3.x, в итоге мы получили две версии Xalan. К сожалению, мы не можем использовать Xalan 1.10 от REHL, так как он зависит от Xerces 3.0. Итак, теперь у нас есть своя сборка Xalan 1.11 -> Xerces 3.1 и Xalan 1.10 -> Xerces 2.8. Это не идеально, но других вариантов мы не видим. Спасибо за подтверждение - person Fredrik; 02.03.2014

Вероятно, больше всего проблем с xerces + xalan связано с определением xerces символа XML "XMLCh" в Xerces_autoconf_config.hpp (сгенерированный заголовок). Я пытался построить на Windows xerces 3.2.2 и xalan 1.11 и столкнулся с несоответствием типов... Например, DirectoryEnumerator.hpp, struct FindFileStruct, имеет функцию:

const XalanDOMChar* getName() const
{
  return name;
}

имя "имя wchar_t [260];" из corecrt_wio.h, struct _wfinddata64i32_t (это часть Windows...). XalanDOMChar является определением типа "XMLCh".

Почему-то xerces 3.1.1 генерирует XMLCh как "wchar_t", а xerces 3.2.2 - как "char16_t". И у xalan есть код, ориентированный на "wchar_t"...

person Artimosha Artimosha    schedule 14.08.2019
comment
Это исправлено в Xalan 1.12, как указано здесь: issues.apache.org/jira/browse/ ХАЛАНК-773 - person Alex; 21.09.2020