WBXML

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

WBXML (WAP Binary XML) — компактний бінарний варіант XML. Розроблений Open Mobile Alliance для передачі через бездротові з'єднання з низькою швидкістю. В даний момент WBXML розглядається Консорціумом Всесвітньої павутини для включення в сімейство стандартів WAP. Поточна версія 1.3.

WBXML зараз використовується в SyncML, WML, Wireless Village, OMA DRM, програмуванні телефонів через бездротовий зв'язок.

Структура[ред. | ред. код]

Для кодування чисел використовується мультибайтне подання. Останній байт починається з біта 0, решта — з 1. Інші 7 біт вже кодують позитивне ціле число.

Файл починається з байта з номером версії WBXML (версія 1.3 кодується як 0x03). Далі йде тип документа у вигляді посилання на рядок з ім'ям (в таблиці рядків) або коду для добре відомих типів, наприклад, WML. Наступне число вказує на кодування, коди якого зазначені в «IANA Charset MIB» (RFC 3808). У кінці заголовка йде таблиця рядків (спочатку довжина, а потім вміст). Рядки в ній розділені символом NULL. Для більшої компактності рядка у назві тегу, атрибутах і вмісті можна вказати просто як зміщення в цій таблиці.

Якщо формат XML-документа заздалегідь відомий, то назву тегів і атрибутів можна позначити заздалегідь оговореним байтом. Щоб використовувати більше 256 імен, вони розділені на сторінки, які можна міняти за допомогою спеціальної команди: байт SWITCH_PAGE і байт з номером сторінки.

Перед кожним тегом йде байт, який вказує чи має він атрибути і вміст (LITERAL, LITERAL_A, LITERAL_C або LITERAL_CA) і зміщення в таблиці рядків. Або він може бути зазначений у вигляді байта, де перший біт вказує на наявність атрибутів, другий — вмісту, а інші кодують заздалегідь домовлений код тегу. Атрибути вказані далі як обумовленого байт або LITERAL та посилання на таблицю рядків. Далі рядок з його значенням і байт END. Рядки, як у значенні атрибуту, так і у вмісті тегу можуть бути або байтом STR_T та зміщенням в таблиці рядків, або STR_I і рядком з NULL на кінці. Вміст тегу закривається байтом END.

Тег може містити й бінарні дані (наприклад, зображення або стислу інформацію), які кодуються у вигляді спеціального байта OPAQUE, довжини даних і самого вмісту.

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]