Megosztás a következőn keresztül:


Sématámogatási szint

Ez a szakasz a sématámogatási szinttel kapcsolatos részleteket ismerteti.

A séma közvetlenül a következőket támogatja:

  • Elemek sorozatai.
  • Elemtípusok származtatása.
  • Egyszerű elemek (azok, amelyek egy címkézett unióhoz vannak megfeleltetve).
  • Az XSD/.NET bináris formátum által definiált alaptípusok, beleértve a tartományokat (min/max).
  • Egyszerű támogatás bármely elemhez (nincs korlátozás az elem típusára).
  • Választható elemek és attribútumok alapértelmezett értékekkel.
  • Ismétlődő elemek tartományokkal (min/max).
  • Nillable elemek.

A séma nem támogatja közvetlenül a következőket (ami a "tartalék" viselkedést jelenti):

  • Felhasználó által definiált alaptípusok.
  • Bonyolultabb lehetőségek.
  • Ismeretlen attribútumok elvetése.
  • Ismeretlen attribútumok lekerekítése.
  • Bonyolultabb támogatás bármilyen elemhez.
  • Az összes szerkezet.
  • Key/keyref.

Az alábbiakban részletesen részletezi a különböző sémaösszetevők támogatását. A WCF-ben az adatszerződéssel hasonlítják össze, mert a funkciók hasonlósága miatt. A különbséget ismertetjük.

Általában a tartalék viselkedések esetében:

  • attribútumok WS_STRING;
  • elemtartalmak WS_XML_BUFFER.
  • A complexType egy WS_XML_BUFFER mezőt tartalmazó struktúrára épül.
  • Az egyszerű típusok WS_STRING.

A wsutil figyelmeztetéseket generál a jelenleg nem teljes mértékben támogatott sémaösszetevőkhöz. Előfordulhat, hogy az alkalmazásnak további ellenőrzést kell végeznie ezen összetevők esetében. A túlóra wsutil továbbfejleszthető a futtatókörnyezetben jelenleg támogatott egyes funkciók kezeléséhez, például az alapértelmezett értéktámogatáshoz. A wsutil a szerializálással együtt fejleszthető más funkciók, például az absztrakt funkciók támogatása érdekében is. A nem támogatott sémaösszetevők száma idővel csökkenthető.

Az általános sémadokumentum

Globális definíció, amely hatással lehet a séma beágyazott definícióira. Ezek globális attribútumok, amelyek a séma összes definíciója esetében alkalmazhatók.

<xs:schema> attribútumok

  • attributeFromDefault Ignored.
  • blockDefault Ignored.
  • elementFormDefault Ignored. Ez eltér a dataContracttól, mivel a nem minősített elemek futásidőben támogatottak.
  • finalDefault Ignored. A végleges koncepcióhoz nincs C nyelvi támogatás.
  • az azonosító figyelmen kívül hagyva.
  • a targetNamespace támogatott, és a szolgáltatásnévtérre van megfeleltetve.
  • A verzió figyelmen kívül hagyva.

<xs:schema> tartalma

  • támogatottak; A wsutil megköveteli, hogy az összes szükséges definíció bemeneti fájlként legyen elérhető a fordítási idő alatt.
  • újradefiniált mellőzve. Ezt a wsutil nem támogatja.
  • importálás támogatott; A wsutil megköveteli, hogy az összes szükséges definíció bemeneti fájlként legyen elérhető a fordítási idő alatt.
  • simpleType Támogatott– lásd az alábbi egyszerű típusszakaszt.
  • complexType Támogatott– lásd a "complexType" szakaszt
  • csoport figyelmen kívül hagyva.
  • az attribútumcsoport figyelmen kívül hagyva.
  • elem támogatott; globális elemdefiníciókra.
  • attribútum támogatott; globális attribútumdefiníciókra képez le.
  • jelölés figyelmen kívül hagyva

Összetett típus

A <xs:complexType>által képviselt összetett típus lehet egyszerű vagy összetett típus korlátozása, egyszerű típus kiterjesztése, tömbök vagy struktúra. Észrevette, hogy az egyszerű típusok bővítményében nincs öröklés és nincs xsi:type támogatás.

<xs:complexType> attribútumok

  • absztrakt Figyelmeztetés létrehozása a nem támogatott funkciókról, a kódlétrehozás módosítása nélkül.
  • tiltsa le a nem támogatott funkcióra vonatkozó figyelmeztetés létrehozását, és ne módosítsa a kódgenerálást.
  • végleges Figyelmeztetés létrehozása a nem támogatott funkcióról, a kódgenerálás módosítása nélkül.
  • az azonosító figyelmen kívül hagyva.
  • vegyes figyelmeztetés létrehozása a nem támogatott funkciókról, a szerkezetre való visszalépés WS_XML_BUFFER, ha igaz.
  • A név támogatott, és a struktúratípus nevére van megfeleltetve.

<xs:complexType> tartalma

