2011-01-31 8 views
0

私はのためにスキーマを書きたい2つのXMLの例があります。このXMLの例では、スキーマを記述できますか?

例1:

<attributes>
<attribute type="test" value="yes"/>
</attributes>

例2:

<attributes>
<attribute type="test">
<value x="100" y="50">yes</value>
</attribute>
</attributes>

例3:

<attributes>
<attribute type="test" value="no">
<value x="100" y="50">yes</value>
</attribute>
</attributes>

それは、pですこれらのために働くスキーマを持つossible? 'value'は1つの属性であり、もう1つの要素は要素ですか?

更新 今、私の問題を理解していると思います。私は、これはJAXBの制限だと思い

[xjc] [ERROR] Property "Value" is already defined. Use &lt;jaxb:property> to resolve this conflict. 
    [xjc] line 275 of file:common.xsd 
    [xjc] [ERROR] The following location is relevant to the above error 
    [xjc] line 286 of file:common/common.xsd 
    [xjc] failure in the XJC task. Use the Ant -verbose switch for more details 

私はこのXSD持っている:

<xs:complexType name="Attribute"> 
    <xs:sequence > 
     <xs:element name="value" type="Value" minOccurs="0" maxOccurs="unbounded"> 
     </xs:element> 
    </xs:sequence> 
    <xs:attribute name="type" type="xs:string" use="required"> 
    </xs:attribute> 
    <xs:attribute name="value" type="xs:string" > 
    </xs:attribute> 
</xs:complexType> 

をしかし、私はXSDからJavaクラスを生成するためにJAXBを使用しようとすると、私はエラーを取得しますXSDではなく失敗するgetValue()という2つのメソッドを作成しようとします。

+0

あなたはそれが可能ではないと思いますか? –

答えて

4

回答は「はい」ですが、value属性に基づいてスキーマ内にif/else文が必要な場合は、答えは「いいえ」です。オプションですべての属性と要素の値を指定してxsdを作成するだけで、文書の妥当性が確認されます。 xsdバリデーションは、ドキュメントがスキーマで指定されたルールの下で有効であることを伝えることですが、ではなく/no value属性の値のような文書内のデータを処理します。

あなたが現在持っているスキーマを投稿し、それがどのように表示されるべきか疑問がある場合は、より具体的なスキーマフィードバックを得るでしょう。

+3

しかし、おそらくSchematron検証を追加することはできます。 – biziclop

+0

また、2つの属性要素に異なる名前空間を使用することもできます(ごめん、私の目、私の目、要素に「属性」という名前を付けないでください!) –

+2

@James:各 "属性"要素に属性 "要素"があるとします。 :] –

1

私はあなたの例3のスキーマを作成することができますか?あなたは基本的にvalueという名前の属性とvalueという要素を持っています。これは可能です

関連する問題