.xsd
コードを自動生成したいファイルがたくさんあります。いくつかのファイルに重複した名前があり、それらすべてを同時に生成しようとすると衝突します。
私はこれらのうちの2つを機能させることに集中しています。
これら2つが機能するようになったら、残りを修正します。しかし、今のところ、これらのファイルのうちの 2 つだけに焦点を当てています。私はそれらを制御できません。それらはベンダーからのものであり、「標準」に従っているため、複数の理由でそれらを編集することはできません。
を使用しmaven-jaxb2-plugin
てこれらのファイルを処理しています。
binding.xjb
の回答のリンクで提案されているようにファイルを追加mat b
し、ウェブで見つけたその他の指示を追加しました。しかし、次のエラーが表示されます。出力はありません。
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.1"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd">
<jxb:bindings schemaLocation="mac-3.4.xsd">
<jxb:schemaBindings>
<jxb:package name="my.company.mac"/>
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="mac-stylesheet-3.4.xsd">
<jxb:schemaBindings>
<jxb:package name="my.company.stylesheet"/>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
次のエラーが発生します
[ERROR] Error while parsing schema(s).Location [ file:/C:/Users/Jarrod%20Roberson/Projects/spa-tools/spa-lib/src/main/sc
hema/mac-stylesheet-3.4.xsd{165,33}].
org.xml.sax.SAXParseException: 'halign' is already defined
問題のある要素は次のとおりです:(他にもたくさんありますが、これは最初に衝突するものです)
<xsd:simpleType name="halign">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="left" />
<xsd:enumeration value="center" />
<xsd:enumeration value="right" />
</xsd:restriction>
</xsd:simpleType>
また、各ファイルで同一ですが、.xsd
生成されるクラスが 1 つだけであるか、各クラスが独自のパッケージ名前空間で生成されるかのいずれかで、この重複を解決するにはどうすればよいですか?
このような重複要素はこれだけではありません。重複する要素がたくさんあるため、ファイルからそれらを削除しようとすることもできません。
これhalign
は複数の.xsd
ファイルにあり、それらを個々のパッケージに入れるか、生成された最初のファイルを使用するようコンパイラーに指示できるようにしたいと考えています。
これは、外部.xjb
ファイルを試す前にpackage
、pom.xml
.
重複する構成を無視するか、それらを別のパッケージにマップするか、既存の実装にマップするようにバインディングを構成するにはどうすればよいですか?