2

XSDのdefaultValue属性の目的は何なのか疑問に思います。たとえば、complexTypeを考えてみましょう

 <xs:complexType name="myType">
    <xs:sequence>
        <xs:element name="test1" type="type1" defaultValue="x" minOccurs="0" maxOccurs="1"/>
        <xs:element name="test2" type="type2"/>
    </xs:sequence>
 </xs:complexType>

フォームのXMLファイルを検証できるようになります

<myType>
  <test2>dsjhfdshflk</test2>
</myType>

では、defaultValue属性のポイントは何<test1>ですか?

よろしくお願いします

ミシャ

4

1 に答える 1

2

スキーマフラグメントで宣言されたデフォルト値にはtest1、スキーマプロセッサを<test1/>実質的にと同義として扱うようにする効果があります<test1>x</test1>。スキーマプロセッサがサンプルインスタンスを次の同義語として扱うことはありません。

<myType>
  <test1>x</test1>
  <test2>dsjhfdshflk</test2>
</myType>

これは、要素がまったく表示されない場合は常にデフォルト値を指定することを好む一部のユーザーを失望させます。

その理由は、一般に、要素は最大で1回、または子の中で最大で1つの場所に表示されるように制限されていないためです。タイプ定義のxs:sequenceがmaxOccurs ='unbounded'のxs:choiceに置き換えられた場合、 <test1>x</test1>test1が表示される可能性のある場所に提供することを提案したが、そのようなデフォルトのtest1要素を無数に提供することを強制されなかった言語。これは、XSDを設計したワーキンググループのメンバーにとっては良い考えとは思えませんでした。

では、なぜデフォルトがあるのでしょうか。便利な場合もあります。要素のデフォルトを許可すると、子要素と属性の処理の並列性が高まります。これは、責任あるワーキンググループの一部の明確な目標でした。

于 2013-03-05T19:34:34.503 に答える