我不是java中的新手,而是XML和DTD文件中的新手。我有一個工具(我寫的)將項目保存爲XML。您可以從主項目創建應用程序,但我必須根據主項目檢查應用程序的有效性。因此,對於每個主要項目,我必須創建一個DTD文件以及XML文件。這樣我可以檢查應用程序(也是XML文件)再次檢查該DTD文件。我如何使用Java生成該dtd文件。如何使用java生成DTD文件
回答
我建議你使用XML模式的.xsd而不是DTD。
它擁有超過一個DTD幾個優點:
- 的.XSD 爲 XML; DTD不是。
- 模式將比DTD做更徹底的檢查。它可以強制執行的類型,正則表達式,枚舉等
- 喜歡的IntelliJ智能IDE可以從現有的XML爲你生成一個模式,反之亦然。
模式是很容易用文本編輯器來生成。我認爲這是一個值得的練習。
我不會推薦在任何情況下生成這樣的事情。您正在表達關於架構或DTD中文檔的大量知識。
的DTD往往得到一個壞名聲,而且往往較差的考慮的原因,如人們可稱之爲「開發商代言和時裝」(例如,最新的東西就是最好的東西)。例如,認爲DTD不是XML是很奇怪的。我認爲人們通常意味着DTD的語法不是XML文檔標記語法,這是正確的。但dtd是本質 XML,也就是說,它們是XML推薦的非常重要的一部分,肯定moreso比XML Schema,它像XML命名空間後來大批的附加建議,其中提出了一個棘手的問題「之一什麼是兼容的XML文檔?「但我們在這裏不會碰到那個。什麼是確定是每個合規的XML處理器都需要支持DOCTYPE
聲明和DTD處理;它是免費的,你不需要別的東西。而諸如Apache目錄解析器之類的項目同時支持TR 9401和XML目錄(「實體解析」),該解決方案在開源和商業產品方面有着悠久的行業支持歷史。
相比之下,所有XML處理器都不支持XML Schema(或至少一致如此),並且XSD鏈接到文檔實例的方式通過一些相當複雜的XML名稱空間屬性來處理文檔實例的一部分(根元素上的屬性),而不是序言的一部分。 (基本上,這意味着處理器必須在獲取模式之前開始處理文檔,如果您不瞭解這種區別的重要性,則應該做一些作業)。使用多個XSD的混合文檔類型之間的相互依賴關係很複雜且沒有詳細說明。您可能會發現您必須提供您自己的實體解決方案支持。
而且具有XML標記你的架構並不總是有益的,除非你打算通過軟件工具來管理他們。 DTD更具人類可讀性,儘管存在一些相反的意見,但您可以使用命名空間前綴(請參閱XHTML Modularisation)。如果您的驗證要求主要是結構性的(例如,您的內容是以文檔爲中心而非以數據爲中心的),那麼您可能不會驗證內容,而是驗證標記。 DTD對此很好。您也可以考慮完全不同的驗證和文檔約束方法,比如Schematron,它很好地增強了DTD驗證。最後,大多數可以生成XSD的工具也可以生成DTD,並且有可用的轉換應用程序(請參閱James Clark的trang)。
DTD也會和XML一樣長,比如50-100年。從長遠來看,我們可能會發現XML Schema將無法生存:它只是衆多可行的競爭對手中的一個,因爲XSD的許多缺陷,競爭對手到達現場。我發現DTD和Schematron的組合非常適合我的需求,並且是一個靈活的解決方案。但是YMMV。
總之,在接受通用的分散式建議之前,您應該真正看看您的實際模式/約束要求。你可能會發現DTD工作得很好。他們自1971年左右開始就這樣做了。
「... DTD更易於人類閱讀......」 - 您的意見;我不同意。沒有人知道XML是否能夠存活50 - 100年。更多的猜測。處理模式現在已內置到Java JDK中,因此您關於一致支持的聲明不再正確。 DTD可能早於XML,但XML規範本身可追溯到1998年:http://www.w3.org/2003/02/xml-at-5.html – duffymo 2012-02-27 23:45:51
您顯然從未嘗試過讀取或編輯XML模式中的複雜內容模型。您可以在文本編輯器中使用DTD進行此操作;在XSD中,你最好使用一個工具,否則你會很快失去。我很清楚SGML和XML規範的日期,所以我不確定你的意思。 SGML的根源可以追溯到60年代,至於XML,我一開始就在那裏,並收到了第一個規範的打印副本。自80年代後期以來,我一直使用SGML(工作於工業領域),所以我可以說一些在專業環境中負責DTD和XSD的經驗。 – 2012-05-08 01:16:58
現在就開始迴應?我們都會保留我們的意見。你的評論並不能說服我。 – duffymo 2012-05-08 01:24:16
- 1. 使用JAXB從DTD文件生成Java類 - 如何修改DTD?
- 2. 我們如何從java類生成DTD
- 3. 自動化XJC命令從多個DTD生成Java SRC文件
- 4. Java:如何在使用Java處理XML文檔時使用DTD?
- 5. 如何用java ASM生成類文件?
- 6. 如何用java生成pdf文件
- 7. 如何從Python中的xml文件生成DTD?
- 8. 使用nokogiri生成器添加dtd
- 9. 如何從DTD生成示例XML?
- 10. 使用equals()和hashCode()方法從DTD生成Java類
- 11. 用java生成AutoCAD文件?
- 12. 如何使用java驗證xml與dtd?
- 13. 如何使用java驗證XML對DTD?
- 14. 使用Freemarker生成Java .properties文件
- 15. 使用java生成PRN文件
- 16. 使用Java生成PowerPoint 2007/2010文件
- 17. 使用Java生成PKCS12文件
- 18. 使用java生成pdf文件
- 19. 使用java生成pdf文件,Itext
- 20. 如何使用Parasoft生成測試文件形成一個java文件
- 21. 如何從csv文件生成java類
- 22. 如何通過Java生成xml文件?
- 23. 如何從Json文件生成Java類?
- 24. 使用Java根據本地DTD文件驗證XML文件
- 25. 如何使用WSDL2Code生成的文件?
- 26. 如何使用XSL生成HTML文件?
- 27. 如何使用libxml2生成XML文件?
- 28. 如何使用VS2012生成.winmd文件
- 29. 如何使用js生成excel文件
- 30. 如何使用ANT生成.air文件?
如果你只是生成它,DTD將是無用的,它不會檢查任何有用的東西。聽起來你所有的項目XML文件都應該根據相同的DTD進行驗證。 – 2012-02-27 20:48:40