xsi:type
を使用せずにXMLスキーマでバリアントデータ構造をモデル化するにはどうすればよいですか? 私の目標は、属性と属性タイプがdatatype
属性に依存する<property>
という名前の要素のスキーマを定義することです。例えば:文字列型指定されたプロパティのdefault
属性は、任意の文字を受け入れるものに対し、ここでXMLスキーマでバリアントデータ構造をモデル化する方法
<property datatype="integer" default="1234"/>
<property datatype="string" default="Abcde" maxlength="255"/>
、整数型指定されたプロパティのdefault
属性は、有効な整数値を受け入れるもの。
さらに、maxlength
属性はdatatype="string"
場合許可されなければなりません。
I.e.スキーマ検証エラーは、以下の特性の両方で発生する必要があります。
<property datatype="integer" default="NotAnInteger"/>
<property datatype="integer" default="12345" maxlength="100"/> <!-- maxlength not allowed -->
は、私が代わりにdatatype
のxsi:type
を使用している場合、これはXML Schemaでモデル化することは容易であろうことを知っています。 私はここにxsi:type
を使用したくない理由は、少なくとも2つの理由、しかし、があります。私は多くの場所で読んだことがある
それは良いスタイルとはみなされません
xsi:type
、例えば、使用するには、 xsi:type is EvilまたはSmart but useless, part 3。名
xsi:type
は、単に正確に十分な属性の目的を発現しません。 私はむしろdatatype
を好むでしょう。
条件付きタイプの割り当て(= ' ')は、私の必要とするようなものです。残念なことに、XMLスキーマ1.1標準はまだリリースされていないため、多くのXMLプロセッサはXMLスキーマ1.1と互換性がありません。 XML Schema 1.0は私の問題を解決するものを提供していますか? –