你所描述的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