在没有DOCTYPE DTD声明的情况下,有没有办法将XHTML实体引用嵌入到XML文本中? DOCTYPE行导致它所针对的Java服务器出现问题。
逃离&amp ;;序列是不可接受的,也不是嵌入CDATA。参考文献需要进行验证。
是否可以从架构定义而不是XML数据文件中引用DTD。
更广泛地说,在XML中嵌入XHTML(或至少是实体引用)并对其进行验证的常见做法是什么?
一个可能的解决方案是将整个XHTML 1.0 DTD转换为模式,但这听起来不是最好的主意。
答案 0 :(得分:3)
您是否尝试过没有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/>
答案 1 :(得分:2)
如果您的实体引用不是5个预定义的实体引用,并且没有doctype,则XML格式不正确。
如果使用数字字符引用而不是命名实体引用,则可以大大简化操作,因此请使用
 
代替
通过修改原始生成(如果您控制它),或者仅通过使用任何xml解析器或使用perl或等效的简单文本替换来扩展实体。您可以在此处获取以dtd或json或其他格式设置的html(5)实体的完整列表http://www.w3.org/2003/entities/2007/