您是否知道將從一組XML文件中派生出DTD(或其他XML結構規範格式)的工具?如何從XML文件樣本中派生DTD(或其他XML規範格式)
目前,我們對xml編碼DSL的唯一(自動)驗證是使用Perl編寫的遺留解析器,但出於一致性原因,所有Perl代碼都必須移植到C-sharp。
您是否知道將從一組XML文件中派生出DTD(或其他XML結構規範格式)的工具?如何從XML文件樣本中派生DTD(或其他XML規範格式)
目前,我們對xml編碼DSL的唯一(自動)驗證是使用Perl編寫的遺留解析器,但出於一致性原因,所有Perl代碼都必須移植到C-sharp。
http://www.stylusstudio.com/dtd_generator.html是實現DTD生成器的實際軟件。
http://www.pmg.csail.mit.edu/~chmoh/pubs/wecwis.pdf對於你需要的東西看起來像是一篇不錯的論文,但是到目前爲止我找不到(鏈接到)紙上任何地方的實際代碼。
下面是關於此的另一篇論文,同樣沒有找到代碼:http://www.softnet.tuc.gr/~minos/Papers/debull03.pdf。
最後,我還建議您考慮使用RELAX NG或Schematron來驗證您的XML。這些語言更富有表現力,使得它們更容易閱讀,並且在您可以驗證的事物中更強大。 (請務必跳過被廣泛認爲是一團糟的XML Schema。)
Altova's XMLSpy有一個DTD/XML Schema生成器。
生成的DTD/XML模式通常需要稍微調整。例如,該工具可能枚舉屬性或元素的列表,當您「爲了」而允許任何值時。你只是給它一個你的問題空間的樣本,但它必須從具體到普通。出於這個原因,當我沒有閱讀我的想法時,我並沒有太過彎曲。
我認爲生成的dtd或模式是一個起點。它比從零開始手動滾動要好。呃,如果你從現有的XML文檔開始,那就是。
即使您不打算使用生成的dtd,它也是一個很好的方式來讓您瞭解一組不熟悉的XML文檔的結構。
XMLMax編輯器將從XML文件創建XSD。免費試用版(無註冊/小型下載文件)將爲您做到這一點。如果你想在代碼中做到這一點,.NET框架有一個XmlSchemaInference類,它可以從xml文件自動創建一個XSD。
您可以使用xsd.exe
(Visual Studio的一部分)爲給定的XML文件生成XML模式。
您可能需要嘗試Trang
或Instance to Schema Tool
(部分XMLBeans)。
我把它們放入1GB XML文件的測試中。下面是結果:
max memory [kB] - 98,480
time [MM:SS] - 0:24
max memory [kB] - 5,993,240
time [MM:SS] - 7:36
這裏是爲我工作DTDGenerator程序。您需要使用Java進行編譯,但運行良好。我對一種已經存在了很長一段時間的語言缺乏免費軟件感到驚訝,但是這個免費軟件在Mozilla Public License Version 1.0下是免費的。
這個問題是相當古老的,但似乎仍然相關。歡迎提供有關當前建議的回覆。 – lexu 2013-08-07 14:22:57
非常感謝你......真的,缺乏自由軟件!謝謝你的幫助!! :) – 2016-04-11 18:48:57
只需提供xml數據,就可以使用以下鏈接生成聯機模式。 http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx
您可以免費下載JetBrains IDEA社區版。它具有產生GTDS和模式的內置工具:
http://www.jetbrains.com/idea/webhelp/generating-dtd.html
也許不是完美的,但它是什麼。
剛剛使用http://www.freeformatter.com/xsd-generator.html從xml文件生成xsd。 它也有很多其他格式化的可能性!
有趣的文件!太糟糕了,他們從來沒有發佈代碼(以我能找到的方式:-) – lexu 2009-11-29 10:59:46
http://www.hitsw.com/xml_utilites/承諾從單個XML文件創建DTD /模式。 – lexu 2009-11-29 11:02:54
RE - RELAX NG或Schematron:我會看看驗證器是否存在於dotNet環境中。感謝提示! – lexu 2009-11-29 11:05:51