Partager via


Niveau de prise en charge du schéma

Cette section décrit en détail le niveau de prise en charge des schémas.

Le schéma prend directement en charge les éléments suivants :

  • Séquences d’éléments.
  • Dérivation des types d’éléments.
  • Choix simples d’éléments (ceux qui sont mappés à une union balisée).
  • Types de base définis par le format binaire XSD/.NET, y compris les plages (min/max).
  • Prise en charge simple de n’importe quel élément (aucune restriction sur le type d’élément).
  • Éléments et attributs facultatifs avec des valeurs par défaut.
  • Éléments répétitifs avec des plages (min/max).
  • Éléments non modifiables.

Le schéma ne prend pas directement en charge les éléments suivants (ce qui implique le comportement de « secours ») :

  • Types de base définis par l’utilisateur.
  • Des choix plus compliqués.
  • Rejet d’attributs inconnus.
  • Aller-retour d’attributs inconnus.
  • Prise en charge plus complexe de n’importe quel élément.
  • Construction de l’ensemble.
  • Key/keyref.

Voici une répartition détaillée de la prise en charge des différents composants de schéma. Il est comparé au contrat de données dans WCF en raison de la similarité des fonctionnalités. La différence sera décrite.

En règle générale, pour les comportements de secours :

  • les attributs sont WS_STRING ;
  • le contenu de l’élément est WS_XML_BUFFER.
  • complexType est une méthode de secours à la structure contenant un champ de WS_XML_BUFFER.
  • Les types simples sont WS_STRING.

wsutil génère des avertissements pour les composants de schéma qui ne sont actuellement pas entièrement pris en charge. L’application peut avoir besoin d’effectuer une vérification supplémentaire pour ces composants. Wsutil supplémentaire peut être amélioré pour gérer certaines des fonctionnalités actuellement prises en charge dans l’exécution, telles que la prise en charge des valeurs par défaut. wsutil peut également être amélioré avec la sérialisation pour prendre en charge d’autres fonctionnalités telles que abstract. Le nombre de composants de schéma non pris en charge peut être réduit au fil du temps.

Document de schéma global

Définition globale susceptible d’affecter les définitions incorporées dans le schéma. Il s’agit d’attributs globaux qui s’appliquent à toutes les définitions du schéma.

<Attributs xs:schema>

  • attributeFromDefault Ignoré.
  • blockDefault Ignoré.
  • elementFormDefault Ignoré. Cela est différent de dataContract, car les éléments non qualifiés sont pris en charge dans l’exécution.
  • finalDefault Ignoré. Il n’existe aucune prise en charge du langage C pour le concept de final.
  • id Ignoré.
  • targetNamespace Pris en charge et mappé à l’espace de noms de service.
  • version ignorée.

<contenu xs:schema>

  • include Pris en charge ; wsutil nécessite que toutes les définitions nécessaires soient disponibles en tant que fichiers d’entrée au moment de la compilation.
  • redéfinissez Ignoré. wsutil ne le prend pas en charge.
  • importation prise en charge ; wsutil nécessite que toutes les définitions nécessaires soient disponibles en tant que fichiers d’entrée au moment de la compilation.
  • simpleType pris en charge : consultez la section type simple ci-dessous.
  • complexType pris en charge - consultez la section « complexType »
  • groupe Ignoré.
  • attributeGroup Ignoré.
  • élément Pris en charge ; mappe aux définitions d’éléments globales.
  • attribut Pris en charge ; mappe aux définitions d’attributs globaux.
  • notation ignorée

Type complexe

Le type complexe, représenté par <xs:complexType>, peut être une restriction de type simple ou de type complexe, une extension de type simple, des tableaux ou une structure. Notez que dans l’extension des types simples, il n’y a pas d’héritage ni de prise en charge xsi:type.

