0

假设我有一个 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"但到目前为止没有运气。

4

1 回答 1

1

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

于 2012-05-31T15:49:53.597 回答