【问题标题】:How to declare escape character as DTD Entities in external file and import in XML files如何在外部文件中将转义字符声明为 DTD 实体并在 XML 文件中导入
【发布时间】:2015-09-29 09:09:33
【问题描述】:

在一个 Web 项目中,我有很多带有非转义字符的 XML 文件。我将这些字符声明为 DTD 实体,并在每个 XML 文件内部包含声明列表,如下所示:

!DOCTYPE article SYSTEM "../../pubmedref/archivearticle.dtd" [
   <!ENTITY bull "&#8226;">
   <!ENTITY copy "&#169;">
   ... a long list ...
]>

有什么方法可以将这些声明放在外部文件中并将其导入 XML 文件中? XML 文件使用 XSLT 呈现给浏览器。

FWIW,我尝试引用 .ent 文件,但它在任何浏览器上都不起作用。

【问题讨论】:

    标签: xml xslt entity dtd


    【解决方案1】:

    通常你会使用参数实体...

    XML 文件

    <!DOCTYPE article SYSTEM "../../pubmedref/archivearticle.dtd" [
    <!ENTITY % ents SYSTEM "../../pubmedref/entities.ent">
    %ents;
    ]>
    <article>...</article>
    

    实体文件(你可以有多个文件)

    <!ENTITY bull "&#8226;">
    <!ENTITY copy "&#169;">
    

    但是,大多数浏览器不会解析外部实体引用,因此您只能将实体声明直接放在内部子集中(在您的 doctype 声明中的 [] 之间)。

    【讨论】:

    • 我真的很震惊。我不敢相信浏览器不支持这一点。有什么特别的原因吗?
    • 出于同样的原因,我偶然发现了这个旧答案。如果认为这部分&lt;!ENTITY ents % 应该这样更正:&lt;!ENTITY % ents
    • @MauroPanzeri - 出色的接球!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2014-10-06
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多