你所描述的f(invalid XML, target XSD) = valid XML
實際上不可能以通用的方式構建,除了微不足道的XML/XSD之外的任何東西......這可能是(至少)我不知道任何主流工具可以做到的原因這樣的事情......(只是給你我的簡短回答你的問題)。
鑑於XSD中可能描述相同XML的多種方式,並且可能採用多種方法來使得無效XML符合要求(嚴格來說,有些方案無法修復)...找出模式是更實用的,你需要修復你的XML(假設他們有什麼錯誤是一致的),並通過一個自定義的腳本應用這些更正(XSLT可能是一個,但我也見過「diffgram」爲基礎的方法,取決於你有什麼工具和/或技能)。
我在這裏回覆自己的興趣......事實上,測試框架(我們只有一個,僅在Windows上運行)通常能夠從各種數據源收集測試數據,並創建有效的XML從它,根據指定的XSD和某種映射元數據。在「映射元數據」在這裏可以包含由模式我指的是上面所需要的數據...
配置這樣一個框架,雖然可能需要一段時間,具體取決於你的XML/XSD複雜...點,除了微不足道的東西外,測試框架中也沒有太多的「automagic」。
(更新回覆:您的評論嘲弄/框架方面)
你似乎在試圖解決的東西,是應該解決其他的東西(即嘲諷)。如果嘲笑是你需要的,那麼我的嘲笑方法就有點不同了,如果僅僅是因爲我在很多年前遇到了同樣的問題(甚至在發明XQuery或XML數據庫之類的東西之前)。在最簡單的設置中,數據駐留在電子表格中;將專有的XML Builder shapes
數據轉換爲層次結構集合,通過遍歷(任意)XSD所描述的內容模型來引入數據;數據可以從Excel中提取,從外部數據源查找,默認等。結果可以是一個或多個XML片段,然後可以使用XSLT或COBOL副本進行轉換,並保存爲文件,或作爲基於TCP/IP的模擬框架(用於Web服務,IMS交易等)
這個模擬方法,我已經描述了...因爲我們意識到可以使用相同的數據/測試用例來測試Web服務,IMS事務,驅動UI自動化測試......或者在企業環境中遇到的任何問題。 「塑造」數據以符合特定規範(XSD,COBOL Copybook,CSV等)是「演示文稿」......因此是關注的分離。想象一下,對我來說,「注入」你似乎缺少的領域並獲得新的XML是多麼容易......
[使用XML模式修復Java中的XML]可能的重複(http://stackoverflow.com/questions/8968701/using-a-xml-schema-to-fix-an-xml-in-java ) – Stephan