Şema destek düzeyi
Bu bölüm şema desteği düzeyiyle ilgili ayrıntıları kapsar.
Şema doğrudan aşağıdakileri destekler:
- Öğe dizileri.
- Öğe türlerinin türetilmesi.
- Öğelerin basit seçenekleri (etiketli bir birleşimle eşlenenler).
- Aralıklar dahil olmak üzere XSD / .NET ikili biçimiyle tanımlanan temel türler (min/max).
- Herhangi bir öğe için basit destek (öğe türüyle ilgili kısıtlama yoktur).
- Varsayılan değerlere sahip isteğe bağlı öğeler ve öznitelikler.
- Aralıklarla yinelenen öğeler (en az/en fazla).
- Sıhhatli öğeler.
Şema aşağıdakileri doğrudan desteklemez (yani "geri dönüş" davranışı):
- Kullanıcı tanımlı temel türler.
- Daha karmaşık seçenekler.
- Bilinmeyen öznitelikler reddedildi.
- Bilinmeyen öznitelikleri yuvarlama.
- Herhangi bir öğe için daha karmaşık destek.
- Tüm yapı.
- Key/keyref.
Aşağıda farklı şema bileşeni desteğinin ayrıntılı dökümü yer alır. İşlevsellik benzerliği nedeniyle WCF'deki veri sözleşmesiyle karşılaştırılır. Fark açıklanacaktır.
Genellikle geri dönüş davranışları için:
- öznitelikleri WS_STRING geri döner;
- öğe içeriği WS_XML_BUFFER geri döndürülecek.
- complexType, WS_XML_BUFFER alanını içeren yapıya geri döner.
- Basit türler WS_STRING geri döner.
wsutil, şu anda tam olarak desteklenmeyen şema bileşenleri için uyarılar oluşturur. Uygulamanın bu bileşenler için ek doğrulama yapması gerekebilir. Çalışma zamanında desteklenen varsayılan değer desteği gibi bazı özellikleri işlemek için fazla mesai wsutil geliştirilebilir. wsutil ayrıca soyut gibi diğer özellikleri desteklemek için serileştirme ile birlikte geliştirilebilir. Desteklenmeyen şema bileşenlerinin sayısı zaman içinde azaltılabilir.
Genel Şema Belgesi
Şemadaki eklenmiş tanımları etkileyebilecek genel tanım. Bunlar, şemadaki tüm tanımlar için geçerli olan genel özniteliklerdir.
xs:schema> özniteliklerini <
- attributeFromDefault Yoksayıldı.
- blockDefault Yoksayıldı.
- elementFormDefault Yoksayıldı. Çalışma zamanında nitelenmemiş öğeler desteklendiğinden bu dataContract işlevinden farklıdır.
- finalDefault Yoksayıldı. Final kavramı için C dili desteği yoktur.
- id Yoksayıldı.
- targetNamespace Desteklenir ve hizmet ad alanına eşlenir.
- sürüm Yoksayıldı.
xs:schema> içeriğini <
- include Supported; wsutil, derleme sırasında tüm gerekli tanımların giriş dosyaları olarak kullanılabilir olmasını gerektirir.
- Yoksayıldı'nın yeniden tanımlarını belirleyin. wsutil bunu desteklemiyor.
- içeri aktarma Desteklenir; wsutil, derleme sırasında tüm gerekli tanımların giriş dosyaları olarak kullanılabilir olmasını gerektirir.
- simpleType Supported- aşağıdaki basit tür bölümüne bakın.
- complexType Supported- bkz. 'complexType' bölümü
- grup Yoksayıldı.
- attributeGroup Yoksayıldı.
- öğesi Desteklenir; genel öğe tanımlarıyla eşler.
- özniteliği Desteklenir; genel öznitelik tanımlarıyla eşler.
- yoksayılan gösterimi
Karmaşık Tür
<xs:complexType>ile temsil edilen karmaşık tür, basit türün veya karmaşık türün, basit türün uzantısının, dizilerin veya yapının kısıtlanması olabilir. Basit türlerin uzantısında devralma ve xsi:type desteği olmadığını fark ettim.
xs:complexType> özniteliklerini <
- soyut Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- engelle Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- son Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- id Yoksayıldı.
- karma Desteklenmeyen özellik hakkında uyarı oluştur, doğruysa WS_XML_BUFFER ile yapıya geri dönme.
- name Desteklenir ve yapı türü adıyla eşlenir.
xs:complexType> içeriğini <
Bu, yapı için tür tanımıdır. complexContent kısıtlaması desteklenmiyor.
- complexContent Desteği karmaşık içerik uzantısı. Yapı devralmayı eşler.
- group Şu anda WS_XML_BUFFER alanıyla yapıya geri dönüş. Alt parçacıklara göre desteklenebilir.
- seçim birleşim olarak desteklenir. Bu, veri sözleşmesinde desteklenmez.
- sequence Supported - bir yapının alanlarıyla eşler
- özniteliği , 'yasak' özel durumuyla desteklenir. WS_XML_BUFFER ile 'yasaklanmış' ise yapıya geri dönüş.
- attributeGroup desteklenir - öznitelik dizisiyle eşler
- anyAttribute Yoksayıldı
- AttributeGroupRef Desteklenir - öznitelik dizisiyle eşler.
- GroupRef Şu anda WS_XML_BUFFER alanıyla yapıya geri dönüş. Altındaki gruba göre desteklenebilir.
- Desteklenenler, XML_BUFFER ile eşler
- (boş) desteklenen eşleme, yapı oluşturulmadan boş yapı açıklamasına eşleniyor.
karmaşık türde xs:sequence><: contents
wsutil yalnızca minOccurs = 1 ve maxOccurs = 1 dizisini tam olarak destekler; aksi takdirde karmaşık tür şu anda WS_XML_BUFFER geri döner. Yapı dizisi olarak desteklenebilir.
- öğesi Desteklenir; her örnek, yapıdaki bir alana eşler.
- Grup geri dönüşü; complexType, WS_XML_BUFFER geri dönüşüdür.
- Tüm geri dönüşler; complexType, WS_XML_BUFFER geri dönüşüdür.
- tercih desteklenir; birleşim alanına eşleyin.
- sıra geri dönüşü; complexType, WS_XML_BUFFER geri dönüşüdür.
- herhangi bir Destekleniyor; XML_BUFFER eşlendi.
- (boş) desteklenir; öznitelik yoksa complexType boş bir yapı olabilir.
Öğe
<xs:element>üç bağlamda oluşabilir.
- Normal bir yapının alanını açıklayan <xs:sequence>içinde oluşabilir. Bu durumda maxOccurs özniteliği 1 olmalıdır. minOccurs 0 ise alan isteğe bağlıdır.
- Dizi alanını açıklayan bir <xs:sequence>içinde oluşabilir. Bu durumda maxOccurs özniteliği 1'den büyük veya 'ilişkisiz' olmalıdır.
- Genel öğe açıklaması olarak <xs:schema> içinde oluşabilir.
<xs:element><xs:sequence> veya <xs:choice> bir yapıda alan olarak
- ref Desteklenir; genel öğeye başvurmak için çözümlendi.
- ad Desteklenir, alan adıyla eşler.
- türü Desteklenir, alan türüne eşler. Daha fazla bilgi için bkz. 'Tür Eşlemesi'. Belirtilmezse (ve öğesi anonim bir tür içermiyorsa), xs:anyType varsayılır.
- engelle Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- varsayılan Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- düzeltildi Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- form Yoksayıldı. Serileştirme katmanımız hem nitelenmiş hem de nitelenmemiş formları destekler.
- id Yoksayıldı.
- maxOccurs, 1'e eşitse tek bir veri alanıyla eşlenir. maxOccurs değeri 1'den büyükse bir dizi alanına (yinelenen öğe) eşlenir.
- minOccurs if 0, alan seçenekleri FIELD_OPTIONAL olarak ayarlanır( nillable ayarlanmadıysa).
- nillable Alan nillable. Daha fazla ayrıntı için bkz. Serileştirme.
genel öğe olarak <xs:element>: öznitelikler
minOccurs ve maxOccurs öznitelikleri genel öğe açıklaması olarak geçersiz. Uygulama, oluşturulan öğe açıklamasını doğrudan serileştirme katmanında veya kanal katmanlarında kullanabilir.
- soyut Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- engelle Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- varsayılan Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- son Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- düzeltildi Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- id Yoksayıldı.
- name Supported- genel öğe açıklamasının adıyla eşler ve belirtildiğinde anonim türün tabanıdır.
- nillable Ignored-application öğesinin doğru bayrakla çağrı yapması gerekir.
- substitutionGroup fallback to structure with WS_XML_BUFFER if set. wsutil, substitutionGroup'u desteklemez.
- türü Desteklenir ve öğesinin türüyle eşleyin.
<xs:element> genel öğe olarak: contents
- simpleType Desteklenir; , tür tanımıyla eşler.
- complexType desteklenir; karmaşık bir türe eşler.
- benzersiz Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok. wsutil, öğe kısıtlamalarını desteklemez.
- anahtar Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok. wsutil, öğe kısıtlamalarını desteklemez.
- keyref Desteklenmeyen özellik hakkında uyarı oluşturun, kod oluşturmada değişiklik yok. wsutil, öğe kısıtlamalarını desteklemez.
- (boş) Destekli; türü belirtimi olmayan öğe xs:anyType olarak değerlendirilir.
Basit Türler
xs:simpleType> özniteliklerini <
- Son Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- Kimlik Yoksayıldı
- Ad Desteklenir, tür adıyla eşler.
xs:simpleType> içeriğini <
- Kısıtlama Desteklenir, numaralandırma türüne veya aralığına eşler. "xs:simpleType kısıtlamaları" bölümüne bakın.
- Liste Desteklenmeyen özellik hakkında uyarı oluştur, XML_BUFFER geri dönüş.
- Union Desteklenmeyen özellik hakkında uyarı oluştur, XML_BUFFER geri dönüş.
Basit Tür kısıtlaması
Aralık ve sabit listesi desteğine izin vermek için belirli modellere tam sayı türlerinde ve dize türünde izin verilir.
numaralandırma desteği
<xs:sabit listesi> temel dize türü için basit tür kısıtlaması sabit listesi türü olarak değerlendirilir. Bu durumda, Base özniteliği dize türü OLMALıDıR. Numaralandırma durumunda, diğer tüm modeller yoksayılır.
basit tür desteğinde aralık
Bazı modeller, tür üzerinde etkin aralıkta izin verilen basit türlerde desteklenir. Integral türleri ve float/double türleri için kısıtlama aşağıdadır. Diğer modellerle basit türler WS_STRING türüne geri döner
- minExclusive Supported
- minInclusive Desteklenir
- maxExclusive Desteklenir
- maxInclusive Desteklenir
- totalDigits Desteklenmeyen özellik hakkında uyarı oluşturun, kod oluşturmada değişiklik yok.
- fractionDigits Desteklenmeyen özellik hakkında uyarı oluşturur, kod oluşturmada değişiklik olmaz.
- uzunluk Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- minLength Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- maxLength Desteklenmeyen özellik hakkında uyarı oluşturun, kod oluşturmada değişiklik yok.
- numaralandırma Desteklenmeyen özellik hakkında uyarı oluşturun, kod oluşturmada değişiklik yok.
- whiteSpace Desteklenmeyen özellik hakkında uyarı oluştur, kod oluşturmada değişiklik yok.
- desen Desteklenmeyen özellik hakkında uyarı oluşturun, kod oluşturmada değişiklik yok.
- (boş) Destekli.
dizedeki minLength ve maxLength şu anda desteklenmemektedir ancak desteklenmesi istenen bir özelliktir.
Miras
Wsutil karmaşık türlerin devralınmasını destekler, yani bir yapı C++ içindeki arabirim devralma işlemine benzer şekilde başka bir yapıdan devralabilir. Bu işlem <xs:complexContentExtension>aracılığıyla yapılır. <xs:simpleContentExtension> desteklenir, ancak tür devralma yerine ilk alan olarak temel tür ile düz yapı olarak oluşturulur.
Tür/ilkel eşleme
XML'de NCNames'ten çevrilirken tanımlayıcıların normalleştirilmesi gerekir. Dizeler nillable; işaretçi türleri nillable; integral türleri ve float/double nillable ve defaultValue değeri 0 olarak ayarlanır.