有没有什么方法可以在没有 DOCTYPE DTD 声明的情况下将 XHTML 实体引用嵌入到 XML 文本中?DOCTYPE 行导致它所针对的 java 服务器出现问题。
转义 &; 序列是不可接受的,也不能嵌入到 CDATA 中。参考文献需要验证。
可以从架构定义而不是 XML 数据文件中引用 DTD。
更广泛地说,在 XML 中嵌入 XHTML(或至少是实体引用)并对其进行验证的常见做法是什么?
一种可能的解决方案是将整个 XHTML 1.0 DTD 转换为模式,但这听起来不是最好的主意。
您是否尝试过没有 PUBLIC 或 SYSTEM 标识符的 DOCTYPE?
您可以将 ENTITY 声明直接添加到内部子集:
<!DOCTYPE foo [
<!ENTITY nbsp " ">
<!ENTITY copy "©">
<!ENTITY laquo "«">
<!ENTITY reg "®">
<!ENTITY deg "°">
<!ENTITY plusmn "±">
<!ENTITY sup2 "²">
<!ENTITY sup3 "³">
<!ENTITY frac14 "¼">
<!ENTITY frac12 "½">
<!ENTITY frac34 "¾">
]>
<foo/>
或者您可以使用参数实体指向具有您的 ENTITY 声明的外部文件:
<!DOCTYPE foo [
<!ENTITY % ents SYSTEM "xhtml-lat1.ent">
%ents;
]>
<foo/>
如果您有 5 个预定义的实体引用以外的实体引用,并且没有文档类型,则 XML 格式不正确。
如果您使用数字字符引用而不是命名实体引用,则可以大大简化事情,因此请使用
 代替
如果您控制它,可以通过修改原始生成,或者只是通过使用任何 xml 解析器或使用 perl 或等效的简单文本替换来扩展实体。您可以在此处http://www.w3.org/2003/entities/2007/ 获取以 dtd 或 json 或其他格式设置的 html(5) 实体的完整列表