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 (type,field) | 匹配文本标记中的 32 位无符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatUInt32 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatUInt64 (类型,字段) | 匹配文本标记中的 64 位无符号整数。 4 字节偏移参数指示当前二进制上下文中二进制表示形式的偏移量。 OpFormatUInt64 宏计算指定类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatUnicodeString (type,field) | 匹配由文本标记的整个值组成的字符串。 4 字节偏移参数指示指向字符串的指针出现在当前二进制上下文中的偏移量。 OpFormatUnicodeString 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatDom (类型,字段) | 指示后续子句匹配的所有 XML 都以二进制形式表示为 DOM(WSDXML_NODE结构列表)。 OpFormatDom 启动在后续子句末尾终止的子句。 4 字节偏移参数指示指向第一个WSDXML_NODE的指针出现在当前二进制上下文中的偏移量。 OpFormatDom 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatStruct (structType,type,field) | 指示后续子句的二进制上下文是当前二进制上下文引用的结构。 OpFormatStruct 启动在后续子句末尾终止的子句。 两个 4 字节参数中的第一个指示结构的大小。 第二个参数指示指向结构的指针出现在当前二进制上下文中的偏移量。 OpFormatStruct 宏计算所指示的结构类型(structType)的大小,并将大小作为第一个参数提供。 该宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为第二个参数。 |
OpFormatUri (type,field) | 匹配文本令牌中的 URI。 4 字节偏移参数指示指向 URI 字符串的指针出现在当前二进制上下文中的偏移量。 OpFormatUri 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatUuidUri (type,field) | 匹配文本令牌中的 UUID 协议 URI。 4 字节偏移参数指示 GUID 结构窗体中的 URI 出现在当前二进制上下文中的偏移量。 OpFormatUuidUri 宏计算所指示类型的指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatName (type,field) | 匹配文本令牌中的限定名称。 4 字节偏移参数指示指向限定名称(WSDXML_NAME结构)的指针出现在当前二进制上下文中的偏移量。 OpFormatName 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatListInsertTail (nodeType,type,field) | 指示后续子句的所有匹配项的二进制上下文是当前二进制上下文所引用的单向链接列表中的结构。 OpFormatListInsertTail 启动在后续子句末尾终止的子句。 两个 4 字节参数中的第一个指示结构的大小。 第二个参数指示指向结构的指针出现在当前二进制上下文中的偏移量。 将结构链接到列表中的“next”指针始终是结构中的第一个字段。 OpFormatListInsertTail 宏计算指示的结构类型(nodeType)的大小,并提供大小作为第一个参数。 该宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为第二个参数。 |
OpFormatType (typetable,type,field) | 匹配由指示的类型表匹配的标记,并指示该表的二进制上下文嵌入当前二进制上下文中的指示偏移量。 两个 4 字节参数中的第一个是对类型表的编码引用。 第二个参数是偏移量。 OpFormatType 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpFormatDynamicType (name,type,field) | 匹配使用指示的名称动态获取的类型表匹配的标记,并指示该表的二进制上下文嵌入在当前二进制上下文中的指示偏移量。 两个 4 字节参数中的第一个是标识类型表的名称。 通常,此名称以单引号字符串(如“'body'”)的形式指定,该字符串生成 4 字节值。 第二个参数是偏移量。 OpFormatDynamicType 宏计算指定类型中指示字段的偏移量,并提供该偏移作为参数。 |
OpFormatLookupType (urifield,type,field) | 匹配在当前二进制上下文中指示偏移量处由 URI 标识的类型表匹配的标记,并指示该表的二进制上下文嵌入当前二进制上下文中的指示偏移量。 两个 4 字节参数中的第一个是当前二进制上下文中类型 URI 的偏移量。 第二个参数是新二进制上下文的偏移量。 OpFormatLookupType 宏计算所指示类型中指示字段的偏移量,并提供该偏移量作为参数。 |
OpProcess(type,field) | 将引用的字段标记为需要在生成和分析阶段进行其他处理。 这用于无法自动处理的复杂字段。 |