2014-06-15 50 views
0

閱讀後我發現你不能設置一個元素默認使用DTD文檔來包含CDATA。在這種情況下,你可以解釋一下:XML dtd CDATA聲明clarifaction

<!ELEMENT element-name (#CDATA)> 

當把它放到相關的DTD文檔中時,我知道這可能是一個簡單的問題,但我找不到答案。還有一種替代方案需要編寫:

<element-name><![CDATA[Some unparsed data]></element-name> 

使用XML模式?

謝謝你的時間。

+0

我可能完全錯了,但是在任何轉義文本的位置都不允許CDATA,反之亦然? (另外,還有誰使用DTD?XSD或RelaxNG模式更富有表現力。) – IMSoP

+1

如果您嘗試使用它,您會發現DTD中'<!ELEMENT元素名稱(#CDATA)>的作用是產生語法錯誤。 –

回答

1

CDATA表示字符數據。這與CDATA Section不一樣。 A 內容模型對於元素不能包含(#CDATA),但是(#PCDATA),這意味着解析字符數據。在CDATA部分中包含文本將允許它在XML實例中保持解析不變。

在你的DTD,那麼你必須使用:

<!ELEMENT element-name (#PCDATA)> 

而且你可以有純文本,轉義特殊字符和CDATA節中該元素。沒有機制在元素中自動設置CDATA節。

如果您正在生成或將文檔(使用XSLT)轉換爲,則可以在轉換期間生成CDATA節作爲所生成元素的內容。

+0

感謝您的快速回復。 – Oracle