web-dev-qa-db-ja.com

MinOccurs 0およびnillable true

私のwsdlには要素があります:

<xsd:element minOccurs="0" name="birthDate" nillable="true" type="xsd:dateTime"/>

Nillable trueはnull値を許可することを知っていますが、これはxml空タグを許可できることを意味しますか?すなわち

<birthDate/>
20
SpongebobJunior

nillable="true"を設定すると、<birthDate>タグは次のように表示されます。

<birthDate xsi:nil="true"/>

ただし、minOccurs="0"も設定するため、XMLから<birthDate>タグを完全に省略することもでき、XSDに対しても検証されます。

<birthDate/>または<birthDate></birthDate>は、XSDルールに従ってnullと見なされないことに注意してください。

this great blog を読んで、さらに読んでください。

26
Tim Biegeleisen

上記の答えに私の見解を追加します。多くの初心者が知らない、または考慮しない基本的なことは、xsi変数をSchema Instance名前空間にバインドすることです。

例:xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" [xml開始タグの任意の場所にこれを属性として追加]。

この場合、属性プレフィックス「xsi」はXML名前空間「 http://www.w3.org/ 2001/XMLSchema-instance "。このバインディングは、任意の親要素またはルート要素自体で実行できます。バインディングを実行する場所は、xsiを使用可能にするスコープによって異なります。

  • ネストされたto宣言のすべての要素は同じ値を取得します
  • Namespcaeのバインドには任意の名前を使用できますが、簡潔にするために、xsifor "-を使用することを常にお勧めします http://www.w3.org/2001/XMLSchema-instance "

PS:必要に応じてxml名前空間のバインドとプレフィックス属性の重要性を認識しました。3時間余分に滞在して仕事で苦労したとき、nillable属性の場合でもxmlノードがそのxsdによって検証されない理由スキーマ定義に存在します。

0
krishna kanth