2012-04-10 31 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/

相關問題