Ez a struktúra típusdefiníciója. A complexContent korlátozás nem támogatott.

  • complexContent Support komplex tartalombővítmény. Leképezések az öröklődés szerkezetéhez.
  • csoport Jelenleg visszaesik a struktúrába WS_XML_BUFFER mezővel. Az alatta lévő részecske alapján is támogatható.
  • egyesítésként támogatott választási lehetőség. Ez az adatszerződésben nem támogatott.
  • szekvencia támogatott – egy struktúra mezőire képez le térképeket
  • attribútum a "tiltott" kivételével támogatott. ha "tiltott", WS_XML_BUFFER vissza kell állítani a struktúrába.
  • attributeGroup támogatott – attribútumok sorozatának leképezése
  • anyAttribute Ignored
  • AttributeGroupRef Támogatott – attribútumok sorozatának leképezése.
  • A GroupRef jelenleg WS_XML_BUFFER mezővel visszavált a struktúrára. Az alsó csoportnak megfelelően támogatott.
  • Minden támogatott, megfeleltetés a XML_BUFFER
  • (üres) támogatott leképezés üres strukturált leírásra, és nem generált szerkezetet.

<xs:sequence> összetett típusban: tartalom

wsutil csak teljes mértékben támogatja a minOccurs = 1 és maxOccurs = 1 sorozatot; ellenkező esetben az összetett típus jelenleg WS_XML_BUFFER. Ez a szerkezetek tömbjeként is támogatott.

  • elem támogatott; az egyes példányok a struktúra egy mezőjére képeznek le.
  • Csoportos tartalék; A complexType visszaesik WS_XML_BUFFER.
  • Minden tartalék; A complexType visszaesik WS_XML_BUFFER.
  • támogatott választási lehetőség; megfeleltetés az egyesítő mezőre.
  • sorozat-tartalék; A complexType visszaesik WS_XML_BUFFER.
  • bármely támogatott; XML_BUFFER van leképezve.
  • (üres) támogatott; A complexType üres struktúra lehet, ha nincsenek attribútumok.

Elemek

<xs:element>három környezetben fordulhat elő.

  • Ez egy <xs:sequence>belül fordulhat elő, amely egy normál szerkezet mezőjét írja le. Ebben az esetben a maxOccurs attribútumnak 1-nek kell lennie. A mező nem kötelező, ha a minOccurs 0.
  • Ez egy tömb egy mezőjét leíró <xs:sequence>belül fordulhat elő. Ebben az esetben a maxOccurs attribútumnak 1-nél nagyobbnak vagy "kötetlennek" kell lennie.
  • Ez egy <xs:schema> belül fordulhat elő globális elemleírásként.

<xs:element> egy <xs:sequence> vagy <xs:choice> mezőként egy struktúrában

  • ref támogatott; globális elemre való hivatkozással oldható fel.
  • name Supported, maps to field name.
  • Írja be a támogatott típust, és a mezők típusának megfeleltethető. További információ: "Típusleképezés". Ha nincs megadva (és az elem nem tartalmaz névtelen típust), xs:anyType feltételezve.
  • tiltsa le a nem támogatott funkcióra vonatkozó figyelmeztetés létrehozását, és ne módosítsa a kódgenerálást.
  • alapértelmezett figyelmeztetés létrehozása a nem támogatott funkcióról, a kódlétrehozás módosítása nélkül.
  • kijavítottuk a nem támogatott funkcióra vonatkozó figyelmeztetést, és nem változik a kódgenerálás.
  • az űrlap figyelmen kívül hagyva. Szerializálási rétegünk a minősített és a nem minősített űrlapokat is támogatja.
  • az azonosító figyelmen kívül hagyva.
  • a maxOccurs egyetlen adatmezőre képez le, ha az értéke 1. tömbmezőre van leképezve (ismétlődő elem), ha a maxOccurs értéke 1-nél nagyobb.
  • a minOccurs ha 0, a mezőbeállítások FIELD_OPTIONAL értékre vannak állítva, ha nincs beállítva a nillable érték.
  • nillable A mező nillable. További részletekért lásd szerializálási.

<xs:element> globális elemként: attribútumok

A minOccurs és a maxOccurs attribútumok globális elemleírásként érvénytelenek. Az alkalmazás közvetlenül szerializálási rétegben vagy csatornarétegekben használhatja a generált elemleírást.

  • absztrakt Figyelmeztetés létrehozása a nem támogatott funkciókról, a kódlétrehozás módosítása nélkül.
  • tiltsa le a nem támogatott funkcióra vonatkozó figyelmeztetés létrehozását, és ne módosítsa a kódgenerálást.
  • alapértelmezett figyelmeztetés létrehozása a nem támogatott funkcióról, a kódlétrehozás módosítása nélkül.
  • végleges Figyelmeztetés létrehozása a nem támogatott funkcióról, a kódgenerálás módosítása nélkül.
  • kijavítottuk a nem támogatott funkcióra vonatkozó figyelmeztetést, és nem változik a kódgenerálás.
  • az azonosító figyelmen kívül hagyva.
  • name Supported – map to name of the global element description, and it the base for the anonymous type if specified.
  • A nillable Ignored-applicationnek jobb jelölővel kell meghívnia.
  • a substitutionGroup visszaesik a struktúrába WS_XML_BUFFER ha be van állítva. A wsutil nem támogatja a helyettesítéscsoportot.
  • Írja be a Támogatott típust, és képezz le az elem típusára.

