用于将OMML转换为MathML的算法或代码

时间:2012-12-26 13:06:33

标签: algorithm mathml omml

我正在使用Flash或Flex将Word doc标准公式(OMML)转换为MathML,请通过提供简单的算法或代码片段来帮助我。

提前致谢, 摩尼

2 个答案:

答案 0 :(得分:1)

有一个XSLT 1样式表可以将Microsoft作为Word Distribution的一部分提供转换,它可以处理将MathML放在Word中的剪贴板上。通常安装为

之类的东西
c:/Program Files (x86)/Microsoft Office/Office14/OMML2MML.XSL

上讨论了早期版本

http://dpcarlisle.blogspot.co.uk/2007/04/xhtml-and-mathml-from-office-20007.html

答案 1 :(得分:0)

这里是几天前我正在研究的C#课的片段......我知道为时已晚......但是为了减少未来的痛苦。

我认为Action Script

并没有太大的不同

文件OMML2MML.xsl位于%ProgramFiles%\Microsoft Office\Office12\,如@David所述,xsl文件用于将MathML放在Word中的剪贴板上,并将OMML转换为MML。

public static string OMML(string omml)
{
    XslCompiledTransform xslTransform = new XslCompiledTransform();
    xslTransform.Load("OMML2MML.xsl");

    using (XmlReader reader = XmlReader.Create(new StringReader(omml)))
    {
        using (MemoryStream ms = new MemoryStream())
        {
            XmlWriterSettings settings = xslTransform.OutputSettings.Clone();

            // Configure xml writer to omit xml declaration.
            settings.ConformanceLevel = ConformanceLevel.Fragment;
            settings.OmitXmlDeclaration = true;

            XmlWriter xw = XmlWriter.Create(ms, settings);

            // Transform our OfficeMathML to MathML
            xslTransform.Transform(reader, xw);
            ms.Seek(0, SeekOrigin.Begin);

            StreamReader sr = new StreamReader(ms, Encoding.UTF8);
            string MathML = sr.ReadToEnd();
            return MathML;
        }
    }
}