22

XML/XSD でこれらのタグに違いがあるかどうか知っていますか?

<a_element /> and <a_element xsi:nil="true"/>

例えば:

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea xsi:nil="true" />
</SpreadCurve>

and

<SpreadCurve>
      <Index>3M</Index>
      <IndexNumber>4587</IndexNumber>
      <BusinessArea />
</SpreadCurve>

これらは同等ですか?

XSD 要素がある場合:

<xsd:element name="BusinessArea" type="xsd:string"/>

これは、デフォルトで xsi:nil="false" であることを意味します。これは、この要素の null 値を受け入れないことを意味します。

私の疑問は、これを受け入れるかどうかです。

<BusinessArea />

これは、XSDにとって実際には何を意味するのでしょうか?

よろしくお願いします

4

4 に答える 4

13

これは、XSDBusinessAreaをnillable="true"として定義する必要があるためです。何かのようなもの:

<xsd:element name="BusinessArea" nillable="true">
.....
</xsd:element> 

これが意味するのは、BusinessArea要素がnull値、つまり空になる可能性があるということです。

また、XMLの要素に値が含まれていない場合は、属性xsi:nil ="true"が必要です。

<BusinessArea xsi:nil="true" />

これは無効である必要があります:

<BusinessArea />

あなたが示した2つの例は同等ではないはずです。

xsi:nilとnillableを理解するためにこれをチェックしてください:

http://www.zvon.org/xxl/XMLSchemaTutorial/Output/ser_over_st0.html

http://www.w3.org/TR/xmlschema-0/#Nils

于 2010-09-21T13:41:30.497 に答える
4

XMLスキーマ:Structuresは、空のコンテンツを必要としない、または必ずしも許可しないコンテンツタイプにもかかわらず、コンテンツがない場合に要素を「有効」として受け入れる必要があることを通知するメカニズムを導入します。要素の属性がxsi:nilで、値がtrueの場合、要素はコンテンツなしで「有効」である可能性があります。そのようにラベル付けされた要素は空である必要がありますが、対応する複合型で許可されている場合は属性を保持できます。

ソース:http ://www.w3.org/TR/xmlschema-1/#xsi_nil

于 2010-09-21T13:33:17.660 に答える
0

私の理解では、それらは同じではありません。少なくとも、スキーマに対してxmlを検証する場合。スキーマで要素をnillableとして定義する場合、次のように言います。

<xsd:element name="SomeName" type="xsd:double" nillable="true"/>

次のように、xmlでその要素をnullに明示的に設定する必要があります。

<SomeName xsi:nill="true" />

xmlで要素が次のよう<SomeName />になっている場合、スキーマに従っては無効になります。

于 2010-09-21T13:31:00.740 に答える