Форматы Данных
Сервер CommuniGate Pro обрабатывает большинство типов данных как абстрактные объекты. В этом разделе описывается абстрактные, базовые типы объектов, используемые всеми компонентами Сервера.
Для каждого типа объекта указывается текстовое представление объекта.
Когда объект сохраняется в файле, отправляется в ответ по команде CLI/API или извлекается с Сервера любым другим способом, то используется текстовое представление объекта.
Когда Сервер читает объект извне (из файла настроек, из команды CLI и т.д.), он преобразовывает полученное текстовое представление во внутренний объект.
Текстовое Представление
Объекты представляются в виде текста из одной или нескольких строк (в зависимости от контекста).
Элементы представления объекта могут разделяться "пустым пространством". В одностроковом представление в качестве "пустого пространства" может использоваться только символ пробела.
В многостроковом представлении пробел и символ "горизонтальной табуляции", а также символы EOL (обозначения конца строки, CR и/или LF) тоже считаются символами "пустого пространства". Дополнительно "пустым пространством" считается комментарий, который может состоять из:
- символов двойной косой черты (
//) и всех символов, следующих за ними до символа EOL (конец строки) включительно. - последовательности символов косой черты и звёздочки (
/*) и всех символов, следующих за ними до последовательности символов звёздочки и косой черты (*/) включительно.
Простые Объекты
Простые объекты являются неструктурированными, обычными объектами одного из типов данных.
Строки
Строка является последовательностью байт, представляющих текст в кодировке UTF-8 и не содержащих двоичный нулевой байт.
Текстовое представление строки является либо атомарным - последовательностью букв латинского алфавита (в кодировке ASCII) и цифр, либо строкой в кавычках - последовательностью любых отображаемых символов (используя кодировку UTF-8), исключая символ кавычки и символ обратной косой черты, заключённой в кавычки (").
Примеры:
MyNameMy2ndName"Моё имя с пробелами and the . symbol"
Если вы хотите включить символ кавычки в строку в кавычках, укажите символ обратной косой черты и кавычки, а если вы хотите включить символ обратной косой черты в строку в кавычках, укажите два символа обратной косой черты подряд.
Примеры:
"a \"string\" within string""Single \\ backslash"
Вы можете использовать комбинацию символов \r, чтобы включить в строку символ возврата каретки; вы можете использовать комбинацию символов \n, чтобы включить в строку символ перевод строки и вы можете использовать комбинацию символов \e, чтобы включить в строку независимую от операционной системы последовательность символов для Конца Строки.
Примеры:
"Line1\eLine2"TEXT3\rTEXT67\nTEXT78"
Используйте комбинацию \r или \n для включения знаков возврата каретки и конца строки только если они НЕ используются как разделители строк.
Чтобы включить в строку символ табуляции, вы можете использовать комбинацию символов \t.
Пример:
"Line1:\tField1\tField2\eLine2:\tField1\tField2"
Можно использовать комбинацию символов \nnn, чтобы включить в строку любой символ; здесь nnn - трёхзначное десятичное число, равное коду ASCII требуемого символа.
Пример:
"Using the \012 (Vertical Tabulation) symbol"
Можно использовать комбинацию символов \u'nnn', чтобы включить в строку любой символ; здесь nnn - шестнадцатеричное число, равное коду Unicode требуемого символа.
Пример:
"Using the \u'2764' (Heavy black heart) symbol"
В многострочном представлении строка может быть представлена последовательностью двух и более строк, при необходимости разделённых одним и более символами "пустого пространства". Это позволяет записывать длинные строковые значения в несколько строк.
Блоки Данных
Блоки данных (datablock) являются базовыми, неструктурированными блоками двоичных данных. Они создаются как текстовые строки двоичных данных в кодировке Base64, заключённые в квадратные скобки.
Пример:
[HcqHfHI=]
это блок двоичных данных, содержащих следующие 5 двоичных байт данных:0x1D 0xCA 0x87 0x7C 0x72
Символы "пустого пространства" могут помещаться где угодно внутри квадратных скобок.
Числа
Числа (numbers) являются основными неструктурированными объектами данных. Каждый объект Число содержит одно 64-битное целое значение со знаком. Число представляется в виде текстовой строки, начинающейся с символа #, за которым следует (необязательный) символ минуса (-), за которым, в свою очередь, следует одна или более десятичная цифра или индикатор системы счисления с цифрами, разрешёнными в указанной системе счисления.
Индикатор основания системы счисления 0x задаёт значение основания 16 (шестнадцатеричное число), индикатор 0o задаёт значение основания 8 (восьмеричное число), индикатор 0b задаёт значение 2 (двоичное число).
Примеры:
#-234657#0x17EF#-0b1000111000
Отметки времени
Отметки Времени (time stamps) являются основными неструктурированными объектами данных. Каждая Отметка Времени содержит одно значение глобального времени. Значение времени представляется в GMT времени как текстовая строка, начинающаяся с символов #T и содержащая значение дня, месяца, года и, необязательно, часа, минуты и секунды.
Пример:
#T22-10-2009_15:24:45
Определены также две специальные Отметки Времени - одна для "далёкого прошлого" (#TPAST) и другая для "далёкого будущего" (#TFUTURE).
IP Адреса
IP Адреса (IP Addresses) являются основными неструктурированными объектами данных. Каждый объект IP Адрес содержит в себе IPv4 или IPv6 адрес и, необязательно, номер порта. IP Адрес представляется в виде текстовой строки, начинающейся с символов #I и содержащей канонический IPv4 или IPv6 адрес, за которым через двоеточие может следовать номер порта.
Примеры:
#I[10.0.44.55]:25#I[2001:470:1f01:2565::a:80f]:25
Нулевой Объект
Нулевой объект является уникальным простым объектом, представляющим отсутствие любого другого объекта.
Нулевой объект представляется в виде текстовой строки #NULL#.
Другие Объекты
Когда сервер преобразует объекты из внутреннего в текстовое представление, в их структуре может встретится специфичный для приложения объект, для которого нет текстового представления. Такие объекты представляются в виде текста #(objectName:address), где objectName - строка из букв и цифр с именем класса объекта, а address -шестнадцатеричное число с адресом объекта в памяти.
Такие объекты НЕ должны использоваться в текстовом представлении, которое конвертируется в объект данных.
Структурированные Объекты
Массивы
Объект Массив (array) - это упорядоченный набор объектов (элементов массива).
Текстовое представление массива - список представлений его элементов, разделённых символами запятой (,) и заключённый в круглые скобки.
Пример:
(Element1 , "Element2" , "Element 3")
Элементом массива может быть любой объект - строка, массив, словарь и т.д.
Пример:
(Element1 , ("Sub Element1", SubElement2) , "Element 3")
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между скобками и элементом, а также между элементом и символом запятой.
Пример:
(
Element1 ,
( "Sub Element1",
SubElement2 )
,
"Element 3" )Массив может содержать ноль элементов (пустой массив).
Пример:
()
Словари
Объект Словарь (dictionary) является набором пар ключ-значение. Ключи словаря являются строками. Каждый ключ в словаре должен быть уникальным. Ключи словаря обрабатываются как зависимые от регистра строки, за исключением случая, если явно не указано иное.
Любой объект может использоваться как значение, связанное с ключом.
Текстовым представлением словаря является последовательность его пар ключ/значение, заключённая в фигурные скобки.
Каждая пара представляется как строка с ключом, за которым следует знак равно (=) и текстовое представление значения связанного объекта, оканчивающегося символом точка с запятой (;).
Пример:
{Key1=Element1; Key2 ="Element2" ; "Third Key"="Element 3"; }
Значением объекта в любой паре ключ/значение может быть строка, массив, словарь или любой другой объект.
Пример:
{Key1=(Elem1,Elem2); Key2={Sub1="XXX 1"; Sub2=X245;}; }
Любое число пробелов, символов табуляции и/или символов новой строки (символов конца строки) может находиться между фигурными скобками и парой, рядом с символом равно и рядом с символом точка с запятой.
Пример:
{
Key1 = (Elem1,Elem2) ;
Key2 = { Sub1 = "XXX 1";
Sub2=X245; };
}Словарь может иметь ноль элементов (пустой словарь).
Пример:
{}
XML
Объект XML является документом XML. Он имеет имя, набор пространств имён (строки), набор атрибутов со значениями типа строка и ноль, один или несколько элементов тела. Каждый элемент тела является либо строкой, либо объектом XML.
Текстовым представлением объекта XML является его стандартное текстовое представление, начинающееся с символа угловая скобка.
Правила Формального Синтаксиса
Ниже приводится формальное определение синтаксиса для текстовых представлений объектов базовых типов.
| b-digit | 0 | 1 |
| o-digit | 0 .. 7 |
| d-digit | 0 .. 9 |
| h-digit | d-digit | A .. F | a .. f |
| a-symbol | A .. Z | a .. z | d-digit |
| u-symbol | a-symbol | любой символ utf-8 не из ASCII таблицы |
| l-symbol | u-symbol | . | - | _ | @ |
| atom | 1* l-symbol |
| b-symbol | a-symbol | + | / | = |
| s-symbol | любой отображаемый символ кроме " и \ | \\ | \" | \r | \n | \e | \t | \ d-digit d-digit d-digit |
| string | " 0* s-symbol " | atom |
| datablock | [ 1* b-symbol ] |
| day | 0 .. 3 d-digit (двухзначное число в диапазоне 1..31) |
| month | 0 .. 1 d-digit (двухзначное число в диапазоне 1..12) |
| year | 1 .. 2 d-digit d-digit d-digit (четырёхзначное число в диапазоне 1970..2038) |
| hour | 0 .. 2 d-digit (двухзначное число в диапазоне 0..23) |
| minute | 0 .. 5 d-digit (двухзначное число в диапазоне 0..59) |
| second | 0 .. 5 d-digit (двухзначное число в диапазоне 0..59) |
| number | # [ - ] 1* d-digit | # [-] 0x 1* h-digit | # [-] 0b 1* b-digit | # [-] 0o 1* o-digit |
| timestamp | #T day - month - year [ _ hour : minute : second ] |
| ip4 | 1* d-digit . 1* d-digit . 1* d-digit . 1* d-digit |
| ip6 | 0* (1* h-digit :) [: [ 0*(1* h-digit :) ] ] |
| ip-address | #I[ [ ip4 | ip6 ] ] [ : 1* d-digit ] |
| null-object | #NULL# |
| array | ( [ object 0* ( , object ) ] ) |
| dictionary | { 0* ( string = object ; ) } |
| XML | < XML в стандартном формате \> |
| object | string | datablock | number | timestamp | ip-address | null-object | array | dictionary | XML |
Объекты XML
CommuniGate Pro может преобразовывать сложные структуры (такие как vCards, iCalendar, SDP объекты) в простые объекты XML. Представление XML может также потребоваться для таких объектов как блоки данных, массивы или словари. Этот раздел описывает представление XML в CommuniGate Pro для всех таких объектов и сложных структур.
Строка
Строка представляется текстовым элементом.
Если это верхний элемент XML, то строка представляется как элемент XML object с текстовым телом, содержащим эту строку.
Если строка содержит специальные символы, то она должна быть представлена как элемент binString с текстовым телом в кодировке base64.
Пустая строка может быть представлена пустым элементом binString.
Блок Данных
Блок данных представляется как элемент XML base64.
Телом элемента XML является содержимое блока данных в кодировке base64.
Пример:
<base64>STYRyui=</base64>
Число
Число представляется как элемент XML number.
Телом элемента XML является текстовое представление значения числового объекта (десятичное или, если указан индикатор системы счисления, шестнадцатеричное, восьмеричное или бинарное).
Примеры:
<number>123456</number><number>0x78FAB5</number>
Отметка Времени
Отметка Времени представляется как элемент XML date.
Телом элемента XML является текстовое представление отметки времени в формате iCalendar.
Пример:
<date>20101122T123000Z</date>
IP Адреса
IP адрес представляются как элемент XML ipAddr.
Телом элемента XML является текстовое представление IP адреса, заключённое в квадратные скобки и необязательное отделённое двоеточием десятичное число - номера порта.
Пример:
<ipAddr>[10.0.2.2]:8010</ipAddr>
Нулевое значение
Объект с нулевым значением представляется как пустой элемент XML null.
Массив
Массив представляется как последовательность из одного или более XML элементов subValue.
Тело элемента XML представляет элемент массива.
Пустой массив представляется как один элемент XML subValue без тела.
Если верхний XML элемент, то массив представляется как элемент XML object, с текстовым телом, содержащим элементы XML subValue.
Пример:
<subValue>my string</subValue><subValue><number>123456</number></subValue>
Словарь
Словарь представляется как последовательность из одного или более элементов XML subKey.
Атрибут key элемента XML задаёт ключ элемента словаря, а тело XML представляет значение элемента словаря.
Пустой словарь представляется как один элемент XML subKey без атрибута key и без тела.
Если словарь является верхним элементом XML, то он представляется как элемент XML object, с текстовым телом, содержащим элементы XML subKey.
Пример:
<subKey key="firstKey">my string</subKey><subKey key="secondKey"><number>123456</number></subKey>
vCard
Этот элемент XML представляет объект vCard (согласно спецификации Jabber/XEP для документов XML vCard).
Атрибуты:
modifiedЭтот необязательный атрибут содержит значение свойства
REV(время GMT в формате iCalendar).
Тело:
Содержит свойства vCard как XML элементы с такими же именами, преобразованными к верхнему регистру ASCII.
Каждый элемент свойства содержит:Атрибуты:
отсутствуют
Тело:
набор элементов XML, представляющих параметры свойства и значение свойства:
параметры
Элементы XML с такими же именами, как и имена параметров, преобразованные к верхнему регистру ASCII. Параметры
ENCODINGиQUOTED-PRINTABLEсвойств vCard используются для декодирования значений свойства, и поэтому они не сохраняются.значение:
структурированные значения (
N,ORG,ADR)набор элементов XML с именами элементов структуры и текстовые тела, содержащие часть структурированного значения свойства.
двоичное значение
элемент XML
BINVALс текстовым телом, содержащим значение свойства в кодировке base64.текстовое значение
элемент XML
VALUEс текстовым телом, содержащим значение свойства.
Пример:
begin:VCARD
source:ldap://cn=bjorn Jensen, o=university of Michigan, c=US
name:Bjorn Jensen
n:Jensen;bjorn;A;Mr;II
email;type=INTERNET:bjorn@umich.edu
org:U of Michigan;Computer Science Dept.
tel;type=WORK,MSG:+1 313 747-4454
key;type=x509;encoding=B:dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK
end:VCARD<vCard>
<SOURCE><VALUE>ldap://cn=bjorn Jensen, o=university of Michigan, c=US</VALUE></SOURCE>
<NAME><VALUE>Bjorn Jensen</VALUE></NAME>
<N><FAMILY>Jensen</FAMILY><GIVEN>bjorn</GIVEN>
<MIDDLE>A</MIDDLE><PREFIX>Mr.</PREFIX><SUFFIX>II</SUFFIX></N>
<EMAIL><VALUE>bjorn@umich.edu</VALUE></EMAIL>
<ORG><ORGNAME>U of Michigan</ORGNAME><ORGUNIT>Computer Science Dept.</ORGUNIT></ORG>
<TEL><WORK /><MSG /><VALUE>+1 313 747-4454</VALUE></TEL>
<KEY><X509 /><BINVAL>dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK</BINVAL></KEY>
</vCard>vCardGroup
Этот элемент XML представляет объект vCardGroup.
Атрибуты:
modifiedЭтот необязательный атрибут содержит значение свойства
REV(время GMT в формате iCalendar).Тело:
Cвойства vCardGroup как XML элементы с такими же именами, преобразованные к верхнему регистру ASCII:
NAME,NOTE,UID. Каждый элемент включает в себя элемент XMLVALUEс текстовым телом, содержащим значение свойства.Ноль, один или несколько элементов XML
MEMBER, по одному на каждого члена группы. Текстовым телом XML элемента является адрес члена группы, а необязательный атрибутCNсодержит "настоящее имя" элемента.Пример:
BEGIN:VGROUP
PRODID:CommuniGate Pro 6.1
VERSION:1.0
NAME:Basket Buddies
NOTE:My basketball team.
UID:594895837.1@team.dom
REV:20071214T174114Z
MEMBER;CN="Jack Nimble":jack@nimble.dom
MEMBER;CN="Tim Slow":tim@slow.dom
END:VGROUP<vCardGroup modified="20071214T174114Z">
<NAME><VALUE>Basket Buddies</VALUE></NAME>
<NOTE><VALUE>My basketball team.</VALUE></NOTE>
<UID><VALUE>594895837.1@team.dom</VALUE></UID>
<MEMBER CN="Jack Nimble">jack@nimble.dom</MEMBER>
<MEMBER CN="Tim Slow">tim@slow.dom</MEMBER>
</vCardGroup>iCalendar
Этот элемент XML представляет объект iCalendar.
Тело:
элемент
vCalendar.
vCalendar
Этот элемент XML представляет объект vCalendar.
Атрибуты:
versionверсия vCalendar (
2.0для iCalendar)methodнеобязательный атрибут с методом vCalendar
prodidнеобязательная строка, идентифицирующая продукт, использованный для создания этого объекта vCalendar.
Тело:
vtimezone
Этот элемент XML представляет объект VTIMEZONE.
Тело:
набор элементов XML:
tzid: тело элемента содержит название часового пояса.standardи, необязательно,daylight: эти тела элементов содержат следующие XML элементы:tzoffsetto: тело элемента содержит значение сдвига времени.tzoffsetfrom(необязательно) тело элемента содержит значение сдвига времени.rrule(необязательно): тело элемента содержит строку с описателем повторяемости.
Пример:
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.
Атрибуты:
localTimeэтот атрибут присутствует только для неповторяющихся календарных объектов. В нём содержится дата и время начала календарного объекта. Используется местное Время в Часовом Поясе, выбранном для текущего пользователя.
localStartэтот атрибут присутствует только для повторяющихся календарных объектов. В нём содержится время начала календарного объекта (секунды, начиная с полуночи). Используется местное Время в Часовом Поясе, выбранном для текущего пользователя.
Тело:
Набор элементов XML, каждый представляющий одно свойства.
Параметры свойства представляются как атрибуты элемента.
Значение свойства представляется в теле Элемента.
Если значение начинается с префиксаMAILTO:, то этот префикс удаляется.
Если календарный объект имеет "исключения", добавляется элемент XMLexceptions. Его дочерние элементы XML представляют исключения для объектов VEVENT и VTODO. Атрибут CUTYPE в элементеattendeeиспользуется для указания типа участника события в календаре (RFC 4225 4.2.3). Этот атрибут определяет роль участника в событии, и его значение помогает серверу правильно интерпретировать, как должен обрабатываться данный участник. Возможные значения CUTYPE: RESOURCE (участник — это ресурс, такой как оборудование или комната), ROOM (специальный тип RESOURCE, обозначающий физическое пространство, например, комнату для встреч).
Пример:
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>
<attendee CN="Conference Room" CUTYPE="RESOURCE">mailto:room@example.com</attendee>
<attendee CN="Meeting Room" CUTYPE="ROOM">mailto:meetingroom@example.com</attendee>
<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.
Атрибуты:
dtstartначало временного периода, покрываемого объектом VFREEBUSY.
dtendконец временного периода, покрываемого объектом VFREEBUSY.
dtstampвремя создания этого объекта VFREEBUSY.
Тело:
набор элементов XML
freebusy, каждый из которых представляет один временной интервал. Временные интервалы не пересекаются.Атрибуты:
dtstartначало временного интервала.
dtendконец временного интервала.
fbtypeнеобязательный атрибут с типом занятости. Если он не указан, то интервал имеет статус
BUSY.
Пример:
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 представляет повторяющийся календарный объект.
Атрибуты:
freqтип повторяемости.
intervalпараметр с интервалом. Если отсутствует, интервал подразумевается равным 1.
wkstназвание дня, с которого начинается неделя. Если отсутствует, то подразумевается
MO(Понедельник).countнеобязательный атрибут с целочисленным значением, в котором указывается параметр COUNT.
untilнеобязательный атрибут, указывающий параметр UNTIL в формате даты-времени iCalendar.
Тело:
набор элементов XML:
BYMONTH,BYWEEKNO,BYYEARDAY,BYMONTHDAY,BYSETPOSтело каждого элемента содержит число - номер месяца, недели и т.п. За исключением элемента
BYMONTH, число может быть отрицательным.BYDAYкаждое тело элемента содержит одно наименование дня (
MO,TU, ..SU); каждый элемент может содержать необязательный числовой атрибутweek- номер недели (он может быть отрицательным).
Пример:
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.
Атрибуты:
versionверсия формата сертификата.
subjectнеобязательный адрес E-Mail, связанный с сертификатом.
Тело:
набор элементов XML:
subject,issuerэти элементы XML содержат дочерние элементы XML с частями имени Сертификата и Издателя. Поддерживаются части
c,country,l,city, и т.д. Значением дочернего элемента является тело элемента.validFrom,validTillтекстовые тела каждого элемента содержат в формате iCalendar период действия сертификата
base64необязательный элемент - его тело содержит данные сертификата в формате base64.
sdp
Этот элемент XML представляет объект SDP.
Атрибуты:
ipIP адрес медиа по умолчанию (необязательно).
origUserполе с именем пользователя источника (необязательно).
sessionIDполе идентификатора сессии источника.
sessionVersionполе версии сессии источника.
origIPIP адрес, указанный в полях nettype, addrtype и unicast-address источника (необязательно).
subjectназвание сессии (необязательно). Если отсутствует, то используется название
-.
Тело:
media
Этот элемент XML представляет объект SDP Медиа.
Атрибуты:
mediaтипа медиа (такой, как
audio,video). Если этот атрибут отсутствует, то используется значениеaudio.ipадрес и порт медиа.
protocolмедиа протокол (такой, как
udp,tcp,RTP/AVP). Если этот атрибут отсутствует, то используется значениеRTP/AVP.directionнаправление медиа (
sendrecv,sendonly,recvonly,inactive).rtcpадрес и порт rtcp (необязательно)
Тело:
codec
Этот элемент XML представляет кодек SDP Медиа.
Атрибуты:
idидентификатор кодека - номер типа данных RTP (число из диапазона 0..127).
nameимя кодека (такое, как
PCMU/8000).formatпараметр формата кодека (необязательно).
attr
Этот элемент XML представляет атрибут объекта SDP или SDP Медиа.
Атрибуты:
nameимя атрибута.
Тело:
необязательная строка со значением атрибута.
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@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@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.1
CommuniGate 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. Иначе элемент массива с индексом 0 содержит строку с именем класса (application, choice,private), элемент массива с индексом 1 содержит число - код элемента данных.
Для элементов данных типа "constructed" оставшиеся элементы массива (возможно - 0 элементов) содержат конвертированные элементы ASN.1.
Для "примитивных" элементов данных оставшиеся элементы массива содержат представление данных, которое зависит от типа элемента:
booleanНулевой Объект для "false", любой другой объект для "true"
integer,enum(не длиннее 8 байт)nullstring,_subtype_string(данные не содержат бинарный нуль)time,timeUTCoid,reloidпредставление в виде Строки для идентификатора объекта (ObjectID) (nn.mm.ll.kk.rr)
другие типы данных