1

有没有什么方法可以在没有 DOCTYPE DTD 声明的情况下将 XHTML 实体引用嵌入到 XML 文本中?DOCTYPE 行导致它所针对的 java 服务器出现问题。

转义 &; 序列是不可接受的,也不能嵌入到 CDATA 中。参考文献需要验证。

可以从架构定义而不是 XML 数据文件中引用 DTD。

更广泛地说,在 XML 中嵌入 XHTML(或至少是实体引用)并对其进行验证的常见做法是什么?

一种可能的解决方案是将整个 XHTML 1.0 DTD 转换为模式,但这听起来不是最好的主意。

4

2 回答 2

3

您是否尝试过没有 PUBLIC 或 SYSTEM 标识符的 DOCTYPE?

您可以将 ENTITY 声明直接添加到内部子集:

<!DOCTYPE foo [
<!ENTITY nbsp   "&#160;">
<!ENTITY copy   "&#169;">
<!ENTITY laquo  "&#171;">
<!ENTITY reg    "&#174;">
<!ENTITY deg    "&#176;">
<!ENTITY plusmn "&#177;">
<!ENTITY sup2   "&#178;">
<!ENTITY sup3   "&#179;">
<!ENTITY frac14 "&#188;">
<!ENTITY frac12 "&#189;">
<!ENTITY frac34 "&#190;">
]>
<foo/>

或者您可以使用参数实体指向具有您的 ENTITY 声明的外部文件:

<!DOCTYPE foo [
<!ENTITY % ents SYSTEM "xhtml-lat1.ent">
%ents;
]>
<foo/>
于 2012-04-10T20:36:40.857 回答
2

如果您有 5 个预定义的实体引用以外的实体引用,并且没有文档类型,则 XML 格式不正确。

如果您使用数字字符引用而不是命名实体引用,则可以大大简化事情,因此请使用

&#160;代替&nbsp;

如果您控制它,可以通过修改原始生成,或者只是通过使用任何 xml 解析器或使用 perl 或等效的简单文本替换来扩展实体。您可以在此处http://www.w3.org/2003/entities/2007/ 获取以 dtd 或 json 或其他格式设置的 html(5) 实体的完整列表

于 2012-04-10T20:47:26.420 回答