我正在使用 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,因为如果您查看“原始 MathML”,您会得到:
<math>
<mo> < <mo>
</mo></mo></math>
简而言之,您确实需要抵制无效 XML 的提供者,否则您将发现自己在未来处于一个更加棘手的境地。