<Attributs xs:complexType>

  • abstract Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • block Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • final Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • id Ignoré.
  • mixed Générer un avertissement sur la fonctionnalité non prise en charge, de secours à la structure avec WS_XML_BUFFER si true.
  • name Pris en charge et mappé au nom du type de structure.

<Contenu xs:complexType>

Il s’agit de la définition de type pour la structure. la restriction complexContent n’est pas prise en charge.

  • complexContent Support extension de contenu complexe. Mappe à l’héritage de structure.
  • group Actuellement de secours à la structure avec WS_XML_BUFFER champ. Peut être pris en charge en fonction de la particule inférieure.
  • choix pris en charge en tant qu’union. Cela n’est pas pris en charge dans le contrat de données.
  • séquence prise en charge : mappe aux champs d’une structure
  • attribut pris en charge avec une exception de « interdit ». Secours à la structure avec WS_XML_BUFFER si « interdit ».
  • attributeGroup pris en charge - mappe à la séquence d’attributs
  • anyAttribute Ignoré
  • AttributeGroupRef pris en charge : mappe à la séquence d’attributs.
  • GroupRef Actuellement, secours à la structure avec WS_XML_BUFFER champ. Peut être pris en charge en fonction du groupe sous.
  • Tous les types pris en charge sont mappés à XML_BUFFER
  • (vide) prise en charge mapper à une description de struct vide sans aucun struct généré.

<xs:sequence> dans un type complexe : contenu

wsutil prend uniquement en charge entièrement la séquence de minOccurs = 1 et maxOccurs = 1 ; sinon, le type complexe est actuellement WS_XML_BUFFER. Il peut être pris en charge en tant que tableau de structures.

  • élément Pris en charge ; chaque instance correspond à un champ dans la structure.
  • Groupe de secours ; complexType est de secours pour WS_XML_BUFFER.
  • Toutes les solutions de secours; complexType est de secours pour WS_XML_BUFFER.
  • choix pris en charge ; mapper au champ union.
  • séquence de secours ; complexType est de secours pour WS_XML_BUFFER.
  • tout pris en charge ; mappé à XML_BUFFER.
  • (vide) pris en charge ; complexType peut être une structure vide s’il n’existe aucun attribut.

Éléments

<xs:element>peut se produire dans trois contextes.

  • Il peut se produire dans une <séquence> xs:, décrivant un champ d’un struct normal. Dans ce cas, l’attribut maxOccurs doit être 1. Le champ est facultatif si minOccurs a la valeur 0.
  • Il peut se produire dans une <séquence> xs:, décrivant un champ d’un tableau. Dans ce cas, l’attribut maxOccurs doit être supérieur à 1 ou « unbounded ».
  • Il peut se produire dans un <xs:schema> en tant que description d’élément global.

<xs:element> dans un <xs:sequence> ou <xs:choice> en tant que champ dans une structure

  • ref Pris en charge ; résolu pour faire référence à l’élément global.
  • nom pris en charge, mappe au nom du champ.
  • type Pris en charge, mappe au type de champ. Pour plus d’informations, consultez « Mappage de type ». S’il n’est pas spécifié (et que l’élément ne contient pas de type anonyme), xs:anyType est supposé.
  • block Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • par défaut Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code.
  • correction Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • formulaire Ignoré. Notre couche de sérialisation prend en charge les formulaires qualifiés et non qualifiés.
  • id Ignoré.
  • maxOccurs est mappé à un seul champ de données si est égal à 1. il est mappé à un champ de tableau (élément répétiteur) si maxOccurs est supérieur à 1.
  • minOccurs si 0, les options de champ sont définies sur FIELD_OPTIONAL, si nillable n’est pas défini.
  • nillable Le champ est nillable. Pour plus d’informations, consultez Sérialisation .

<xs:element> as global element: attributes

