假设我有一个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>∑</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
时,它会错误地声明未声明实体∑
。显然我希望显示Σ符号。当我使用数字实体∑
时,它按预期工作,但查找每个数学符号的数字实体是一种痛苦。
我尝试使用<xsl:output>
标记尝试不同的文档类型,例如doctype-system="http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"
,但到目前为止还没有运气。
答案 0 :(得分:1)
XSLT需要格式良好的XML作为输入,并且引用未声明实体的文件格式不正确。如果您要在XML文档中使用MathML实体引用,则需要引用包含其定义的DTD。