Схема данных и абстрактная структура записи, рассмотренные в предыдущей секции, определяют лишь логическую структуру записи. Физическая реализация этой структуры остается неопределенной. Стандарт Z39.50 требует, чтобы записи из внутреннего представления отображались во внешние структуры, которые и пересылаются по сети. Для внешних представлений, которые стандартизуются в классе (recordSyntax) {Z39.50 5}, физическая реализация становится определяющей.
Существует всего один универсальный формат внешнего представления (recordSyntax), который однозначно отображает абстрактную структуру записи в экспортируемую внешнюю физическую структуру. Он называется GRS-1 (Generic Record Syntax) OID {Z39.50 5 105}.
ASN.1 определение записи в формате GRS-1 можно найти в Приложении П7.2. Если в этом определении оставить основное, исключив варианты и метаинформацию, останется:
GenericRecord ::= SEQUENCE OF TaggedElement
TaggedElement ::= SEQUENCE {
tagType [1] IMPLICIT INTEGER OPTIONAL,
tagValue [2] StringOrNumeric,
content [4] ElementData }
ElementData ::= CHOICE{
octets OCTET STRING,
numeric INTEGER,
date GeneralizedTime,
ext EXTERNAL,
string InternationalString,
trueOrFalse BOOLEAN,
oid OBJECT IDENTIFIER,
intUnit [1] IMPLICIT IntUnit,
elementNotThere [2] IMPLICIT NULL, --element requested but not there
elementEmpty [3] IMPLICIT NULL, --element there, but empty
noDataRequested [4] IMPLICIT NULL, --variant request said 'no data'
diagnostic [5] IMPLICIT EXTERNAL,
subtree [6] SEQUENCE OF TaggedElement }
END
т. е. последовательность элементов (taggedElement), каждый их которых содержит тип тэга (tagType, т. е. номер tagSet), значение тэга (tagValue) и данные (content). Значение тэга может быть числовым или текстовым. Данные – это или значение или вложенный элемент (taggedElement) с описанной структурой (определение subtree ничем не отличается от определения GenericRecord). Таким образом, GRS-1 представляет собой последовательность элементов со структурой, определенной в терминах, аналогичных определению абстрактной структуры записи и схемы данных, с бесконечным количеством вложений.
5.5. APDU presentRequest и presentResponse
Для извлечения найденных ранее записей origin посылает target APDU presentRequest, target пересылает затребованные записи или диагностику в APDU presentResponse. Исключения описаны в секции 5.8. Структура APDU presentRequest и presentResponse приведены в Приложении П6.4.
Следует обратить внимание, что собственно данные в APDU presentResponse определены как
Records ::= CHOICE{
responseRecords [28] IMPLICIT SEQUENCE OF NamePlusRecord,
nonSurrogateDiagnostic [130] IMPLICIT DefaultDiagFormat,
multipleNonSurDiagnostics [205] IMPLICIT SEQUENCE OF DiagRec}
--
NamePlusRecord ::= SEQUENCE{
name [0] IMPLICIT DatabaseName OPTIONAL,
record [1] CHOICE{
retrievalRecord [1] EXTERNAL,
surrogateDiagnostic [2] DiagRec }
т. е. могут включать в себе не только извлекаемые записи retrievalRecord, но и диагностические сообщения DiagRec. При этом каждая извлекаемая запись представлена через внешнее определение EXTERNAL. Структуры, определенные как EXTERNAL обычно идентифицируются по OID и дополнительные ASN.1 определения
Прочее образование
Какая программа читает файл формата grs?
1с от версии 8.0 и выше.
Похожие вопросы
- НАрод помогите пожайлуста нужны частушки желательно школьные. В формате mp3, и, чтобы можно было скачать! Заранее спасибо!
- Будет ли в 2009 обязательным сдача 5 экзаменов в формате ЕГЭ?
- Появилось резкое желание хорошо изучить то, что мы уже прошли по школьной программе (короче, читайте внизу)
- Программа Е. Л. Яковлевой тестовые задания. Помогите.
- Почему люди которые читают книги, считают себя выше тех людей кто не читает!? Я о большенстве.
- Ненавижу читать! С детства это дело ненавидел! Как быть?
- Мама заставляет читать книги летом
- Почему нужно читать художественную литературу?
- Читать?)
- Как научить ребенка читать хотя бы по слогам?