Les attributs minOccurs et maxOccurs ne sont pas valides en tant que description d’élément global. L’application peut utiliser directement la description de l’élément généré dans la couche de sérialisation ou les couches de canal.

  • abstract Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • block Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • par défaut Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code.
  • final Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • correction Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • id Ignoré.
  • name Supported: mappe au nom de la description de l’élément global, et il s’agit de la base pour le type anonyme lorsqu’il est spécifié.
  • nillable Ignored-application doit appeler avec l’indicateur droit.
  • substitutionGroup secours à la structure avec WS_XML_BUFFER si définie. wsutil ne prend pas en charge substitutionGroup.
  • tapez Supported et mapper au type de l’élément.

<xs:element> as global element: contents

  • simpleType pris en charge ; mappe à la définition de type.
  • complexType pris en charge ; mappe à un type complexe.
  • unique Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code. wsutil ne prend pas en charge les contraintes d’élément.
  • clé Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code. wsutil ne prend pas en charge les contraintes d’élément.
  • keyref Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code. wsutil ne prend pas en charge les contraintes d’élément.
  • (vide) Soutenu; l’élément sans spécification de type est traité comme xs:anyType.

Types simples

<Attributs xs:simpleType>

  • Dernier avertissement Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code.
  • ID ignoré
  • Nom pris en charge, mappe à type name.

<Contenu xs:simpleType>

  • Restriction prise en charge, mappe au type d’énumération ou à la plage. Consultez la section « restrictions xs:simpleType ».
  • Liste Générer un avertissement sur la fonctionnalité non prise en charge, de secours pour XML_BUFFER.
  • Union Générez un avertissement concernant la fonctionnalité non prise en charge, de secours pour XML_BUFFER.

Restriction de type simple

Certaines facettes sont autorisées dans les types intégraux et les types de chaînes pour permettre la prise en charge de la plage et de l’énumération.

prise en charge de l’énumération

<La restriction de type simple xs:enumeration> pour le type de base de chaîne est traitée comme un type enum. Dans ce cas, l’attribut Base DOIT être de type chaîne. Dans le cas de l’énumération, toutes les autres facettes sont ignorées.

plage sur la prise en charge des types simples

Certaines facettes sont prises en charge dans les types simples prennent en charge efficacement la plage autorisée sur le type. Vous trouverez ci-dessous une restriction pour les types intégraux et les types float/double. Les types simples avec d’autres facettes sont WS_STRING type

  • minExclusive pris en charge
  • minInclusive Pris en charge
  • maxExclusive pris en charge
  • maxInclusive pris en charge
  • totalDigits Génère un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • fractionDigits Génère un avertissement concernant une fonctionnalité non prise en charge, aucune modification de la génération de code.
  • longueur Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification de la génération de code.
  • minLength Générer un avertissement concernant une fonctionnalité non prise en charge, aucune modification de la génération de code.
  • maxLength Générer un avertissement concernant une fonctionnalité non prise en charge, aucune modification apportée à la génération de code.
  • énumération Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code.
  • whiteSpace Generate warning about non prise en charge feature, no change to code generation.
  • pattern Générer un avertissement concernant la fonctionnalité non prise en charge, aucune modification apportée à la génération de code.
  • (vide) Soutenu.

minLength et maxLength sur la chaîne ne sont pas pris en charge actuellement, mais il s’agit d’une fonctionnalité souhaitable à prendre en charge.

Héritage

Wsutil prend en charge l’héritage de types complexes, c’est-à-dire qu’une structure peut hériter d’une autre structure, similaire à l’héritage d’interface en C++. Cela s’effectue par le biais <de xs:complexContentExtension>. <xs:simpleContentExtension> est pris en charge, mais est généré en tant que structure simple avec le type de base comme premier champ au lieu de l’héritage de type.

Mappage de type/primitif

Les identificateurs doivent être normalisés lors de la traduction à partir de NCNames en XML. Les chaînes sont nillables ; Les types de pointeurs sont nillables ; les types intégraux et float/double sont nillables et defaultValue est défini sur 0.

Tableau montrant le mappage entre les types XSD et les types de données Saphir.