Códigos de bytes de tipo XML WSDAPI
WSDAPI usa estos códigos de bytes para analizar y generar XML mediante tablas de código de bytes que describen tipos complejos.
La tabla de código de bytes de un tipo expresa las representaciones binarias (en memoria) y XML (on-the-wire) del tipo. Una tabla de código de bytes consta de una lista de operaciones terminadas por una operación especial, es decir OpEndOfTable
, . Una operación consta de un código de operación de un byte seguido de cero o más bytes de datos de argumentos.
Bytecode | Descripción |
---|---|
OpNone | No coincide con nada. |
OpEndOfTable | Indica el final de una tabla de código de bytes. |
OpBeginElement (nombre) | Coincide con un token de inicio de elemento con el nombre indicado. El nombre aparece en la tabla en forma codificada en 4 bytes. OnBeginElement inicia una cláusula que termina con un OpEndElement coincidente. Las cláusulas cero o más completas deben aparecer entre OpBeginElement y su OpEndElement coincidente. |
OpBeginAnyElement | Coincide con un token de inicio de elemento con cualquier nombre. OnBeginAnyElement inicia una cláusula que termina con un OpEndElement coincidente. Debe aparecer cero o más cláusulas completas entre OpBeginAnyElement y su opEndElement coincidente. |
OpEndElement | Finaliza una cláusula iniciada con OpBeginElement o OpBeginAnyElement. |
OpElement (nombre) | Coincide con un elemento completo con el nombre indicado. El nombre aparece en la tabla en forma codificada en 4 bytes. |
OpAnyElement | Coincide con un elemento completo con cualquier nombre. |
OpAnyElements | Coincide con cualquier número de elementos con cualquier nombre. |
OpAnyText | Coincide con un token de texto. |
OpAttribute (nombre) | Coincide con el token de etiqueta de un atributo con el nombre indicado. OpAttribute inicia una cláusula que incluye la cláusula subsiguiente en la tabla. La cláusula subsiguiente se usa para coincidir con la parte de valor del atributo. Las cláusulas OpAttribute siempre aparecen después de las operaciones OpBeginElement o OpBeginAnyElement o después de otra cláusula OpAttribute. |
OpBeginChoice | OpBeginChoice inicia una cláusula que termina con un OpEndChoice coincidente. Deben aparecer cero o más cláusulas completas entre OpBeginChoice y su OpEndChoice coincidente. La cláusula externa coincide con los tokens coincide con cualquiera de las cláusulas internas. Todas las cláusulas internas deben comenzar con OpBeginElement, salvo que la última puede ser OpAnything. Esta construcción corresponde a la partícula de elección XSD. |
OpEndChoice | Finaliza una cláusula iniciada con OpBeginChoice. |
OpBeginSequence | OpBeginSequence inicia una cláusula que termina con una OpEndSequence coincidente. Debe aparecer cero o más cláusulas completas entre OpBeginSequence y OpEndSequence. La cláusula externa coincide con los tokens coincide con todas las cláusulas internas en secuencia. Esta construcción corresponde a la partícula de secuencia XSD. |
OpEndSequence | Finaliza una cláusula iniciada con OpBeginSequence. |
OpBeginAll | OpBeginAll inicia una cláusula que termina con un OpEndAll coincidente. Deben aparecer cero o más cláusulas completas entre OpBeginAll y OpEndAll. La cláusula externa coincide con los tokens coincide con las cláusulas internas de cualquier secuencia. Los operadores de repetición relacionados con cada cláusula interna indican cuántas veces pueden producirse los tokens de cada cláusula. El valor predeterminado es una vez. Se pueden mezclar varias repeticiones de una cláusula especificada con repeticiones de otras cláusulas internas. Todas las cláusulas internas deben comenzar con OpBeginElement, salvo que la última puede ser OpAnything. Esta construcción corresponde a la partícula XSD. |
OpEndAll | Finaliza una cláusula iniciada con OpBeginAll. |
OpAnything | Coincide con cualquier número de elementos y tokens de texto. |
OpAnyNumber | Indica que la cláusula subsiguiente puede producirse cualquier número de veces. OpAnyNumber inicia una cláusula que finaliza al final de la cláusula posterior. |
OpOneOrMore | Indica que la cláusula subsiguiente puede producirse una o varias veces. OpOneOrMore inicia una cláusula que finaliza al final de la cláusula posterior. |
OpOptional | Indica que la cláusula subsiguiente puede producirse cero o una vez. OpOptional inicia una cláusula que finaliza al final de la cláusula posterior. |
OpFormatInt8 (tipo, campo) | Coincide con un entero de 8 bits con signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatInt8 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatInt16 (tipo,campo) | Coincide con un entero de 16 bits con signo. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatInt16 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatInt32 (tipo, campo) | Coincide con un entero de 32 bits con signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatInt32 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatInt64 (tipo, campo) | Coincide con un entero de 64 bits con signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatInt64 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatUInt8 (tipo, campo) | Coincide con un entero de 8 bits sin signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatUInt8 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatUInt16 (tipo,campo) | Coincide con un entero de 16 bits sin signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatUInt16 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatUInt32 (tipo, campo) | Coincide con un entero de 32 bits sin signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatUInt32 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatUInt64 (tipo, campo) | Coincide con un entero de 64 bits sin signo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento de la representación binaria en el contexto binario actual. La macro OpFormatUInt64 calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatUnicodeString (tipo,campo) | Coincide con una cadena que consta del valor completo de un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento donde aparece un puntero a la cadena en el contexto binario actual. La macro OpFormatUnicodeString calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatDom (tipo, campo) | Indica que todos los XML coincidentes con la cláusula subsiguiente se representan en formato binario como DOM (una lista de estructuras de WSDXML_NODE). OpFormatDom inicia una cláusula que finaliza al final de la cláusula posterior. Un argumento de desplazamiento de 4 bytes indica el desplazamiento donde aparece un puntero al primer WSDXML_NODE en el contexto binario actual. La macro OpFormatDom calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatStruct (structType,type,field) | Indica que el contexto binario de la cláusula subsiguiente es una estructura a la que hace referencia el contexto binario actual. OpFormatStruct inicia una cláusula que finaliza al final de la cláusula posterior. El primero de dos argumentos de 4 bytes indica el tamaño de la estructura. El segundo argumento indica el desplazamiento donde aparece un puntero a la estructura en el contexto binario actual. La macro OpFormatStruct calcula el tamaño del tipo de estructura indicado (structType) y proporciona el tamaño como primer argumento. La macro calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como segundo argumento. |
OpFormatUri (tipo, campo) | Coincide con un URI en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento donde aparece un puntero a la cadena URI en el contexto binario actual. La macro OpFormatUri calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatUuidUri (tipo, campo) | Coincide con un URI de protocolo UUID en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento donde aparece el URI en el formulario de estructura GUID en el contexto binario actual. La macro OpFormatUuidUri calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatName (tipo,campo) | Coincide con un nombre completo en un token de texto. Un argumento de desplazamiento de 4 bytes indica el desplazamiento donde aparece un puntero al nombre completo (una estructura WSDXML_NAME) en el contexto binario actual. La macro OpFormatName calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatListInsertTail (nodeType,type,field) | Indica que los contextos binarios de todas las apariciones de la cláusula subsiguiente son estructuras en una lista vinculada singly a la que hace referencia el contexto binario actual. OpFormatListInsertTail inicia una cláusula que finaliza al final de la cláusula siguiente. El primero de dos argumentos de 4 bytes indica el tamaño de las estructuras. El segundo argumento indica el desplazamiento donde aparece un puntero a la estructura en el contexto binario actual. El puntero "next" que vincula las estructuras a una lista es siempre el primer campo de las estructuras. La macro OpFormatListInsertTail calcula el tamaño del tipo de estructura indicado (nodeType) y proporciona el tamaño como primer argumento. La macro calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como segundo argumento. |
OpFormatType (typetable,type,field) | Coincide con los tokens coincide con la tabla de tipos indicada e indica que el contexto binario de esa tabla está incrustado en el contexto binario actual en un desplazamiento indicado. El primero de dos argumentos de 4 bytes es la referencia codificada a la tabla de tipos. El segundo argumento es el desplazamiento. La macro OpFormatType calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatDynamicType (nombre, tipo, campo) | Coincide con los tokens coincide con una tabla de tipos obtenida dinámicamente mediante el nombre indicado e indica que el contexto binario de esa tabla está incrustado en el contexto binario actual en un desplazamiento indicado. El primero de dos argumentos de 4 bytes es el nombre que identifica la tabla de tipos. Normalmente, este nombre se especifica en forma de una cadena entre comillas simples, como "'body'", que genera un valor de 4 bytes. El segundo argumento es el desplazamiento. La macro OpFormatDynamicType calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpFormatLookupType (urifield,type,field) | Coincide con los tokens coincide con la tabla de tipos identificada por el URI en un desplazamiento indicado en el contexto binario actual e indica que el contexto binario de esa tabla está incrustado en el contexto binario actual en un desplazamiento indicado. El primero de dos argumentos de 4 bytes es el desplazamiento del URI de tipo en el contexto binario actual. El segundo argumento es el desplazamiento del nuevo contexto binario. La macro OpFormatLookupType calcula el desplazamiento del campo indicado en el tipo indicado y proporciona ese desplazamiento como argumento. |
OpProcess(type,field) | Marca el campo al que se hace referencia, ya que requiere procesamiento adicional durante las fases de generación y análisis. Se usa para campos complejos que no se pueden procesar automáticamente. |