【发布时间】:2011-07-20 11:05:05
【问题描述】:
我正在使用 MathML DTD 使用 System.Xml.Linq. 解析 MathML 虽然普通的 MathML 内容可以很好地识别,但 DTD 中包含的 MMLEXTRA 会被忽略并且出现错误。这是我正在使用的代码:
if (!string.IsNullOrWhiteSpace(mathML))
{
try
{
const string preamble =
"<!DOCTYPE mml:math PUBLIC \"-//W3C//DTD MathML 2.0//EN\"\n" +
"\"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd\" [\n" +
"<!ENTITY % MATHML.prefixed \"INCLUDE\">\n" +
"<!ENTITY % MATHML.prefix \"mml\"> \n" +
"]>";
var parsed = Parser.Parse(preamble + Environment.NewLine + mathML);
textEditor.Text = printed;
lblStatus.Caption = "MathML successfully translated.";
}
catch (Exception e)
{
lblStatus.Caption = "Cannot translate text. " + e.Message;
}
}
解析器只执行XDocument.Load()。任何帮助表示赞赏!
【问题讨论】:
-
@Kirk
Parser只是一个基本上做XDocument.Load的组件。假设此调用将直接解析所有 MathML 引用,但事实并非如此。
标签: c# xml linq-to-xml dtd mathml