xml - 在 XSLT 2 中加载实体?

标签 xml xslt-2.0 saxon mathml xml-entities

我正在使用 XSLT 2.0 程序来处理一些 MathML 文档。在这些 MathML 中,存在诸如 之类的实体,它们会给我“实体未定义”错误。有没有办法可以在不加载 MathML 架构的情况下处理包含这些实体的文档? (因为 Saxon-HE 无法使用 xsl:import-schema...)

需要明确的是,我不需要使用 XSLT 中的实体;我需要处理包含它们的 XML。

有一个 MathML 实体文件,如下所示:

<!ENTITY AElig            "&#x000C6;" ><!--LATIN CAPITAL LETTER AE -->
<!ENTITY AMP              "&#38;#38;" ><!--AMPERSAND -->
<!ENTITY Aacute           "&#x000C1;" ><!--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> &ApplyFunction; </mo> 
    <mi> x </mi> 
  </mrow> 
</math>

现在撒克逊人给了我这个错误:

I/O error reported by XML parser processing file:/path/to/mathml.xml: unknown protocol: classpath

最佳答案

我过去通过在 XSL 文件中声明实体取得了成功。例如:

<!DOCTYPE stylesheet [
<!ENTITY lsquo "<xsl:text disable-output-escaping='yes'>&amp;#x2018;</xsl:text>">
<!ENTITY rsquo "<xsl:text disable-output-escaping='yes'>&amp;#x2019;</xsl:text>">
<!ENTITY ldquo "<xsl:text disable-output-escaping='yes'>&amp;#x201C;</xsl:text>">
<!ENTITY rdquo "<xsl:text disable-output-escaping='yes'>&amp;#x201D;</xsl:text>">
]>

...添加到文件顶部,紧接在 <?xml?> 之后声明和 <xsl:stylesheet> 之前元素。我怀疑类似的方法会对您的情况有所帮助。

关于xml - 在 XSLT 2 中加载实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45044345/

相关文章:

xml - XSLT:从一个上下文移动到 for-each 内的其他上下文节点

java - Saxon:静态检测 XPath 表达式是否访问上下文项

android - 如何在 android 中为 textview 使用 `Open Sans` 字体样式?

java - 在 Java 中下载并解析 XML 文件

xml - XSLT 用户定义函数

xml - 如何根据重复子段的过滤器忽略整个 xml 内容

java - Saxon 8(Java版)问题

xml - 通过 Camel 的 xpath 中字符的索引获取子字符串

ios - 为什么我的 UITableView 不显示数据?

java - 是否有一个 SaxParser 可以读取 json 并触发事件,所以它看起来像 xml