2012-04-15 7 views
1

以上がありますように私はこのコードで間違っているかを把握することができない属性が必要:はすぐに一つの要素

<xs:choice> 
    <xs:element name="tiles" type="tiles" minOccurs="1" maxOccurs="1"/> 
    <xs:element name="tiles" type="tiles-with-key" minOccurs="2" maxOccurs="unbounded"/> 
</xs:choice> 

私は、すぐに複数のtiles要素があるとしてkey属性を必要とします:

<!-- one element, no need for the "key" attribute --> 
<tiles> 
    ... 
</tiles> 

<!-- two elements, we need the "key" to differentiate them --> 
<tiles key="1"> 
    ... 
</tiles> 
<tiles key="2"> 
    ... 
</tiles> 

私は間違っていますか?

答えて

1

これは、基本的にパーサーがモデル内のどこを先読みするかを知っていなければならないと言うユニークパーティクルアトリビューション(UPA)と呼ばれています。この場合、選択したオプション間でタグ名が同じであるため、パーサーはどのモデルを適用するのかわかりません。

あなたの質問は基本的に外部条件に基づいて属性の使用を制御することです(ここではタイル要素の数です)。これはXSD 1.0では不可能です。 XSD 1.0を持つSchematronは1つのオプションです。他の人たちはXSD 1.1を提案するのが早すぎるかもしれない。

+0

非常に明確な説明。どうもありがとう! –

関連する問題