【问题标题】:How to get Saxon/XSL to leave HTML-encoded entities alone?如何让 Saxon/XSL 不理会 HTML 编码的实体?
【发布时间】:2018-02-12 21:28:59
【问题描述】:

我有一个源 XML 文件,其中包含带有回车符和其他编码到文件中的特殊字符的文本块;例如:

<?xml version='1.0' encoding='utf-8' ?>
<library>
  <book>
    <phrase>&quot;This isn&apos;t&#10;a&#10;big deal.&quot;</phrase>
  </book>
</library>

仅通过 Saxon 对该文件运行一个简单的身份转换会导致 XML 中有效的字符恢复为“真实”形式:

<?xml version='1.0' encoding='utf-8' ?>
<library>
  <book>
    <phrase>&quot;This isn't
a
big deal.&quot;</phrase>
  </book>
</library>

这是有效的 XML,但下游工具期望 &amp;#10; 出现在发送给它们的文本中。有没有办法标记/配置 Saxon(或 XSL 转换本身)以单独留下安全/有效的转义序列?

【问题讨论】:

    标签: xml xslt saxon


    【解决方案1】:

    Saxon 使用 XML 解析器将您的输入 XML 解析为节点树,其中字符数据是包含 Unicode 字符的文本节点的一部分,因此它不知道也无法区分输入是 &amp;apos; 还是 @ 987654323@ 或数字字符引用,XML 解析器只是将其解析为字符。

    LexEv by Andrew Welch 可能有助于预处理 XML,以便将实体或字符引用转换为标记,然后您可以将其转换回所需的词法格式。

    【讨论】:

    • 更好:修复下游工具。如果一个 XML 应用程序期望一个换行符被表示为&amp;#10;,那么它就被严重破坏了。如果您的电源插座不能使用标准插头,则将插头弯曲以适合插座不是正确的方法。
    猜你喜欢
    • 2019-09-03
    • 2015-03-02
    • 1970-01-01
    • 2010-10-21
    • 2016-08-13
    • 2012-02-18
    • 2013-03-20
    • 2021-07-28
    相关资源
    最近更新 更多