Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эти байт-коды используются WSDAPI для анализа и создания XML с помощью таблиц байт-кода, описывающих сложные типы.
Таблица байт-кода для типа выражает как двоичные (в памяти), так и XML-представления типа. Таблица байт-кода состоит из списка операций, завершаемых специальной операцией, а именно OpEndOfTable. Операция состоит из кода однобайтовой операции, за которым следует нулевая или более байт данных аргумента.
| Байт-код | Описание |
|---|---|
| OpNone | Ничего не соответствует. |
| OpEndOfTable | Указывает конец таблицы байтового кода. |
| OpBeginElement (имя) | Соответствует маркеру запуска элемента с указанным именем. Имя отображается в таблице в 4-байтовой форме. OnBeginElement запускает предложение, которое заканчивается соответствующим opEndElement. Ноль или более полные предложения должны отображаться между OpBeginElement и соответствующими предложениями OpEndElement. |
| OpBeginAnyElement | Соответствует маркеру запуска элемента с любым именем. OnBeginAnyElement запускает предложение, которое заканчивается соответствующим opEndElement. Ноль или более полные предложения должны отображаться между OpBeginAnyElement и соответствующими предложениями OpEndElement. |
| OpEndElement | Заканчивает предложение, начатое с OpBeginElement или OpBeginAnyElement. |
| OpElement (имя) | Соответствует всему элементу с указанным именем. Имя отображается в таблице в 4-байтовой форме. |
| OpAnyElement | Соответствует всему элементу с любым именем. |
| OpAnyElements | Соответствует любому количеству элементов с любыми именами. |
| OpAnyText | Соответствует текстовому маркеру. |
| OpAttribute (имя) | Соответствует маркеру метки атрибута с указанным именем. OpAttribute запускает предложение, которое включает в себя последующее предложение в таблице. Последующее предложение используется для сопоставления значения части атрибута. Предложения OpAttribute всегда отображаются после операций OpBeginElement или OpBeginAnyElement или после другого предложения OpAttribute. |
| OpBeginChoice | OpBeginChoice запускает предложение, которое заканчивается соответствующим OpEndChoice. Ноль или более полные предложения должны отображаться между OpBeginChoice и соответствующими предложениями OpEndChoice. Внешнее предложение соответствует маркерам, соответствующим любому из внутренних предложений. Все внутренние предложения должны начинаться с OpBeginElement, за исключением того, что последний может быть OpAnything. Эта конструкция соответствует частице выбора XSD. |
| OpEndChoice | Заканчивает предложение, начатое с OpBeginChoice. |
| OpBeginSequence | OpBeginSequence запускает предложение, которое заканчивается соответствующим opEndSequence. Между OpBeginSequence и OpEndSequence должны отображаться ноль или более полные предложения. Внешнее предложение соответствует маркерам, соответствующим всем внутренним предложениям в последовательности. Эта конструкция соответствует частице последовательности XSD. |
| OpEndSequence | Заканчивает предложение, начатое с OpBeginSequence. |
| OpBeginAll | OpBeginAll запускает предложение, которое заканчивается соответствующим OpEndAll. Между OpBeginAll и OpEndAll должны отображаться ноль или более полные предложения. Внешнее предложение соответствует маркерам, соответствующим внутренним предложениям в любой последовательности. Операторы вхождения, относящиеся к каждому внутреннему предложению, указывают, сколько раз могут возникать маркеры для каждого предложения. Значение по умолчанию — один раз. Несколько вхождений указанного предложения могут быть перемечены с вхождениями других внутренних предложений. Все внутренние предложения должны начинаться с OpBeginElement, за исключением того, что последний может быть OpAnything. Эта конструкция соответствует XSD всех частиц. |
| OpEndAll | Заканчивает предложение, начатое с OpBeginAll. |
| OpAnything | Соответствует любому количеству элементов и текстовых маркеров. |
| OpAnyNumber | Указывает, что последующее предложение может возникать любое количество раз. OpAnyNumber запускает предложение, завершающееся в конце последующего предложения. |
| OpOneOrMore | Указывает, что последующее предложение может произойти один или несколько раз. OpOneOrMore запускает предложение, завершающееся в конце последующего предложения. |
| OpOptional | Указывает, что последующее предложение может произойти ноль или один раз. OpOptional запускает предложение, завершающееся в конце последующего предложения. |
| OpFormatInt8 (тип, поле) | Соответствует 8-разрядному целочислению со знаком в текстовом токене. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatInt8 вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatInt16 (тип, поле) | Соответствует 16-разрядному целочислению со знаком. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatInt16 вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatInt32 (тип, поле) | Соответствует 32-разрядному целочислению со знаком в текстовом токене. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatInt32 вычисляет смещение указанного поля в указанном типе и предоставляет это смещение в качестве аргумента. |
| OpFormatInt64 (тип, поле) | Соответствует 64-разрядному целочислению со знаком в текстовом токене. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatInt64 вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatUInt8 (тип, поле) | Соответствует 8-разрядному целому значению без знака в текстовом маркере. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatUInt8 вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatUInt16 (тип, поле) | Соответствует 16-разрядному целому числом без знака в текстовом токене. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatUInt16 вычисляет смещение указанного поля в указанном типе и предоставляет это смещение в качестве аргумента. |
| OpFormatUInt32 (тип, поле) | Соответствует 32-разрядному целому значению без знака в текстовом токене. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatUInt32 вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatUInt64 (тип, поле) | Соответствует 64-разрядному целому селу без знака в текстовом токене. Аргумент смещения 4-байтов указывает смещение двоичного представления в текущем двоичном контексте. Макрос OpFormatUInt64 вычисляет смещение указанного поля в указанном типе и предоставляет это смещение в качестве аргумента. |
| OpFormatUnicodeString (тип, поле) | Соответствует строке, состоящей из всего значения текстового маркера. Аргумент смещения 4-байтов указывает смещение, в котором указатель на строку отображается в текущем двоичном контексте. Макрос OpFormatUnicodeString вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatDom (тип, поле) | Указывает, что весь XML-код, соответствующий последующему предложению, представлен в двоичной форме как DOM (список WSDXML_NODE структур). OpFormatDom запускает предложение, завершающееся в конце последующего предложения. Аргумент смещения 4-байтов указывает смещение, в котором указатель на первый WSDXML_NODE отображается в текущем двоичном контексте. Макрос OpFormatDom вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatStruct (structType,type,field) | Указывает, что двоичный контекст для последующего предложения является структурой, на которую ссылается текущий двоичный контекст. OpFormatStruct запускает предложение, завершающееся в конце последующего предложения. Первый из двух байтовых аргументов указывает размер структуры. Второй аргумент указывает смещение, где указатель на структуру отображается в текущем двоичном контексте. Макрос OpFormatStruct вычисляет размер указанного типа структуры (structType) и предоставляет размер в качестве первого аргумента. Макрос вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве второго аргумента. |
| OpFormatUri (тип, поле) | Соответствует универсальному коду ресурса (URI) в текстовом токене. Аргумент смещения 4-байтов указывает смещение, в котором указатель на строку URI отображается в текущем двоичном контексте. Макрос OpFormatUri вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatUuidUri (тип, поле) | Соответствует URI протокола UUID в текстовом токене. Аргумент смещения 4-байтов указывает смещение, в котором URI в форме структуры GUID отображается в текущем двоичном контексте. Макрос OpFormatUuidUri вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatName (тип, поле) | Соответствует заданному имени в текстовом токене. Аргумент смещения 4-байтов указывает смещение, в котором указатель на полное имя (WSDXML_NAME структура) отображается в текущем двоичном контексте. Макрос OpFormatName вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatListInsertTail (nodeType,type,field) | Указывает, что двоичные контексты для всех вхождения последующего предложения являются структурами в последовательно связанном списке, на который ссылается текущий двоичный контекст. OpFormatListInsertTail запускает предложение, завершающееся в конце последующего предложения. Первый из двух байтовых аргументов указывает размер структур. Второй аргумент указывает смещение, где указатель на структуру отображается в текущем двоичном контексте. Указатель "next", который связывает структуры со списком, всегда является первым полем в структурах. Макрос OpFormatListInsertTail вычисляет размер указанного типа структуры (nodeType) и предоставляет размер в качестве первого аргумента. Макрос вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве второго аргумента. |
| OpFormatType (typetable,type,field) | Соответствует маркерам, соответствующим указанной таблице типов, и указывает, что двоичный контекст для этой таблицы внедрен в текущий двоичный контекст в указанном смещение. Первый из двух байтовых аргументов — это закодированная ссылка на таблицу типов. Второй аргумент — смещение. Макрос OpFormatType вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatDynamicType (имя, тип, поле) | Соответствует маркерам, сопоставленным таблицей типов, полученной динамически с помощью указанного имени, и указывает, что двоичный контекст для этой таблицы внедрен в текущий двоичный контекст с указанным смещением. Первым из двух байтовых аргументов является имя, определяющее таблицу типов. Как правило, это имя указывается в виде строки с одним кавычками, например "body", которая создает 4-байтовое значение. Второй аргумент — смещение. Макрос OpFormatDynamicType вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpFormatLookupType (urifield,type,field) | Соответствует маркерам, сопоставленным таблицей типов, определяемой универсальным кодом ресурса (URI) по указанному смещением в текущем двоичном контексте и указывает, что двоичный контекст для этой таблицы внедрен в текущий двоичный контекст с указанным смещением. Первым из двух байтовых аргументов является смещение URI типа в текущем двоичном контексте. Второй аргумент — смещение для нового двоичного контекста. Макрос OpFormatLookupType вычисляет смещение указанного поля в указанном типе и предоставляет смещение в качестве аргумента. |
| OpProcess(type,field) | Помечает указанное поле как требующее дополнительной обработки во время этапов создания и анализа. Это используется для сложных полей, которые нельзя обрабатывать автоматически. |