1
私は、以下のXMLのXSDを構築しようとしていると私は検証してJavaオブジェクトにアンマーシャルするためにJAXBを使用しています。'type'属性値に基づいて要素を要求する方法はありますか?
type = jobType
とtype = customer
である<JobParam>
の最初の2つの要素が必要です。 JobParam
内の他のすべてはオプションです。
は、どのように私はこのためのXSDを作成するのですか?
<job>
<jobName>core</jobName>
<jobParams>
<jobParam type="jobType">Scheduler</jobParam>
<jobParam type="customer">Alphabet</jobParam>
<jobParam type="mode">music</jobParam>
</jobParams>
</job>
感謝。私はxmlを変更することができればと思います。私はあなたの提案に同意します。しかし、これは現時点では不可能です。このXMLのクライアントユーザーは、それを更新するつもりはありません。今日、私はこれらの検証をJavaオブジェクトで処理します。ただし、すべてのケースをJavaコードを使用して効果的に処理できるわけではありません。たとえば、xmlにjobParam要素が重複している場合スケジューラ –
SAK
XMLを再設計できない場合は、**(a)**はXSD 1.1、**(b)*に移動します。 * XSDの外側にその制約を強制する(Javaで、例えば)、または**(C)**制約を削除その 'jobParam [@ TYPE = 'JOBTYPE']'と 'jobParam [@ TYPE = '顧客']'存在しなければならない。 XSD 1.0では、オリジナルのXML設計では制約を表現できません。あなたのコメントに記載されている余分な制約は似ています。 (どちらもJavaで実装するのは難しいでしょう - XSDで宣言的に検証制約を集中管理するのは非理想的です) – kjhughes