Я использую библиотеку XercesLib c ++ для разбора HTML-файла.
В моем случае HTML-файл может иметь угловые скобки внутри содержимого тега.
<math>
<mo> < <mo>
</math>
Теперь XercesLib не в состоянии проанализировать содержимое тега mo. Он выдает пустой вывод, если в каком-либо теге есть не экранированные символы.
Я не могу сказать источнику предоставить экранированный входной файл, потому что тот же файл может быть проанализирован некоторой библиотекой JavaScript (MathJAx) без каких-либо проблем.
Как исправить эту проблему в XercesLib?
Согласно комментариям, это просто недопустимый MathML (или даже допустимый XML).
То, что MathJax может разобрать это, следует считать удачей, а не особенностью MathJx. От их документы:
Поддержка MathML все еще находится в активной разработке, поэтому некоторые теги еще не реализованы, а некоторые функции еще не полностью разработаны, но ожидаются.
Было бы разумно полагать, что какая-то будущая версия MathJax больше не будет поддерживать приведенный вами пример MathML, и я сомневаюсь, что они явно будут поддерживать недействительный XML.
Кстати, MathJax на самом деле не анализирует XML; к нему применяется XSLT-преобразование. Он также манипулирует входным XML, потому что если вы просматриваете «Original MathML», вы получите:
<math>
<mo> < <mo>
</mo></mo></math>
Короче говоря, вам действительно нужно отодвинуть провайдера недействительного XML, иначе вы окажетесь в более сложной ситуации в будущем.
Других решений пока нет …