2013-12-20 15 views
2

許多工具都可以從XML示例生成XSD語法。有可能以迭代方式逼近語法?

通常這些工具的輸出必須用手調整。

我的問題是,如果有可能以迭代的方式做這個過程。 我的意思是,不是給出1個XML示例,而是給出一堆示例,並在每次迭代之後對XSD模式進行細化。

我不知道有這種能力的任何系統。

這可能嗎?

謝謝!

編輯:我想我必須澄清一些觀點。我知道XMLspy可以從一個例子中生成一個語法。我正在使用它。 (實際上在舊的SGML時間裏,一個叫Fred的系統可以做到這一點)。通常這種語法是非常原始的,儘管XMLspy爲創建提供了所有選項。我有成千上萬的機器生成的xml文件,它們都非常相似。也就是說,它們都具有相同的結構。如果你可以定義它們之間的「距離」是最小的。 我正在尋找一個系統,它會生成一個獨特的(最小的)文法,它接受我爲其生成的每個文件。 我可以想象,這樣一個系統可以採用第一個例子,生成一個語法,拿第二個,爲上一個例子優化生成的語法,等等直到最後一個XML輸入文件。

回答

3

QTAssistant(我與它關聯)有能力接收多個XML文件,並生成一個XSD。

4.x版

enter image description here

V5.x的

enter image description here

注意事項:

  • 您需要註冊才能下載免費的評估。

  • 工具通過推理機制生成的XSD必然需要手動干預。對於大型的XSD,我們通常會重構至少類型定義和/或元素,這取決於客戶的偏好:創作風格(基於類型還是基於元素),因爲輸出往往是相當嵌套的。

  • 我有點不清楚你的意思與to give a bunch of examples and after each iteration the XSD schema is refined;我將解釋它是如何工作的,並且從那裏開始...在調用該命令之後,您會得到一個標準的打開文件對話框,您可以在其中選擇一個或多個XML文件。一旦選定,系統會提示您輸入將生成XSD文件(可能會多於一個)的文件夾。結果是一組XSD文件,用於成功驗證您提供的所有XML文件作爲輸入。

如果iteration你的意思是,其中一個在現有的(模型)XSD其然後被擴展/改變以符合所選擇的個XML,基本上進料XML文件中的一個被一個或成組地採用的方法,那麼這個工具將不起作用;該工具僅根據選定的XML重新創建XSD。

+0

感謝您的回答。我會嘗試。 – Luixv

2

許多工具(包括XMLSpyoXygenPetru's優秀QTAssistant)可以生成一個XML文檔實例的XSD,但我不知道那會反覆改進給出多個XML文檔實例的XSD任何工具。但是,是的,使用多個實例的知識來提煉語法將是可能的和有成效的。

這將有助於解決幾個不能從單個實例中確定語法的領域的歧義。例如,每個以下的,可以更好地給出近似的有效證件的不同樣本:

  • Requiredness
  • 基數
  • 選擇
  • 類型

爲什麼沒有這樣的工具已建成?我懷疑是否需要一個覆蓋單個XML文檔實例的粗略XSD,這在用例中更爲常見。它有助於開始編寫XSD的第一個剪輯。它爲代碼生成器(如JAXB)提供了足夠好的源代碼。最後,即使通過基於多個XML文檔實例的自動優化來實現更好的近似,仍然很有必要進行動手的細化。

+0

感謝您的回答。好吧,我同意。擁有像你/我們所描述的東西是很好的。 – Luixv