2016-05-21 7 views
1

私は、このXMLファイルがあります。今、私は私が車(自動車、自転車、ボート)の種類に制限をするために列挙を使用したXSDを作るために(研究目的のために)必要XSD 1.0は要素の型に基づいて属性を要求できますか?

<?xml version="1.0" encoding="UTF-8"?> 
<vehicle_list> 
    <vehicle id="v001"> 
     <type registration="ABC-XYZ" year="2010">car</type> 
     <spent_fuel>8</spent_fuel> 
     <constructor>XPTO</constructor> 
    </vehicle> 
    <vehicle id="v002"> 
     <type>bike</type> 
     <spent_fuel>0</spent_fuel> 
     <constructor>XIMA</constructor> 
    </vehicle> 
    <vehicle id="v003"> 
     <type>boat</type> 
     <spent_fuel>40</spent_fuel> 
     <constructor>AnyBoat</constructor> 
    </vehicle> 
</vehicle_list> 

をと定義しますルールは、タイプが "car"の場合、登録と年の2つの属性が必要です。

どうすればいいですか?

私は読んできましたが、解決策を見つけるのに役立つものはまだ見つかりませんでした。

私はXSD 1.0(XSD 1.1ではなく)に限定されています。

+0

私はXSD 1.1、XSD 1.0のみを使用することはできません。それはできないようです。私がそれらの質問を読むことができる限り。 – eclypz

答えて

1

XSD 1.0では、要素の値に基づいて制約を表すことはできません。そのためにはXSD 1.1アサーションが必要です。また、XSD 1.0のみを使用できるというコメントを述べました。

ただし、XMLデザインを修正すると、XSD 1.1は必要ありません。 type要素を介してさらに仕様を必要とする汎用vehicleを使用する代わりに、type要素値を適切な要素そのものに昇格させるだけです。

ウィットに:

<?xml version="1.0" encoding="UTF-8"?> 
<vehicle_list> 
    <car id="v001" registration="ABC-XYZ" year="2010"> 
     <spent_fuel>8</spent_fuel> 
     <constructor>XPTO</constructor> 
    </car> 
    <bike id="v002"> 
     <spent_fuel>0</spent_fuel> 
     <constructor>XIMA</constructor> 
    </bike> 
    <boat id="v003"> 
     <spent_fuel>40</spent_fuel> 
     <constructor>AnyBoat</constructor> 
    </boat> 
</vehicle_list> 

このXMLの設計のためのXSD 1.0を記述するのは簡単です。

+0

は、XMLのその修正に、ありがとうと 使用します。 をます。 私はXSDファイルを書き込むことができました。 もう一度、ありがとうございました。 – eclypz