<xs:element> globális elemként: tartalom

  • simpleType támogatott; megfelelteti a típusdefiníciót.
  • a complexType támogatott; térképeket egy összetett típusra.
  • egyedi figyelmeztetés létrehozása a nem támogatott funkciókról, a kódlétrehozás módosítása nélkül. A wsutil nem támogatja az elemkorlátozásokat.
  • key Generate warning about unsupported feature, no change to code generation. A wsutil nem támogatja az elemkorlátozásokat.
  • keyref Figyelmeztetés generálása a nem támogatott funkcióról, a kódlétrehozás módosítása nélkül. A wsutil nem támogatja az elemkorlátozásokat.
  • (üres) Támogatott; a típusspecifikációt nem tartalmazó elem xs:anyType néven lesz kezelve.

Egyszerű típusok

<xs:simpleType> attribútumok

  • Végleges figyelmeztetés létrehozása a nem támogatott funkciókról, a kódlétrehozás módosítása nélkül.
  • Az azonosító figyelmen kívül hagyva
  • A név támogatott, leképezi a nevet.

<xs:simpleType> tartalma

  • A korlátozás támogatott, enumerálási típusra vagy tartományra van leképezve. Lásd: "xs:simpleType restrictions" (xs:simpleType-korlátozások) szakasz.
  • Lista: Figyelmeztetés létrehozása a nem támogatott funkciókról, a XML_BUFFER való visszalépés.
  • Union Generate warning about unsupported feature, fallback to XML_BUFFER.

Egyszerű típuskorlátozás

Bizonyos aspektusok az integráltípusokban és sztringek típusában engedélyezettek a tartomány és az enumerálás támogatásának engedélyezéséhez.

enumerálás támogatása

<xs:enumerálás> egyszerű típuskorlátozás a sztring alaptípusára enumerálási típusként van kezelve. Ebben az esetben az Alap attribútumnak sztringtípusnak kell lennie. Enumerálás esetén a rendszer figyelmen kívül hagyja az összes többi aspektust.

tartomány egyszerű típustámogatáson

Egyes aspektusok az egyszerű típusok esetében támogatottak, amelyek hatékonyan támogatják a típuson engedélyezett tartományt. Az alábbiakban az integráltípusokra és a lebegőpontos/kettős típusokra vonatkozó korlátozásokat íme. A más aspektusokkal rendelkező egyszerű típusok WS_STRING típusra kerülnek

  • minExclusive támogatott
  • minInclusive támogatott
  • maxExclusive támogatott
  • maxInclusive támogatott
  • totalDigits Figyelmeztetést generál a nem támogatott funkcióval kapcsolatban, nincs változás a kódgenerálásban.
  • a fractionDigits figyelmeztetést generál a nem támogatott funkciókról, a kódlétrehozás nem változik.
  • length Figyelmeztetés létrehozása a nem támogatott funkcióról, a kódlétrehozás módosítása nélkül.
  • minLength Figyelmeztetés létrehozása a nem támogatott funkcióról, a kódlétrehozás módosítása nélkül.
  • maxLength Figyelmeztetés generálása a nem támogatott funkcióról, a kódlétrehozás módosítása nélkül.
  • enumerálás Figyelmeztetés generálása a nem támogatott funkcióval kapcsolatban, a kódlétrehozás módosítása nélkül.
  • whiteSpace – Figyelmeztetés létrehozása a nem támogatott funkciókról, a kódlétrehozás módosítása nélkül.
  • minta: Figyelmeztetés létrehozása a nem támogatott funkciókról, a kódlétrehozás módosítása nélkül.
  • (üres) Támogatott.

a minLength és a maxLength sztringen jelenleg nem támogatott, de kívánatos funkció a támogatáshoz.

Örökség

A Wsutil támogatja az összetett típusok öröklését, vagyis egy struktúra egy másik struktúrából örökölhet, hasonlóan a C++ interfészörökléséhez. Ez az xs:complexContentExtension><keresztül történik. <xs:simpleContentExtension> támogatott, de a típusöröklés helyett egyszerű szerkezetként jön létre alaptípussal.

Típus/primitív leképezés

Az azonosítókat normalizálni kell az XML-ben lévő NCNamesből való fordításkor. A sztringek nem választhatók; a mutatótípusok nem választhatók; az integráltípusok és a lebegőpontos/dupla típusok nem választhatók, a defaultValue értéke pedig 0.

Táblázat az XSD-típusok és a Sapphire-adattípusok közötti megfeleltetést mutatja.