我正在使用 XSLT 2.0 程序来处理一些 MathML 文档。在那些 MathMLs 中,有像⁡
and之类的实体⁢
,这给了我“实体未定义”的错误。有没有一种方法可以在不加载 MathML 模式的情况下处理具有这些实体的文档?(因为 Saxon-HE 不能使用xsl:import-schema
……)
为了清楚起见,我不需要在我的 XSLT 中使用实体。我需要处理具有它们的 XML。
MathML 有一个实体文件,如下所示:
<!ENTITY AElig "Æ" ><!--LATIN CAPITAL LETTER AE -->
<!ENTITY AMP "&#38;" ><!--AMPERSAND -->
<!ENTITY Aacute "Á" ><!--LATIN CAPITAL LETTER A WITH ACUTE —>
...
也许我可以以某种方式利用它?
更新:多人提到输入文档应该有正确的DTD。所以这是一个最小的例子:
XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:m="http://www.w3.org/1998/Math/MathML">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text>aaa</xsl:text>
</xsl:template>
</xsl:stylesheet>
带有 DTD 声明的 MathML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<mrow>
<mi> sin </mi>
<mo> ⁡ </mo>
<mi> x </mi>
</mrow>
</math>
现在撒克逊人给了我这个错误:
I/O error reported by XML parser processing file:/path/to/mathml.xml: unknown protocol: classpath