使用XSLT的XML到XHTML:使用诸如Σ(这是一个MATHML实体)之类的实体

时间:2012-05-31 11:51:41

标签: xslt xhtml mathml

假设我有一个XML文件test.xml,其中包含(除其他外)一些MATHML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="template.xsl"?>
<equation>
    <math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
        <row>    
            <!-- Using a MATHML entity name here! -->  
            <mi>&Sum;</mi>
        </row>
    </math>
</equation>

我想使用浏览器XSLT引擎将test.xml转换为XHTML + MATHML并显示它。我的XSLT文件template.xsl如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/equation">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <body>
            Here is an equation:
            <xsl:copy-of select="."/>
        </body>
    </html>
</xsl:template>
</xsl:stylesheet>

当我在浏览器中打开test.xml时,它会错误地声明未声明实体&Sum;。显然我希望显示Σ符号。当我使用数字实体&#8721;时,它按预期工作,但查找每个数学符号的数字实体是一种痛苦。

我尝试使用<xsl:output>标记尝试不同的文档类型,例如doctype-system="http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd",但到目前为止还没有运气。

1 个答案:

答案 0 :(得分:1)

XSLT需要格式良好的XML作为输入,并且引用未声明实体的文件格式不正确。如果您要在XML文档中使用MathML实体引用,则需要引用包含其定义的DTD。