2011-07-05 5 views
1

私はXMLスキーマを設計するのにvenetianブラインドパターンを使用していますが、すべての型がグローバルレベルで宣言され、グローバルスコープで定義された型。ベネチアンブラインドパターンの文字列型でもシンプルな型を明示する必要があります

私の質問はこれです:

ノー他の制限を持つ単純な文字列である2つの要素を宣言したい場合は、私は彼らがグローバルスコープで宣言し、それらを使用する必要がありますか?または、要素自体の中に単純な型を直接宣言することはできますか?私は以下に挙げた第2のシナリオでベネチアのブラインドを壊していますか?

<xsd:schema> 
<xsd:simpleType name="ApplicantName"> 
    <xsd:restriction base="xsd:string"/> 
</xsd:simpleType> 
<xsd:simpleType name="ApplicantCountry"> 
    <xsd:restriction base="xsd:string"/> 
</xsd:simpleType> 
<xsd:element name="Application"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="ApplicantName" type="ApplicantName"/> 
      <xsd:element name="ApplicantCountry" type="ApplicantCountry"/> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 
</xsd:schema> 

するか、私はこれを使用することができます。

たとえば、私は2つのいずれかを実行することができます。

<xsd:schema> 
<xsd:element name="Application"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="ApplicantName" type="xsd:string"/> 
      <xsd:element name="ApplicantCountry" type="xsd:string"/> 
     </xsd:sequence> 
    </xsd:complexType> 

</xsd:element> 
</xsd:schema> 
+1

申し訳ありませんがニックピッキングですが、それらは要素であり属性ではありません。 – Filburt

+0

@Filburt、それを指摘してくれてありがとう。それはタイプミスでした。それを修正しました。 –

答えて

1

私は言っています:それは異なります。ヴェネチアン・ブラインドの目標はタイプを再利用することですが、バックエンド・データベースによってフィールド長が課されるなど、いくつかの要素が共通の制約を共有しない限り、このパターンを宗教的に守ることはできません。

3

なぜこのパターンに従うことにしましたか?パターンによって約束されている利点を提供するオプションはどれですか?これらの質問に答えると、私はあなたの答えがあると思います。

パターンは最初のアプローチを必要としているようです。パターンに実際に価値があるかどうか、それとも厳密に従うべきかどうかは、あなたが決定することです。問題の中心には、最初にパターンを使用して達成しようとしていることの問題があります。

関連する問題