XercesLib не в состоянии проанализировать недействительный XMML

Я использую библиотеку XercesLib C++ для разбора HTML-файла. В моем случае HTML-файл может иметь угловые скобки внутри содержимого тега.

<math>
<mo> < <mo>
</math>

Теперь XercesLib не в состоянии проанализировать содержимое тега mo. Он выдает пустой вывод, если в каком-либо теге есть не экранированные символы.

Я не могу сказать источнику предоставить экранированный входной файл, потому что тот же файл может быть проанализирован некоторой библиотекой JavaScript (MathJAx) без каких-либо проблем.

Как исправить эту проблему в XercesLib?

1 ответ

Согласно комментариям, это просто недопустимый MathML (или даже допустимый XML).

То, что MathJax может разобрать это, следует считать удачей, а не особенностью MathJx. Из их документов:

Поддержка MathML все еще находится в активной разработке, поэтому некоторые теги еще не реализованы, а некоторые функции еще не полностью разработаны, но ожидаются.

Было бы разумно полагать, что какая-то будущая версия MathJax больше не будет поддерживать приведенный вами пример MathML, и я сомневаюсь, что они явно будут поддерживать недействительный XML.

Кстати, MathJax на самом деле не анализирует XML; к нему применяется XSLT-преобразование. Он также манипулирует входным XML, потому что если вы просматриваете "Original MathML", вы получите:

<math>
<mo> &lt; <mo>
</mo></mo></math>

Короче говоря, вам действительно нужно отодвинуть провайдера недопустимого XML, иначе вы окажетесь в более сложной ситуации в будущем.

Другие вопросы по тегам