Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tej sekcji omówiono szczegółowe informacje dotyczące poziomu obsługi schematu.
Schemat obsługuje bezpośrednio następujące elementy:
- Sekwencje elementów.
- Wyprowadzanie typów elementów.
- Proste opcje elementów (te, które są mapowane na otagowany związek).
- Podstawowe typy zdefiniowane przez format binarny XSD/.NET, w tym zakresy (min/maksimum).
- Prosta obsługa dowolnego elementu (brak ograniczeń dotyczących typu elementu).
- Opcjonalne elementy i atrybuty z wartościami domyślnymi.
- Powtarzanie elementów z zakresami (minimalna/maksymalna).
- Elementy, które można zmiecić.
Schemat nie obsługuje następującego bezpośrednio (co oznacza zachowanie "rezerwowe"):
- Zdefiniowane przez użytkownika typy podstawowe.
- Bardziej skomplikowane wybory.
- Odrzucanie nieznanych atrybutów.
- Zaokrąglanie nieznanych atrybutów.
- Bardziej skomplikowana obsługa każdego elementu.
- Cała konstrukcja.
- Klucz/kluczref.
Poniżej przedstawiono szczegółowy podział obsługi różnych składników schematu. Jest porównywany z kontraktem danych w programie WCF, ponieważ podobieństwo w funkcjach. Różnica zostanie opisana.
Ogólnie rzecz biorąc, w przypadku zachowań rezerwowych:
- atrybuty są poparte WS_STRING;
- zawartość elementu jest tworzona w oparciu o WS_XML_BUFFER.
- obiekt complexType jest wspierany do struktury zawierającej pole WS_XML_BUFFER.
- Proste typy są wspierane do WS_STRING.
Program wsutil generuje ostrzeżenia dotyczące składników schematu, które nie są obecnie w pełni obsługiwane. Aplikacja może wymagać dodatkowej weryfikacji dla tych składników. Narzędzia w godzinach nadliczbowych można ulepszyć, aby obsługiwać niektóre funkcje, które są obecnie obsługiwane w środowisku uruchomieniowym, na przykład obsługa wartości domyślnych. Narzędzia wsutil można również ulepszyć wraz z serializacji, aby obsługiwać inne funkcje, takie jak abstrakcyjne. W czasie można zmniejszyć liczbę nieobsługiwanych składników schematu.
Ogólny dokument schematu
Definicja globalna, która może mieć wpływ na definicje osadzone w schemacie. Są to atrybuty globalne, które mają zastosowanie do wszystkich definicji w schemacie.
atrybuty <xs:schema>
- attributeFromDefault zignorowany.
- blockDefault Zignorowano.
- elementFormDefault zignorowany. Różni się to od danychContract, ponieważ niekwalifikowane elementy są obsługiwane w środowisku uruchomieniowym.
- finalDefault Zignorowano. Nie ma obsługi języka C dla koncepcji finalnej.
- identyfikator zignorowany.
- targetNamespace Supported i zamapowany na przestrzeń nazw usługi.
- wersja zignorowana.
<zawartość> xs:schema
- uwzględnij obsługiwane; Narzędzie wsutil wymaga, aby wszystkie niezbędne definicje są dostępne jako pliki wejściowe w czasie kompilacji.
- ponownie zdefiniować zignorowane. Narzędzie wsutil nie obsługuje tego.
- importowanie obsługiwane; Narzędzie wsutil wymaga, aby wszystkie niezbędne definicje są dostępne jako pliki wejściowe w czasie kompilacji.
- simpleType Supported — zobacz sekcję prostego typu poniżej.
- complexType Supported — zobacz sekcję "complexType"
- grupa zignorowana.
- attributeGroup ignorowane.
- element Obsługiwany; mapuje na definicje elementów globalnych.
- atrybut Obsługiwany; mapuje na definicje atrybutów globalnych.
- notacja ignorowana
Typ złożony
Typ złożony reprezentowany przez <xs:complexType>może być ograniczeniem prostego typu lub typu złożonego, rozszerzenia prostego typu, tablic lub struktury. Zauważ, że w rozszerzeniu typów prostych nie ma dziedziczenia i nie ma obsługi xsi:type.
atrybuty <xs:complexType>
- abstract Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- blokuj Generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- final Generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- identyfikator zignorowany.
- Mieszane generowanie ostrzeżenia o nieobsługiwanej funkcji, powrót do struktury z WS_XML_BUFFER, jeśli prawda.
- nazwa Obsługiwana i mapowana na nazwę typu struktury.
<zawartość> xs:complexType
Jest to definicja typu struktury. ograniczenie complexContent nie jest obsługiwane.
- complexContent — obsługa złożonego rozszerzenia zawartości. Mapuje na dziedziczenie struktury.
- grupa Obecnie powrót do struktury z polem WS_XML_BUFFER. Można wspierać zgodnie z cząstką pod spodem.
- wybór obsługiwany jako unia. Nie jest to obsługiwane w umowie danych.
- sekwencja obsługiwana — mapuje na pola struktury
- atrybut obsługiwany z jednym wyjątkiem "zabronione". powrót do struktury z WS_XML_BUFFER, jeśli "zabronione".
- attributeGroup obsługiwane — mapuje na sekwencję atrybutów
- anyAttribute ignorowane
- AttributeGroupRef Supported — mapuje na sekwencję atrybutów.
- GroupRef Obecnie powrót do struktury z polem WS_XML_BUFFER. Może być obsługiwane zgodnie z pod grupą.
- Wszystkie obsługiwane, mapuje na XML_BUFFER
- (puste) obsługiwana mapa z pustym opisem struktury bez wygenerowanej struktury.
<xs:sequence> w typie złożonym: zawartość
wsutil tylko w pełni obsługują sekwencję minOccurs = 1 i maxOccurs = 1; w przeciwnym razie typ złożony jest obecnie wspierany do WS_XML_BUFFER. Może być obsługiwany jako tablica struktur.
- element Obsługiwany; każde wystąpienie mapuje na pole w strukturze.
- Rezerwowa grupa; parametr complexType jest rezerwowy do WS_XML_BUFFER.
- Wszystkie rezerwowe; parametr complexType jest rezerwowy do WS_XML_BUFFER.
- wybór obsługiwany; mapuj na pole unii.
- rezerwowa sekwencja; parametr complexType jest rezerwowy do WS_XML_BUFFER.
- obsługiwane; zamapowane na XML_BUFFER.
- (puste) obsługiwane; complexType może być pustą strukturą, jeśli nie ma atrybutów.
Pierwiastki
<xs:element>może wystąpić w trzech kontekstach.
- Może wystąpić w <xs:sequence>, opisując pole zwykłej struktury. W takim przypadku atrybut maxOccurs musi mieć wartość 1. Pole jest opcjonalne, jeśli wartość minOccurs wynosi 0.
- Może wystąpić w <xs:sequence>, opisując pole tablicy. W takim przypadku atrybut maxOccurs musi być większy niż 1 lub "bez ruchu".
- Może wystąpić w <xs:schema> jako opis elementu globalnego.
<xs:element> w <xs:sequence> lub <xs:choice> jako pole w strukturze
- ref Supported; rozwiązano problem z odwołaniem do elementu globalnego.
- nazwa Obsługiwana, mapuje na nazwę pola.
- wpisz Obsługiwane, mapuje na typ pola. Aby uzyskać więcej informacji, zobacz "Mapowanie typów". Jeśli nie zostanie określony (i element nie zawiera typu anonimowego), przyjmuje się, że xs:anyType.
- blokuj Generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- Domyślne generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- naprawiono generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- formularz ignorowany. Nasza warstwa serializacji obsługuje zarówno kwalifikowane, jak i niekwalifikowane formy.
- identyfikator zignorowany.
- wartość maxOccurs mapuje na jedno pole danych, jeśli jest równe 1. jest mapowany na pole tablicy (element powtarzający), jeśli wartość maxOccurs jest większa niż 1.
- minOccurs, jeśli 0, opcje pola są ustawione na FIELD_OPTIONAL, jeśli nie ustawiono parametru nillable.
- nillable Pole jest nillable. Aby uzyskać więcej szczegółów, zobacz Serializacja.
<xs:element> jako element globalny: atrybuty
atrybuty minOccurs i maxOccurs są nieprawidłowe jako opis elementu globalnego. Aplikacja może używać wygenerowanego opisu elementu bezpośrednio w warstwie serializacji lub warstwach kanału.
- abstract Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- blokuj Generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- Domyślne generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- final Generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- naprawiono generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- identyfikator zignorowany.
- name Supported — mapuj na nazwę opisu elementu globalnego i jest podstawą typu anonimowego po określeniu.
- Aplikacja ignorowana wymaga wywołania z flagą prawą.
- substytucjaGrupa rezerwowa do struktury z WS_XML_BUFFER, jeśli ustawiono. narzędzie wsutil nie obsługuje elementu subsutilGroup.
- wpisz Obsługiwane i mapuj na typ elementu.
<xs:element> jako element globalny: contents
- simpleType Obsługiwane; mapuje na definicję typu.
- supported complexType; mapuje na typ złożony.
- unikatowe generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu. narzędzie wsutil nie obsługuje ograniczeń elementów.
- key Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu. narzędzie wsutil nie obsługuje ograniczeń elementów.
- keyref Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu. narzędzie wsutil nie obsługuje ograniczeń elementów.
- (puste) Obsługiwane; element bez specyfikacji typu jest traktowany jako xs:anyType.
Proste typy
atrybuty <xs:simpleType>
- Końcowe generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- Identyfikator ignorowany
- Nazwa obsługiwana, mapuje na nazwę typu.
<xs:simpleType> zawartość
- Obsługiwane ograniczenie, mapuje na typ wyliczenia lub zakres. Zobacz sekcję "ograniczenia xs:simpleType".
- Generowanie listy ostrzeżenie dotyczące nieobsługiwanej funkcji, powrót do XML_BUFFER.
- Union Generate warning about unsupported feature( Generowanie ostrzeżenia o nieobsługiwanej funkcji, powrót do XML_BUFFER).
Ograniczenie typu prostego
Niektóre aspekty są dozwolone w typach całkowitych i ciągach, aby umożliwić obsługę zakresu i wyliczenia.
Obsługa wyliczania
<xs:enumeration> proste ograniczenie typu dla podstawowego typu ciągu jest traktowane jako typ wyliczenia. W tym przypadku atrybut Podstawowy MUSI być typem ciągu. W przypadku wyliczenia wszystkie inne aspekty są ignorowane.
zakres obsługi prostego typu
Niektóre aspekty są obsługiwane w prostych typach obsługują skutecznie zakres dozwolony dla typu. Poniżej przedstawiono ograniczenia dotyczące typów całkowitych i typów zmiennoprzecinkowych/podwójnych. Proste typy z innymi aspektami są oparte na typie WS_STRING
- Minimalna obsługiwana funkcjaexclusive
- minInclusive Supported (Obsługiwane przez minInclusive)
- maxExclusive Supported (maksymalna obsługiwana funkcja maxExclusive)
- maxInclusive Supported
- totalDigits Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- fractionDigits Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- length Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- minLength Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- maxLength Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- Wyliczenie Generowanie ostrzeżenia o nieobsługiwanej funkcji, bez zmiany generowania kodu.
- WhiteSpace Generuj ostrzeżenie dotyczące nieobsługiwanej funkcji, bez zmiany generowania kodu.
- pattern Generate warning about unsupported feature( Generowanie ostrzeżenia o nieobsługiwanej funkcji, brak zmian w generowaniu kodu).
- (puste) Obsługiwane.
funkcja minLength i maxLength w ciągu nie jest obecnie obsługiwana, ale jest pożądaną funkcją do obsługi.
Dziedziczenie
Narzędzie Wsutil obsługuje dziedziczenie typów złożonych, czyli struktura może dziedziczyć z innej struktury, podobnie jak dziedziczenie interfejsu w języku C++. Odbywa się to za pomocą <xs:complexContentExtension>. <xs:simpleContentExtension> jest obsługiwana, ale jest generowana jako zwykła struktura z typem podstawowym jako pierwsze pole zamiast dziedziczenia typu.
Mapowanie typu/pierwotnego
Identyfikatory muszą być znormalizowane podczas tłumaczenia z ncNames w formacie XML. Ciągi są nillable; Typy wskaźników są nillable; typy całkowitoliczbowe i zmiennoprzecinkowe/podwójne są nillable, a wartość defaultValue jest ustawiona na 0.