2

お客様から次の XSD ビットを受け取りました。これは、数十のファイルにまたがる従来のスキーマの一部です。

<xs:element name="stateProvinceName">
  <xs:complexType mixed="true">
    <xs:attributeGroup ref="xml:attlist.global-attributes"/>
  </xs:complexType>
</xs:element>

私は彼らが実際に何を望んでいるのかを理解しようとしています。サブ要素がないので、この「xs:mixed」の意味は何ですか? それはsimpleContentであるはずですか、それともコンテンツではありませんか?

私は彼らにもっと標準的な構造を使うべきだと言いました。

<xs:element name="stateProvinceName">
  <xs:complexType>
    <xs:simpleContent>
       <xs:extension base="xs:string">
         <xs:attributeGroup ref="xml:attlist.global-attributes"/>
       </xs:extension>
     </xs:simpleContent>
  </xs:complexType>
</xs:element>

しかし、彼らはそれが同じことを意味するかどうか確信が持てません。両方のスキーマが受け入れます

<stateProvinceName ID="345643">California</stateProvinceName>

<stateProvinceName ID="345643"/>
4

3 に答える 3

5

2つのタイプは表面的には同等かもしれませんが、拡張性は異なります。xs:stringの単純なコンテンツタイプを使用すると、たとえば正規表現で文字列を制約することでタイプを改良できますが、要素のない混合複雑なコンテンツタイプを使用すると、モデルに要素を追加して改良できます。

于 2012-09-18T20:56:54.527 に答える
2

空のコンテンツ モデルでの の使用mixedは完全に標準です。彼らのコンテンツ モデルが気に入らない場合は、別の議論が必要になります。

一般にmixed="true"、特定の複合型の子要素間で文字コンテンツが許可されることを意味します。この場合、コンテンツ モデルに子要素がないため、親要素の正当なコンテンツは文字データ、コメント、および処理命令のみになります。結果として、要素の宣言は、要素が の拡張として宣言された単純なコンテンツを持つ複合型を使用して型付けされた場合と同じ要素のセットを受け入れることになりxs:stringます。

混合コンテンツと文字列のどちらを選択するかは、設計上の決定です。一般に、要素の初期設計でサブ要素の必要性が予測されていなくても、混合コンテンツは自然言語の散文に適しています。一般にxs:string、一連の期待値を制限するための基礎として使用する方が簡単です。stateProvinceName(特定の郵便サービスによって定義されたコードのみを受け入れるように を制限する場合xs:stringは、コンテンツが混在するよりも作業の基礎として適しています。)

于 2012-09-18T16:54:50.307 に答える