【发布时间】:2011-05-21 16:57:16
【问题描述】:
我想使用 xslt 从 Mathml 输入中输出数学表达式。我的变换一定有什么错误。我不知道如何纠正它。你可以帮帮我吗?我应该使用参数还是变量来控制它? xml:
<?xml version="1.0" encoding="UTF-8"?>
<math>
<apply>
<eq/>
<apply>
<plus/>
<apply>
<power/>
<ci>x</ci>
<cn>2</cn>
</apply>
<apply>
<times/>
<cn>2</cn>
<ci>x</ci>
</apply>
<cn>2</cn>
</apply>
<cn>0</cn>
</apply>
</math>
这是我的 xsl:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="math">
<xsl:apply-templates select="apply"/>
</xsl:template>
<xsl:template match="apply">
<xsl:sequence select="name(element()[1]),'('"/>
<xsl:apply-templates select="apply">
</xsl:apply-templates>
<xsl:sequence select="element()[2],','"/>
<xsl:sequence select="element()[3],')',','"/>
</xsl:template>
</xsl:stylesheet>
结果应该是:
eq(plus(power(x,2),times(2,x),2),0)【问题讨论】:
-
@empo,我想知道您的编辑是否应该包含在答案而不是问题中;感觉就像你知道自己在做什么 :) 但我不知道 为什么 你在做这些事情。 :)
-
@sarnold:它们应该是安全的编辑,可以明确问题。我已将缺少的代码部分添加到声明使用的版本的 xslt 中。我设置了 2.0 版本,因为 OP 使用的是 XSLT 2.0 的元素和功能。
-
@pst,
1.0在 @empo 的 first 编辑中,@ZAWD 的原始帖子未提供。 :) -
是的,抱歉大家做了一些更改而不是一个 :) 并感谢您接受它们。
-
好问题,+1。请参阅我的答案以获得完整、最简单和最短的(目前)解决方案。 :)