Jea*_*eri 3 xslt latex transformation mathml
受这篇文章的启发,我尝试转换MathML示例,如下所示:
<math>
<mrow>
<mfrac>
<mrow><mi>x</mi></mrow>
<mrow><mi>y</mi></mrow>
</mfrac>
</mrow>
</math>
Run Code Online (Sandbox Code Playgroud)
到乳胶使用xsltproc
.首先,我从这里下载了XSLT文件.现在,对于那些不会说MathML的人来说,上面的例子是一个分数:1/2
在我解压缩xslt文件并创建MathML文件(input.mml)后,我有以下文件:
$ ls
README cmarkup.xsl entities.xsl glayout.xsl input.mml mmltex.xsl scripts.xsl tables.xsl tokens.xsl
Run Code Online (Sandbox Code Playgroud)
所以,当我这样做的时候
$> xsltproc mmltex.xsl input.mml
x
y
Run Code Online (Sandbox Code Playgroud)
哪个不正确,它不是乳胶分数.有什么建议我可能在这里做错了吗?
仅将文本内容作为转换的结果通常表示样式表中没有应用任何模板.然后,内置模板单步执行并跳过除文本节点之外的所有内容,这些文本节点将发送到输出.
查看您使用的样式表,样式表假定MathML输入位于命名空间中.例如,查看我从mmmltext.xsl样式表中获取的模板匹配:
match="m:math[not(@mode) or @mode='inline'][not(@display)] | m:math[@display='inline']">
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,元素前缀用m:
,更有趣的是,m:
被声明为
xmlns:m="http://www.w3.org/1998/Math/MathML"
Run Code Online (Sandbox Code Playgroud)
另一方面,您显示的输入文件不在任何名称空间中.尝试以下输入文件:
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mfrac>
<mrow><mi>x</mi></mrow>
<mrow><mi>y</mi></mrow>
</mfrac>
</mrow>
</math>
Run Code Online (Sandbox Code Playgroud)
在上面的XML文档中,我已经在元素上声明了一个默认命名空间math
.它的所有子元素也都采用这个命名空间.
然后,输出包含:
\frac{x}{y}
Run Code Online (Sandbox Code Playgroud)
正如 W3C页面所说:
[命名空间]的典型用法是:
<math xmlns="http://www.w3.org/1998/Math/MathML">