2011-03-27 46 views
0

嘿朋友, 我已經被分配了一個查詢計劃項目。 在這個項目中,如果輸入一個sql查詢,我必須切片並轉換成一個XML。 我做了這部分,但我需要爲此xml添加DTD,因爲項目提到它有助於解析(使用java DOM)此查詢並輕鬆找到選擇 - 查詢中指定的重複項和連接。xml中的DTD如何讓使用java DOM更容易解析?

我不明白,在使用DOM解析xml並找到這個xml的不同部分時,DTD如何提供幫助?

我可以使用DOM找到沒有dtd的xml的不同部分...任何人都可以給我和差異的例子嗎?

感謝

回答

1

一個DTD告訴文檔中應可預期的標籤允許分析器,並在那裏。如果沒有DTD,分析器將讀取標籤,但不知道標籤是否是預期的標籤,或者標籤是否在正確的位置。

如果您使用SAX或DOM解析您的XML,這並不重要,否則解析器都不會知道您的標籤是否在沒有DTD(或其最近的替代品,如XSD,RelaxNG等)之一的預期或意外情況下發生。

0

DTD不會幫助解析XML,但它通過定義關於文檔的某些規則來提供基本的驗證。如果文檔違反了驗證規則,則解析應該失敗(或產生一條警告消息,該消息應取決於驗證器配置)。他們可能會稱之爲「有用的」,因爲您的DOM導航代碼將能夠對文檔結構做出更好的假設,而不用擔心出現不正常的失敗。

他們可能希望您包含DTD,否則DTD必須從PUBLIC/SYSTEM文檔標識符中識別,並託管在某處。或者他們應該在源代碼中有一個預定義的DTD(也是這種「託管某處」的版本),如果相同的代碼在事先不知道該結構的情況下處理不同的文檔,這可能不是一種選擇。

關於查找重複項更簡單的聲明可能是因爲他們計劃在出現​​重複時丟棄文檔;不知道它對於連接有多大幫助,而不知道切片和轉向的細節。