Java 有人试过运行这个XML模式的比较器吗?

Java 有人试过运行这个XML模式的比较器吗?,java,xml,xsd,soa,Java,Xml,Xsd,Soa,[http://www.membrane-soa.org/soa-model-doc/1.4/java-api/compare-schema-java-api.html] 我试过了,但我能从我的模式中得到的唯一东西是这个 targetNamespace从(schema1的名称空间)更改为(schema2的名称空间) 我使用的代码和库和下载部分包含的包完全相同。如有任何建议,我将不胜感激 我的目标是实现他们的承诺:D 元素createResponse已更改: ComplexType已更改: 顺序已

[http://www.membrane-soa.org/soa-model-doc/1.4/java-api/compare-schema-java-api.html]

我试过了,但我能从我的模式中得到的唯一东西是这个 targetNamespace从(schema1的名称空间)更改为(schema2的名称空间) 我使用的代码和库和下载部分包含的包完全相同。如有任何建议,我将不胜感激

我的目标是实现他们的承诺:D

元素createResponse已更改: ComplexType已更改: 顺序已更改: 添加了元素NewElementForTest

ComplexType GetAllType已更改: 注释已删除。 发射型计算机断层扫描仪。。。。。等等


谢谢你,詹姆斯:)

首先,你提到的工具是我第一次看到它,所以我对它说的任何话都要谨慎对待;在快速查看可供您比较的选项后,我冒昧地猜测您这里有几个选项。考虑到我以前如何比较XSD和XML的工作,我需要首先解释一些事情

对于许多任务,XSD被简化为XML或纯文本。您对XSD的期望似乎与比较两个简单XML时看到的非常相似,尽管名称空间不同:

名称空间是您的问题。一般来说,将XSD与不同的目标名称空间进行比较的工具不应假设具有相同名称的全局内容;这是因为目标名称空间还可用于避免冲突和优化同音词(家具中的表与计算/数据库中的表)。在您的情况下,它似乎被用作版本控制机制,因为您希望继续比较具有相同本地名称的实体,即使完整限定名称(由模式的targetNamespace限定)不同

对于您正在使用的API,似乎没有一个选项可以提供名称空间的映射(也就是说,出于比较的目的,将不同的值视为相同的)。我想说,看看报告的结构,这仅仅是因为更改名称空间肯定会破坏一切

尝试手动循环模式定义的对象列表(例如,等等),通过本地名称(在源/目标集中)手动匹配它们,然后逐个调用(例如,for)。对于复杂类型,可能需要手动遍历其内容模型

另一种策略(如果XSD不是那么复杂,那么更容易)可能是在临时位置复制修订,字符串替换targetNamespace为旧值,然后使用工具支持的运行

不过,比较XSD是一个非常复杂和有趣的主题,因为“重要”的更改(是否中断)是如何使用XSD的问题。换句话说,以某种方式更改XSD不会对基于XSLT(XSD感知与否)的代码产生影响,而对于使用JAXB生成的类的人来说,这将是一场灾难,同时.NET使用者不必更改一行代码


上面显示了其他条件,如“可传递”影响,其中更改基类型(取决于已修改)将破坏从XSD生成的代码。。。虽然所描述的XML是完全相同的。

我做得有点疯狂,我在Java应用程序中更改了它,这些名称空间会自动更改为相同的,例如,first xsd NS=“first”,因此我将其改为“first”,然后将第二个xsd的NS改为“first”,它就可以工作了:D。我会在一旁生成它,它工作得很好;)但是谢谢你的回复,我现在偶然发现了它。干杯,雅库布