html — XercesLib не может разобрать недопустимый XMML

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

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

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

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

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

0

Решение

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

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

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

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]