Partager via


WSDAPI XML Type Bytecodes

Ces bytecodes sont utilisés par WSDAPI pour analyser et générer du code XML à l’aide de tables bytecode qui décrivent des types complexes.

La table bytecode d’un type exprime à la fois les représentations binaires (en mémoire) et XML (sur le fil) du type. Une table bytecode se compose d’une liste d’opérations arrêtées par une opération spéciale, à savoir OpEndOfTable. Une opération se compose d’un code d’opération d’un octet suivi de zéro ou plusieurs octets de données d’argument.

Bytecode Description
OpNone Correspond à rien.
OpEndOfTable Indique la fin d’une table bytecode.
OpBeginElement (name) Correspond à un jeton de début d’élément avec le nom indiqué. Le nom apparaît dans la table sous forme encodée en 4 octets. OnBeginElement démarre une clause qui se termine par un OpEndElement correspondant. Zéro ou plus de clauses complètes doivent apparaître entre OpBeginElement et son OpEndElement correspondant.
OpBeginAnyElement Correspond à un jeton de début d’élément avec n’importe quel nom. OnBeginAnyElement démarre une clause qui se termine par un OpEndElement correspondant. Zéro ou plus de clauses complètes doivent apparaître entre OpBeginAnyElement et son OpEndElement correspondant.
OpEndElement Termine une clause démarrée avec OpBeginElement ou OpBeginAnyElement.
OpElement (nom) Correspond à un élément entier portant le nom indiqué. Le nom apparaît dans la table sous forme encodée en 4 octets.
OpAnyElement Correspond à un élément entier portant n’importe quel nom.
OpAnyElements Correspond à n’importe quel nombre d’éléments avec n’importe quel nom.
OpAnyText Correspond à un jeton de texte.
OpAttribute (nom) Correspond au jeton d’étiquette d’un attribut avec le nom indiqué. OpAttribute démarre une clause qui inclut la clause suivante dans la table. La clause suivante est utilisée pour faire correspondre la partie valeur de l’attribut. Les clauses OpAttribute apparaissent toujours après les opérations OpBeginElement ou OpBeginAnyElement ou après une autre clause OpAttribute.
OpBeginChoice OpBeginChoice démarre une clause qui se termine par un OpEndChoice correspondant. Zéro ou plus de clauses complètes doivent apparaître entre OpBeginChoice et son opEndChoice correspondant. La clause externe correspond aux jetons mis en correspondance par l’une des clauses internes. Toutes les clauses internes doivent commencer par OpBeginElement, sauf que la dernière peut être OpAnything. Cette construction correspond à la particule de choix XSD.
OpEndChoice Termine une clause démarrée avec OpBeginChoice.
OpBeginSequence OpBeginSequence démarre une clause qui se termine par une opération OpEndSequence correspondante. Zéro ou plus de clauses complètes doivent apparaître entre OpBeginSequence et OpEndSequence. La clause externe correspond aux jetons mis en correspondance par toutes les clauses internes dans la séquence. Cette construction correspond à la particule de séquence XSD.
OpEndSequence Termine une clause démarrée avec OpBeginSequence.
OpBeginAll OpBeginAll démarre une clause qui se termine par un OpEndAll correspondant. Zéro ou plus de clauses complètes doivent apparaître entre OpBeginAll et OpEndAll. La clause externe correspond aux jetons mis en correspondance par les clauses internes dans n’importe quelle séquence. Les opérateurs d’occurrence liés à chaque clause interne indiquent le nombre de fois où les jetons de chaque clause peuvent se produire. La valeur par défaut est une seule fois. Plusieurs occurrences d’une clause spécifiée peuvent être mélangées avec des occurrences d’autres clauses internes. Toutes les clauses internes doivent commencer par OpBeginElement, sauf que la dernière peut être OpAnything. Cette construction correspond à la particule XSD.
OpEndAll Termine une clause démarrée avec OpBeginAll.
OpAnything Correspond à n’importe quel nombre d’éléments et de jetons de texte.
OpAnyNumber Indique que la clause suivante peut se produire n’importe quel nombre de fois. OpAnyNumber démarre une clause qui se termine à la fin de la clause suivante.
OpOneOrMore Indique que la clause suivante peut se produire une ou plusieurs fois. OpOneOrMore démarre une clause qui se termine à la fin de la clause suivante.
OpOptional Indique que la clause suivante peut se produire zéro ou une fois. OpOptional démarre une clause qui se termine à la fin de la clause suivante.
OpFormatInt8 (type,champ) Correspond à un entier signé 8 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt8 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpFormatInt16 (type,champ) Correspond à un entier signé 16 bits. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt16 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatInt32 (type,champ) Correspond à un entier signé 32 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt32 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatInt64 (type,champ) Correspond à un entier signé 64 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatInt64 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpFormatUInt8 (type,champ) Correspond à un entier non signé 8 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt8 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpFormatUInt16 (type,champ) Correspond à un entier non signé 16 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt16 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatUInt32 (type,champ) Correspond à un entier non signé 32 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt32 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatUInt64 (type,champ) Correspond à un entier non signé 64 bits dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage de la représentation binaire dans le contexte binaire actuel. La macro OpFormatUInt64 calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatUnicodeString (type,champ) Correspond à une chaîne composée de la valeur entière d’un jeton de texte. Un argument de décalage de 4 octets indique le décalage où un pointeur vers la chaîne apparaît dans le contexte binaire actuel. La macro OpFormatUnicodeString calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatDom (type,champ) Indique que tout xml mis en correspondance par la clause suivante est représenté sous forme binaire en tant que DOM (liste de structures WSDXML_NODE). OpFormatDom démarre une clause qui se termine à la fin de la clause suivante. Un argument de décalage de 4 octets indique le décalage où un pointeur vers la première WSDXML_NODE apparaît dans le contexte binaire actuel. La macro OpFormatDom calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpFormatStruct (structType,type,field) Indique que le contexte binaire de la clause suivante est une structure référencée par le contexte binaire actuel. OpFormatStruct démarre une clause qui se termine à la fin de la clause suivante. Le premier des deux arguments de 4 octets indique la taille de la structure. Le deuxième argument indique le décalage où un pointeur vers la structure apparaît dans le contexte binaire actuel. La macro OpFormatStruct calcule la taille du type de structure indiqué (structType) et fournit la taille comme premier argument. La macro calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme deuxième argument.
OpFormatUri (type,champ) Correspond à un URI dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage où un pointeur vers la chaîne d’URI apparaît dans le contexte binaire actuel. La macro OpFormatUri calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatUuidUri (type,champ) Correspond à un URI de protocole UUID dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage où l’URI du formulaire de structure GUID apparaît dans le contexte binaire actuel. La macro OpFormatUuidUri calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpFormatName (type,champ) Correspond à un nom qualifié dans un jeton de texte. Un argument de décalage de 4 octets indique le décalage où un pointeur vers le nom qualifié (une structure WSDXML_NAME) apparaît dans le contexte binaire actuel. La macro OpFormatName calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatListInsertTail (nodeType,type,field) Indique que les contextes binaires de toutes les occurrences de la clause suivante sont des structures dans une liste liée de manière singly référencée par le contexte binaire actuel. OpFormatListInsertTail démarre une clause qui se termine à la fin de la clause suivante. Le premier des deux arguments de 4 octets indique la taille des structures. Le deuxième argument indique le décalage où un pointeur vers la structure apparaît dans le contexte binaire actuel. Le pointeur « suivant » qui lie les structures à une liste est toujours le premier champ des structures. La macro OpFormatListInsertTail calcule la taille du type de structure indiqué (nodeType) et fournit la taille comme premier argument. La macro calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme deuxième argument.
OpFormatType (typetable,type,champ) Correspond aux jetons mis en correspondance par la table de types indiquée et indique que le contexte binaire de cette table est incorporé dans le contexte binaire actuel à un décalage indiqué. Le premier des deux arguments de 4 octets est la référence encodée à la table de type. Le deuxième argument est le décalage. La macro OpFormatType calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpFormatDynamicType (nom,type,champ) Correspond aux jetons mis en correspondance par une table de type obtenue dynamiquement à l’aide du nom indiqué et indique que le contexte binaire de cette table est incorporé dans le contexte binaire actuel à un décalage indiqué. Le premier des deux arguments de 4 octets est le nom qui identifie la table de types. En règle générale, ce nom est spécifié sous la forme d’une chaîne entre guillemets unique, telle que « ' body », qui produit une valeur de 4 octets. Le deuxième argument est le décalage. La macro OpFormatDynamicType calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage comme argument.
OpFormatLookupType (urifield,type,field) Correspond aux jetons mis en correspondance par la table de type identifiée par l’URI à un décalage indiqué dans le contexte binaire actuel et indique que le contexte binaire de cette table est incorporé dans le contexte binaire actuel à un décalage indiqué. Le premier des deux arguments de 4 octets est le décalage de l’URI de type dans le contexte binaire actuel. Le deuxième argument est le décalage du nouveau contexte binaire. La macro OpFormatLookupType calcule le décalage du champ indiqué dans le type indiqué et fournit ce décalage en tant qu’argument.
OpProcess(type,champ) Signale le champ référencé comme nécessitant un traitement supplémentaire pendant les phases de génération et d’analyse. Cela est utilisé pour les champs complexes qui ne peuvent pas être traités automatiquement.