所以我有以下bindings.xjb来加载一个顶层XSD,它加载两个子XSD(两个子节点都有相同的命名空间)。
<jxb:bindings schemaLocation="TopLevel.xsd">
</jxb:bindings>
现在两个子XSD(让我们称之为childA和childB)都声明了相同的简单类型('ResponseTypeCodeEnumeration')。
所以我收到了错误
SAXParseException: 'ResponseTypeCodeEnumeration' is already defined
通常我会使用绑定条目来解决冲突。我不知道如何在其中一个子xsd中专门引用该元素,或者我将其设置为解决此问题。
注意:我没有XSD,所以我在技术上不允许更改它们。
答案 0 :(得分:3)
您描述了一个无效的顶级架构(父级),因为它在相同的范围内引入了两个恰好定义相同简单类型的(子)XSD。
如果是这种情况,在没有修复XSD的情况下,您无法解决问题。
如果还提供了父架构,则将其推回到提供程序以进行修复。否则,如果它是你自己的,你别无选择,只能重构儿童XSD以适应你的场景。无效(父)XSD无论如何都是无用的(你将无法验证XML等)。
如果你有不同的父XSD,它来自同一个“子”模式池,并且每个父XSD都有效,那么你可以使用JAXB episodes只为公共模式生成一组类。每次为父XSD生成类时都会引用该剧集。