2012-03-13 27 views
-1

我目前正在嘗試派生大量XML文件的結構。我已經使用XSD.exe從其中的每一個生成了XSD,並且如預期的那樣,它們在不同程度上彼此不同。結構合併XSD的工具?

我正在尋找一種工具,可以將這些模式合併爲一個適用於所有這些XML文件的「superschema」。

有什麼建議嗎?

謝謝。

+0

如果您嘗試合併您的xml文件,然後生成xsd,該怎麼辦? – 2012-03-13 22:39:34

回答

0

另一種方法可能是您將所有XML文件合併到1中。有支持XML本地合併的diff/merge工具。儘管如果你有n個XML文件,你將不得不在最糟糕的n-1合併中執行,因爲這些工具通常一次只能合併2-3個文件。

這些工具的一些例子:

之後,你有你的 「主人」 XML可以使用XSD.EXE生成 「主」 模式。

+0

如果有一種方法可以合併XML文件而不考慮不同的內容(與元素相對),那可能會起作用。我特別意識到將maxoccurs保持在最低水平。 – 2012-03-13 23:00:15

+0

第二個想法是,我可以通過編程方式進行XML合併。謝謝。 – 2012-03-13 23:11:18

0

我不知道如何有效合併,因爲很容易指出一些與之相關的問題;例如,對兩個(或更多)不同的XML採用相同的XPath(到一個節點);合併應該如何工作:保持兩個兄弟節點;用另一個替換一個;從文本節點列出一個列表(如果適用)?在我看來,最終你會處理很多與合併有關的問題,而不是讓XML自己說話。

有一個帖子here on SO非常簡單,但它顯示了合併方法無法處理的一種情況:如果希望的結果是有一個xsd:choice。合併一個XML中的內容,將不可避免地在輸出XSD中創建一個序列。

我相信,除非讓推理引擎處理XML的多個實例,否則很可能無法找到一個好的開始模型供您採用並最終快速手動調整。

我想出了一個解決方案,在運行一次太多的問題之後,快速清理將XML樣本用作模型的XSD。試試this tool;有一個XSD來自XMLs命令工具選項卡,XML組。 (我是部分的,因爲我寫了它)。我剛剛在上面提到的帖子中嘗試過,並不奇怪,它提出了相同的結構。生成的XSD使用俄羅斯娃娃創作風格,因爲核心引擎基於XmlSchemaInference - 換句話說,不要責怪我:) ..

我正在改進版本,所以如果你'試用後感興趣,請使用支持聯繫信息給我發一行,然後我們會從中獲取。