2

これは、@XmlElementのJAXBドキュメントから取得しました

required()がtrueの場合、JavabeanプロパティはminOccurs="1"を使用してXMLスキーマ要素宣言にマップされます。maxOccursは、単一値のプロパティの場合は「1」、複数値のプロパティの場合は「無制限」です。

しかし、私が言うとき

@XmlElement(name = "Name", required = true, nillable = false)

.xsdで次のようになります

<xs:element name="Name" type="xs:string"/>

minOccursを1に等しくするにはどうすればよいのでしょうか。required = true原因minOccursが消えたようです。

編集 デフォルト値が1であることに気付きました。とにかく、minOccursが.xsdに1として表示されるようにすることはできますか?

Edit2 JAXBContext.generateSchema を使用してスキーマ(FYI)を生成しています

4

3 に答える 3

2

JAXB仕様は、動作を定義します。

required()がtrueの場合、JavabeanプロパティはminOccurs="1"を使用してXMLスキーマ要素宣言にマップされます。maxOccursは、単一値のプロパティの場合は「1」、複数値のプロパティの場合は「無制限」です。

個々の実装(MetroEclipseLink MOXyApache JaxMe)は、このルールに従って適切と思われるXMLスキーマを自由に生成できます。MetroとMOXy(私は技術リーダーです)は、minOccurs = "1"を示すために、minOccurs属性がないことを使用することを選択します。

于 2011-02-03T20:55:01.030 に答える
1

私はJAXBの専門家ではありませんが、「minOccurs」はデフォルトでxs:elementタグを使用して1に設定されていると思います。つまり、「minOccurs」属性がタグにない場合、デフォルトは1です。

編集:申し訳ありませんが、手遅れになるまで編集内容は表示されませんでした。

于 2011-02-03T20:16:58.923 に答える
0

xs:elementのデフォルトはminOccurs=1です。したがって、属性を省略しても同じ意味を持つ可能性があります。これは、jaxbが行っていることである可能性があります。

編集:あなたの編集を見たのが遅すぎました。私はこれを行う方法を見たことがありませんが、それが不可能であるという意味ではありません。

于 2011-02-03T20:17:29.510 に答える