2010-09-21 19 views
21

XML/XSD'deki bu etiketler arasında bir fark olup olmadığını biliyor musunuz?<a_element /> ve <a_element xsi: nil = "true" /> arasındaki fark nedir?

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

örn:

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

and 

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

bu eşdeğer musunuz? Bir XSD elemanı varsa

: nil = "false":

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

bu varsayılan xsi tarafından olduğu anlamına gelir. Ve bu, bu öğe için boş değer kabul etmeyeceği anlamına gelir.

Şüphem, bunu kabul eder mi?

<BusinessArea /> 

Bu gerçekten XSD için ne anlama geliyor?

Saygılarımızla

+0

İlgili soru içinde = nillable "true" olan tüm elemanları için geçerli hale getirecek: [ne yapar i: nil = "true" demek? ] (http://stackoverflow.com/questions/463597/what-does-inil-true-mean) –

cevap

0

Benim anlayış aynı olmaması. En azından xml'i bir şemaya göre doğrulamak istiyorsanız. senin şemada size nillable olarak eleman tanımlarsanız diyelim:

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

Bunu, açıkça xml null o öğeyi ayarlamak gerekir:

<SomeName xsi:nill="true" /> 

Eğer xml içinde eleman <SomeName /> gibidir, şemaya göre geçerli olmayacaktır.

+0

Soru xsd hakkında konuşmuyor: double ama xsd: string. Boş dize "" xsd'ye karşı geçersiz hale gelir: double, ancak xsd'ye karşı geçerli hale gelir: string – Niek

3

XML şeması: Yapılar bir eleman olarak kabul edilmesi gerektiğini sinyalizasyon için mekanizmasını tanıtır · geçerli · o gerektiren veya bile mutlaka boş içeriğe izin vermeyen bir içerik türü rağmen hiçbir içeriğe sahip olduğunda. Bir öğe, geçerli değeri xsi: nil değerine sahipse içeriği olmadan geçerli olabilir. Bu şekilde etiketlenmiş bir öğesi boş olmalıdır, ancak , ilgili karmaşık türde izin veriliyorsa, nitelikler taşıyabilir.

Kaynak: http://www.w3.org/TR/xmlschema-1/#xsi_nil

13

Sen XSD BusinessArea olarak bu olsun = nillable "true" olarak tanımlanmalıdır. Şunlar gibi:

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

Bunun anlamı, BusinessArea öğesinin boş değeri olabilir, yani boş.

Ve XML elemanı sonra herhangi bir değer içermiyor eğer nitelik xsi olması gerekir: nil = "true":

<BusinessArea /> 

iki örnek size:

<BusinessArea xsi:nil="true" /> 

Bu geçersiz olmalıdır gösterdi eşdeğer olmamalıdır. nil ve nillable: xsi anlamak için

Kontrol şuna ancak karşı, dize:

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

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

+0

Merhaba YoK, yanıtladığınız için teşekkürler. Sanırım şimdi anlıyorum. Pls, sorularım hakkındaki sorularımı oku. –

+0

@darklydreamingcoder geçersiz belge oluşturmalıdır. Cevabım aynı şekilde güncellendi. – YoK

+0

Merhaba YoK, teşekkürler, güncellemenizi gördüm. Şimdi mükemmel anlıyorum. Soruyu bir kez daha şüphe ile güncelledim (null olmayan öğeler hakkında) –

1
<a_element /> 

bir empty string eşdeğerdir ve xsd karşı geçerli hale getirecek xsd gibi türler: tarih, xsd: datetime, xsd: ondalık vb

<a_element xsi:nil="true"/> 

null ait equilalent ve bunun yerine xsd xml için şema tanımı

İlgili konular