Bagikan melalui


Bytecode Tipe XML WSDAPI

Bytecode ini digunakan oleh WSDAPI untuk mengurai dan menghasilkan XML menggunakan tabel bytecode yang menjelaskan jenis kompleks.

Tabel bytecode untuk jenis mengekspresikan representasi biner (dalam memori) dan XML (on-the-wire) dari jenis tersebut. Tabel bytecode terdiri dari daftar operasi yang dihentikan oleh operasi khusus, yaitu OpEndOfTable. Operasi terdiri dari kode operasi satu byte diikuti oleh nol atau lebih byte data argumen.

Bytecode Deskripsi
OpNone Tidak cocok.
OpEndOfTable Menunjukkan akhir tabel bytecode.
OpBeginElement (nama) Cocok dengan token awal elemen dengan nama yang ditunjukkan. Nama muncul dalam tabel dalam formulir yang dikodekan 4-byte. OnBeginElement memulai klausul yang berakhir dengan OpEndElement yang cocok. Nol atau lebih klausa lengkap harus muncul antara OpBeginElement dan OpEndElement yang cocok.
OpBeginAnyElement Cocok dengan token awal elemen dengan nama apa pun. OnBeginAnyElement memulai klausul yang berakhir dengan OpEndElement yang cocok. Nol atau lebih klausa lengkap harus muncul antara OpBeginAnyElement dan OpEndElement yang cocok.
OpEndElement Mengakhiri klausul yang dimulai dengan OpBeginElement atau OpBeginAnyElement.
OpElement (nama) Cocok dengan seluruh elemen dengan nama yang ditunjukkan. Nama muncul dalam tabel dalam formulir yang dikodekan 4-byte.
OpAnyElement Cocok dengan seluruh elemen dengan nama apa pun.
OpAnyElements Cocok dengan sejumlah elemen dengan nama apa pun.
OpAnyText Cocok dengan token teks.
OpAttribute (nama) Cocok dengan token label atribut dengan nama yang ditunjukkan. OpAttribute memulai klausul yang menyertakan klausa berikutnya dalam tabel. Klausa berikutnya digunakan untuk mencocokkan bagian nilai atribut. Klausa OpAttribute selalu muncul setelah operasi OpBeginElement atau OpBeginAnyElement atau setelah klausul OpAttribute lain.
OpBeginChoice OpBeginChoice memulai klausul yang berakhir dengan OpEndChoice yang cocok. Nol atau lebih klausa lengkap harus muncul antara OpBeginChoice dan OpEndChoice yang cocok. Klausa luar cocok dengan token yang cocok dengan salah satu klausa dalam. Semua klausa dalam harus dimulai dengan OpBeginElement kecuali yang terakhir mungkin OpAnything. Konstruksi ini sesuai dengan partikel pilihan XSD.
OpEndChoice Mengakhiri klausul yang dimulai dengan OpBeginChoice.
OpBeginSequence OpBeginSequence memulai klausul yang berakhir dengan OpEndSequence yang cocok. Klausa nol atau lebih lengkap harus muncul antara OpBeginSequence dan OpEndSequence. Klausa luar cocok dengan token yang cocok dengan semua klausa dalam secara berurutan. Konstruksi ini sesuai dengan partikel urutan XSD.
OpEndSequence Mengakhiri klausul yang dimulai dengan OpBeginSequence.
OpBeginAll OpBeginAll memulai klausul yang berakhir dengan OpEndAll yang cocok. Nol atau lebih klausa lengkap harus muncul antara OpBeginAll dan OpEndAll. Klausa luar cocok dengan token yang cocok dengan klausa dalam dalam urutan apa pun. Operator kemunculan yang berkaitan dengan setiap klausul dalam menunjukkan berapa kali token untuk setiap klausa dapat terjadi. Defaultnya adalah sekali. Beberapa kemunculan klausul tertentu dapat diintermixasi dengan kemunculan klausa dalam lainnya. Semua klausa dalam harus dimulai dengan OpBeginElement kecuali yang terakhir mungkin OpAnything. Konstruksi ini sesuai dengan XSD semua partikel.
OpEndAll Mengakhiri klausul yang dimulai dengan OpBeginAll.
OpAnything Cocok dengan sejumlah elemen dan token teks.
OpAnyNumber Menunjukkan bahwa klausul berikutnya dapat terjadi berapa kali. OpAnyNumber memulai klausul yang berakhir di akhir klausul berikutnya.
OpOneOrMore Menunjukkan bahwa klausa berikutnya dapat terjadi satu atau beberapa kali. OpOneOrMore memulai klausul yang berakhir di akhir klausa berikutnya.
OpOptional Menunjukkan bahwa klausa berikutnya dapat terjadi nol atau satu kali. OpOptional memulai klausul yang berakhir di akhir klausa berikutnya.
OpFormatInt8 (jenis,bidang) Cocok dengan bilangan bulat bertanda tangan 8-bit dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatInt8 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatInt16 (type,field) Cocok dengan bilangan bulat bertanda 16-bit. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatInt16 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatInt32 (jenis,bidang) Cocok dengan bilangan bulat bertanda tangan 32-bit dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatInt32 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatInt64 (jenis,bidang) Cocok dengan bilangan bulat bertanda 64-bit dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatInt64 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan memasok offset sebagai argumen.
OpFormatUInt8 (jenis,bidang) Cocok dengan bilangan bulat 8-bit yang tidak ditandatangani dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatUInt8 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatUInt16 (jenis,bidang) Cocok dengan bilangan bulat 16-bit yang tidak ditandatangani dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatUInt16 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset tersebut sebagai argumen.
OpFormatUInt32 (jenis,bidang) Cocok dengan bilangan bulat yang tidak ditandatangani 32-bit dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatUInt32 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatUInt64 (jenis,bidang) Cocok dengan bilangan bulat 64-bit yang tidak ditandatangani dalam token teks. Argumen offset 4-byte menunjukkan offset representasi biner dalam konteks biner saat ini. Makro OpFormatUInt64 menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatUnicodeString (jenis,bidang) Cocok dengan string yang terdiri dari seluruh nilai token teks. Argumen offset 4-byte menunjukkan offset di mana penunjuk ke string muncul dalam konteks biner saat ini. Makro OpFormatUnicodeString menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatDom (jenis,bidang) Menunjukkan bahwa semua XML yang cocok dengan klausul berikutnya diwakili dalam bentuk biner sebagai DOM (daftar struktur WSDXML_NODE). OpFormatDom memulai klausul yang berakhir di akhir klausa berikutnya. Argumen offset 4-byte menunjukkan offset di mana penunjuk ke WSDXML_NODE pertama muncul dalam konteks biner saat ini. Makro OpFormatDom menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatStruct (structType,type,field) Menunjukkan bahwa konteks biner untuk klausa berikutnya adalah struktur yang direferensikan oleh konteks biner saat ini. OpFormatStruct memulai klausul yang berakhir di akhir klausa berikutnya. Argumen pertama dari dua argumen 4-byte menunjukkan ukuran struktur. Argumen kedua menunjukkan offset di mana penunjuk ke struktur muncul dalam konteks biner saat ini. Makro OpFormatStruct menghitung ukuran tipe struktur yang ditunjukkan (structType) dan menyediakan ukuran sebagai argumen pertama. Makro menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset tersebut sebagai argumen kedua.
OpFormatUri (jenis,bidang) Cocok dengan URI dalam token teks. Argumen offset 4-byte menunjukkan offset di mana penunjuk ke string URI muncul dalam konteks biner saat ini. Makro OpFormatUri menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatUuidUri (jenis,bidang) Cocok dengan URI protokol UUID dalam token teks. Argumen offset 4-byte menunjukkan offset di mana URI dalam bentuk struktur GUID muncul dalam konteks biner saat ini. Makro OpFormatUuidUri menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatName (jenis,bidang) Cocok dengan nama yang memenuhi syarat dalam token teks. Argumen offset 4-byte menunjukkan offset di mana penunjuk ke nama yang memenuhi syarat (struktur WSDXML_NAME) muncul dalam konteks biner saat ini. Makro OpFormatName menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatListInsertTail (nodeType,type,field) Menunjukkan bahwa konteks biner untuk semua kemunculan klausa berikutnya adalah struktur dalam daftar yang ditautkan dengan senyap yang direferensikan oleh konteks biner saat ini. OpFormatListInsertTail memulai klausa yang berakhir di akhir klausa berikutnya. Argumen pertama dari dua argumen 4-byte menunjukkan ukuran struktur. Argumen kedua menunjukkan offset di mana penunjuk ke struktur muncul dalam konteks biner saat ini. Penunjuk 'berikutnya' yang menautkan struktur ke dalam daftar selalu merupakan bidang pertama dalam struktur. Makro OpFormatListInsertTail menghitung ukuran tipe struktur yang ditunjukkan (nodeType) dan menyediakan ukuran sebagai argumen pertama. Makro menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset tersebut sebagai argumen kedua.
OpFormatType (typetable,type,field) Cocok dengan token yang cocok dengan tabel jenis yang ditunjukkan dan menunjukkan bahwa konteks biner untuk tabel tersebut disematkan dalam konteks biner saat ini pada offset yang ditunjukkan. Argumen pertama dari dua argumen 4-byte adalah referensi yang dikodekan ke tabel jenis. Argumen kedua adalah offset. Makro OpFormatType menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset tersebut sebagai argumen.
OpFormatDynamicType (name,type,field) Cocok dengan token yang cocok dengan tabel jenis yang diperoleh secara dinamis menggunakan nama yang ditunjukkan dan menunjukkan bahwa konteks biner untuk tabel tersebut disematkan dalam konteks biner saat ini pada offset yang ditunjukkan. Argumen pertama dari dua argumen 4-byte adalah nama yang mengidentifikasi tabel jenis. Biasanya, nama ini ditentukan dalam bentuk string yang dikutip tunggal seperti "'body'", yang menghasilkan nilai 4-byte. Argumen kedua adalah offset. Makro OpFormatDynamicType menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset sebagai argumen.
OpFormatLookupType (urifield,type,field) Cocok dengan token yang cocok dengan tabel jenis yang diidentifikasi oleh URI pada offset yang ditunjukkan dalam konteks biner saat ini dan menunjukkan bahwa konteks biner untuk tabel tersebut disematkan dalam konteks biner saat ini pada offset yang ditunjukkan. Argumen pertama dari dua argumen 4-byte adalah offset dari jenis URI dalam konteks biner saat ini. Argumen kedua adalah offset untuk konteks biner baru. Makro OpFormatLookupType menghitung offset bidang yang ditunjukkan dalam jenis yang ditunjukkan dan menyediakan offset tersebut sebagai argumen.
OpProcess(type,field) Menandai bidang yang direferensikan sebagai memerlukan pemrosesan tambahan selama fase pembuatan dan penguraian. Ini digunakan untuk bidang kompleks yang tidak dapat diproses secara otomatis.