|
Версия 6.3 |
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Текстовое ПредставлениеОбъекты представляются в виде текста из одной или нескольких строк (в зависимости от контекста). Элементы представления объекта могут разделяться "пустым пространством". В одностроковом представление в качестве "пустого пространства" может использоваться только символ пробела.В многостроковом представлении пробел и символ "горизонтальной табуляции", а также символы EOL (обозначения конца строки, CR и/или LF) тоже считаются символами "пустого пространства". Дополнительно "пустым пространством" считается комментарий, который может состоять из:
Простые ОбъектыПростые объекты являются неструктурированными, обычными объектами одного из типов данных. СтрокиСтрока является последовательностью байт, представляющих текст в кодировке UTF-8 и не содержащих двоичный нулевой байт. Текстовое представление строки является либо атомарным - последовательностью букв латинского алфавита (в кодировке ASCII) и цифр, либо строкой в кавычках - последовательностью любых отображаемых символов (используя кодировку UTF-8), исключая символ кавычки и символ обратной косой черты, заключённой в кавычки (").
Если вы хотите включить символ кавычки в строку в кавычках, укажите символ обратной косой черты и кавычки, а если вы хотите включить символ обратной косой черты в строку в кавычках, укажите два символа обратной косой черты подряд.
Вы можете использовать комбинацию символов \r, чтобы включить в строку символ возврата каретки; вы можете использовать комбинацию символов \n, чтобы включить в строку символ перевод строки и вы можете использовать комбинацию символов \e, чтобы включить в строку независимую от операционной системы последовательность символов для Конца Строки.
Чтобы включить в строку символ табуляции, вы можете использовать комбинацию символов \t.
Можно использовать комбинацию символов \nnn, чтобы включить в строку любой символ; здесь nnn - трёхзначное десятичное число, равное коду ASCII требуемого символа.
Можно использовать комбинацию символов \u'nnn', чтобы включить в строку любой символ; здесь nnn - шестнадцатеричное число, равное коду Unicode требуемого символа.
В многострочном представлении строка может быть представлена последовательностью двух и более строк, при необходимости разделённых одним и более символами "пустого пространства". Это позволяет записывать длинные строковые значения в несколько строк. Блоки ДанныхБлоки данных (datablock) являются базовыми, неструктурированными блоками двоичных данных. Они создаются как текстовые строки двоичных данных в кодировке Base64, заключённые в квадратные скобки.
Символы "пустого пространства" могут помещаться где угодно внутри квадратных скобок. ЧислаЧисла (numbers) являются основными неструктурированными объектами данных. Каждый объект Число содержит одно 64-битное целое значение со знаком. Число представляется в виде текстовой строки, начинающейся с символа #, за которым следует (необязательный) символ минуса (-), за которым, в свою очередь, следует одна или более десятичная цифра или индикатор системы счисления с цифрами, разрешёнными в указанной системе счисления.
Индикатор основания системы счисления 0x задаёт значение основания 16 (шестнадцатеричное число), индикатор 0o задаёт значение основания 8 (восьмеричное число), индикатор 0b задаёт значение 2 (двоичное число).
Отметки времениОтметки Времени (time stamps) являются основными неструктурированными объектами данных. Каждая Отметка Времени содержит одно значение глобального времени. Значение времени представляется в GMT времени как текстовая строка, начинающаяся с символов #T и содержащая значение дня, месяца, года и, необязательно, часа, минуты и секунды. Определены также две специальные Отметки Времени - одна для "далёкого прошлого" (#TPAST) и другая для "далёкого будущего" (#TFUTURE).
IP АдресаIP Адреса (IP Addresses) являются основными неструктурированными объектами данных. Каждый объект IP Адрес содержит в себе IPv4 или IPv6 адрес и, необязательно, номер порта. IP Адрес представляется в виде текстовой строки, начинающейся с символов #I и содержащей канонический IPv4 или IPv6 адрес, за которым через двоеточие может следовать номер порта.
Нулевой ОбъектНулевой объект является уникальным простым объектом, представляющим отсутствие любого другого объекта.
Нулевой объект представляется в виде текстовой строки #NULL#. Другие ОбъектыКогда сервер преобразует объекты из внутреннего в текстовое представление, в их структуре может встретится специфичный для приложения объект, для которого нет текстового представления. Такие объекты представляются в виде текста #(objectName:address), где objectName - строка из букв и цифр с именем класса объекта, а address -шестнадцатеричное число с адресом объекта в памяти.
Такие объекты НЕ должны использоваться в текстовом представлении, которое конвертируется в объект данных. Структурированные ОбъектыМассивыОбъект Массив (array) - это упорядоченный набор объектов (элементов массива). Текстовое представление массива - список представлений его элементов, разделённых символами запятой (,) и заключённый в круглые скобки.
Элементом массива может быть любой объект - строка, массив, словарь и т.д.
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между скобками и элементом, а также между элементом и символом запятой.
Массив может содержать ноль элементов (пустой массив).
СловариОбъект Словарь (dictionary) является набором пар ключ-значение. Ключи словаря являются строками. Каждый ключ в словаре должен быть уникальным. Ключи словаря обрабатываются как зависимые от регистра строки, за исключением случая, если явно не указано иное. Любой объект может использоваться как значение, связанное с ключом. Текстовым представлением словаря является последовательность его пар ключ/значение, заключённая в фигурные скобки.
Каждая пара представляется как строка с ключом, за которым следует знак равно (=) и текстовое представление значения связанного объекта, оканчивающегося символом точка с запятой (;).
XMLОбъект XML является документом XML. Он имеет имя, набор пространств имён (строки), набор атрибутов со значениями типа строка и ноль, один или несколько элементов тела. Каждый элемент тела является либо строкой, либо объектом XML. Текстовым представлением объекта XML является его стандартное текстовое представление, начинающееся с символа угловая скобка. Правила Формального СинтаксисаНиже приводится формальное определение синтаксиса для текстовых представлений объектов базовых типов.
Объекты XMLCommuniGate Pro может преобразовывать сложные структуры (такие как vCards, iCalendar, SDP объекты) в простые объекты XML. Представление XML может также потребоваться для таких объектов как блоки данных, массивы или словари. Этот раздел описывает представление XML в CommuniGate Pro для всех таких объектов и сложных структур. СтрокаСтрока представляется текстовым элементом. Если строка содержит специальные символы, то она должна быть представлена как элемент binString с текстовым телом в кодировке base64. Пустая строка может быть представлена пустым элементом binString. Блок ДанныхБлок данных представляется как элемент XML base64.
ЧислоЧисло представляется как элемент XML number.
Отметка ВремениОтметка Времени представляется как элемент XML date.
IP АдресаIP адрес представляются как элемент XML ipAddr.
Нулевое значениеОбъект с нулевым значением представляется как пустой элемент XML null. МассивМассив представляется как последовательность из одного или более XML элементов subValue.
СловарьСловарь представляется как последовательность из одного или более элементов XML subKey.
vCardЭтот элемент XML представляет объект vCard (согласно спецификации Jabber/XEP для документов XML vCard).
vCardGroupЭтот элемент XML представляет объект vCardGroup.
iCalendarЭтот элемент XML представляет объект iCalendar.
vCalendarЭтот элемент XML представляет объект vCalendar.
vtimezoneЭтот элемент XML представляет объект VTIMEZONE.
BEGIN:VTIMEZONE
TZID:Europe/Central BEGIN:STANDARD DTSTART:19710101T030000 TZOFFSETFROM:+0200 TZOFFSETTO:+0100 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD BEGIN:DAYLIGHT DTSTART:19710101T020000 TZOFFSETFROM:+0100 TZOFFSETTO:+0200 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU END:DAYLIGHT END:VTIMEZONE
<vtimezone>
<tzid>Europe/Central</tzid> <standard> <dtstart>19710101T030000</dtstart> <tzoffsetto>+0100</tzoffsetto> <rrule>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU</rrule> </standard> <daylight> <dtstart>19710101T020000</dtstart> <tzoffsetto>+0200</tzoffsetto> <rrule>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU</rrule> </daylight> </vtimezone> vevent, vtodoЭти элементы XML представляют объекты VEVENT и VTODO.
Пример: BEGIN:VEVENT
ORGANIZER;CN="Jim Smith":MAILTO:jim_smith@example.com RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z DTSTAMP:20051204T140844Z UID:566852630.4@mail.example.com SEQUENCE:1 SUMMARY:test - recurrent DTSTART;TZID=NorthAmerica/Pacific:20051204T100000 DTEND;TZID=NorthAmerica/Pacific:20051204T110000 X-MICROSOFT-CDO-BUSYSTATUS:BUSY LAST-MODIFIED:20051204T140844Z CREATED:20051204T140844Z PRIORITY:5 END:VEVENT BEGIN:VEVENT UID:566852630.4@mail.example.com RECURRENCE-ID:20051206T180000Z SUMMARY:test - recurrent (later this time) DTSTART;TZID=NorthAmerica/Pacific:20051206T120000 DTEND;TZID=NorthAmerica/Pacific:20051206T130000 END:VEVENT <vevent>
<organizer CN="Jim Smith">jim_smith@example.com</organizer> <rrule>FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z</rrule> <dtstamp>20051204T140844Z</dtstamp> <uid>566852630.4@mail.example.com</uid> <sequence>1</sequence> <summary>test - recurrent</summary> <dtstart tzid="NorthAmerica/Pacific">20051204T100000</dtstart> <dtend tzid="NorthAmerica/Pacific">20051204T110000</dtend> <busystatus>BUSY</busystatus> <last-modified>20051204T140844Z</last-modified> <created>20051204T140844Z</created> <priority>5</priority> <exceptions> <uid>566852630.4@mail.example.com</uid> <recurrenceId>20051206T180000Z</recurrenceId> <summary>test - recurrent (later this time)</summary> <dtstart tzid="NorthAmerica/Pacific">20051206T120000</dtstart> <dtend tzid="NorthAmerica/Pacific">20051206T130000</dtend> </exceptions> </vevent> vfreebusyЭти элементы XML представляют объекты VFREEBUSY.
Пример: BEGIN:VFREEBUSY
DTSTART:20080329T075517Z DTEND:20080604T075517Z DTSTAMP:20080405T075517Z FREEBUSY:20080329T075517Z/20080329T120000Z FREEBUSY:20080330T070000Z/20080330T120000Z FREEBUSY:20080331T070000Z/20080331T120000Z END:VFREEBUSY <vfreebusy dtend="20080604T075517Z" dtstamp="20080405T075517Z" dtstart="20080329T075517Z">
<freebusy dtend="20080329T120000Z" dtstart="20080329T075517Z" /> <freebusy dtend="20080330T120000Z" dtstart="20080330T070000Z" /> <freebusy dtend="20080331T120000Z" dtstart="20080331T070000Z" /> </vfreebusy> xruleЭтот элемент XML представляет повторяющийся календарный объект.
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z
<xrule freq="WEEKLY" interval="2" until="20060305T000000Z">
<BYDAY>MO</BYDAY><BYDAY>TU</BYDAY><BYDAY>WE</BYDAY><BYDAY>TH</BYDAY> </xrule> Пример: RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
<xrule freq="YEARLY">
<BYMONTH>10</BYMONTH><BYDAY week="-1">SU</BYDAY> </xrule> x509Этот элемент XML представляет сертификат X.509.
sdpЭтот элемент XML представляет объект SDP.
mediaЭтот элемент XML представляет объект SDP Медиа.
codecЭтот элемент XML представляет кодек SDP Медиа.
attrЭтот элемент XML представляет атрибут объекта SDP или SDP Медиа.
infoЭтот элемент XML представляет информационное поле объекта SDP или SDP Медиа. Поддерживаемые поля:для SDP: info, uri, email, phone, phone, bandwidth, time, repeat, zone и key; для SDP Медиа: title, bandwidth и key;
Пример: образец документа SDP и его представления XML: v=0
o=- 6385718 9999 IN IP4 192.168.1.65 s=- e=support@old.communigatepro.ru c=IN IP4 192.168.1.65 t=0 0 a=sdpattr1:sdpvalue a=sdpattr2 m=audio 16398 RTP/AVP 0 4 8 101 t=title value a=rtpmap:0 PCMU/8000 a=rtpmap:4 G723/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecv a=mediaattr1:mediavalue a=mediaattr2
<sdp ip="[192.168.1.65]" origUser="-" sessionID="6385718" sessionVersion="9999" originIP="[192.168.1.65]">
<email>support@old.communigatepro.ru</email> <attr name="sdpattr1">sdpvalue</attr> <attr name="sdpattr2" /> <media media="audio" ip="[192.168.1.65]:16398" protocol="RTP/AVP" direction="sendrecv"> <codec id="0" name="PCMU/8000" /> <codec id="4" name="G723/8000" /> <codec id="8" name="PCMA/8000" /> <codec id="101" name="telephone-event/8000" format="0-15" /> <title>title value</title> <attr name="mediaattr1">mediavalue</attr> <attr name="mediaattr2" /> </media> </sdp> ASN.1CommuniGate Pro может преобразовывать структуры в формате ASN.1 в объекты. Каждый элемент данных ASN.1 преобразуется в массив. Для элементов данных ASN.1 класса Universal элемент массива с индексом 0 содержит строку с именем типа: boolean, integer, bits, octets, null, oid, objdescr, external, real, enum, embed, string, reloid, rsrv1, rsrv2, seq, set, stringNum, stringPrint, stringT61, stringIA5, string22, timeUTC, time, stringGraphic, stringISO64, stringGeneral, stringUniversal, string29, stringBMP, string31. Для "примитивных" элементов данных оставшиеся элементы массива содержат представление данных, которое зависит от типа элемента:
|