2012-04-10 51 views
1

有没有什么方法将XHTML实体引用嵌入到XML文本中而没有DOCTYPE DTD声明? DOCTYPE行在它所针对的java服务器上导致问题。如何在没有DOCTYPE,CDATA或转义的情况下将XML嵌入XHTML?

逃离&;序列是不可接受的,也不嵌入CDATA中。参考文件需要验证。

可以从模式定义中引用DTD而不是XML数据文件。更广泛地说,在XML中嵌入XHTML(或至少是实体引用)并验证它的常用做法是什么?

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

回答

3

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

你可以直接添加实体声明到内部子集:

<!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/> 

,或者你可以使用一个参数实体指向外部文件/文件有你的实体声明:

<!DOCTYPE foo [ 
<!ENTITY % ents SYSTEM "xhtml-lat1.ent"> 
%ents; 
]> 
<foo/> 
2

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

你,如果你使用数字字符引用,而不是命名实体引用,所以如果您控制,或者只是通过扩大实体使用

&#160;代替&nbsp;

通过修改原代大大简化事情使用任何xml解析器或使用perl或等效的简单文本替换。你可以在这里获得完整的HTML(5)实体列表,以dtd或json或其他格式设置http://www.w3.org/2003/entities/2007/

相关问题