March 2002
NegotiationRecordDefinition-charSetandLanguageNegotiation-4
{Z39-50-negotiationRecordDefinition CharSetandLanguageNegotiation-4 (x)}
DEFINITIONS ::= BEGIN
CharSetandLanguageNegotiation ::= CHOICE{
proposal [1] IMPLICIT OriginProposal,
response [2] IMPLICIT TargetResponse}
--
-- For character sets:
-- Origin proposes one, two, or all three of the following, in order of
-- preference:
-- (a) 2022 character sets.
-- (b) 10646 character set.
-- (c) Private character set.
--
-- The target responds with one of (a), (b), or (c), indicating the
-- character set(s) to be supported for all name and message strings.
--
-- If the origin includes (a),
-- the origin proposes:
-- (1) A proposed environment: 7-bit, 8-bit, or no-preference.
-- (2) A set of iso 2022 registration numbers.
-- (3) One or more proposed initial sets of registration numbers,
-- for c0, c1, g0, g1, g2 and g3. These must come from (2).
-- (4) The proposed encoding level.
-- And if the target selects (a), it responds with:
-- (1) A selected environment: 7-bit or 8-bit.
-- (2) A subset of the set of iso 2022 registration numbers proposed
-- by the origin.
-- (3) The initial set of registrations, which must come from (2)
-- but need not be from the set of initial registrations proposed
-- by the origin.
-- (4) The encoding level; less than or equal to that proposed.
--
-- If the origin includes (b),
-- The origin proposes:
-- (1) (optionally) A list of collections (i.e. subsets of characters from the
-- complete 10646 definition).
-- (2) An implementation level.
-- (3) Syntax/form: e.g. ucs-2, ucs-4, utf-8, utf-16.
-- And if the target selects (b), it responds by choosing a subset of the
-- collections proposed by the origin in (1) and an implementation level less
-- than or equal to that proposed by the origin in (2).
--
-- If the origin includes (c), the origin proposes one of the following:
-- (1) A list of private character sets, by one or more object
-- identifiers.
-- (2) A list of private character sets, by an EXTERNAL.
-- (3) An indication to use a private, previously agreed upon
-- character set.
-- And if the target selects (c):
-- - If the origin proposed (1), the target should respond with (1), and
-- the list of object identifiers should be a subset of the list that
-- the origin included.
-- - If the origin proposed (2), the target should respond with (2), using
-- the same EXTERNAL definition (but not necessarily the same content)
-- used by the origin.
-- - If the origin proposed (3), the target should respond with (3).
--
-- For Languages:
-- The origin optionally proposes one or more language codes. The target
-- response may include a single language code, which indicates the
-- language to be used for all message strings. The target may include or
-- omit this, whether or not the origin included a proposed set, and the
-- language code indicated need not be from among those proposed.
--
--
OriginProposal ::= SEQUENCE {
proposedCharSets [1] IMPLICIT SEQUENCE OF CHOICE{
-- Each should occur at most once, and in order of preference
-- (the "order of preference" is the reason why this is
-- "SEQUENCE OF CHOICE" rather than just "SEQUENCE")
iso2022 [1] Iso2022,
iso10646 [2] IMPLICIT Iso10646,
private [3] PrivateCharacterSet} OPTIONAL,
-- proposedCharSets must be omitted
-- if origin proposes version 2
proposedlanguages [2] IMPLICIT SEQUENCE OF LanguageCode OPTIONAL,
recordsInSelectedCharSets [3] IMPLICIT BOOLEAN OPTIONAL
-- default 'false'. See rule 6 above.
}
TargetResponse ::= SEQUENCE{
selectedCharSets [1] CHOICE{
iso2022 [1] Iso2022,
iso10646 [2] IMPLICIT Iso10646,
private [3] PrivateCharacterSet,
none [4] IMPLICIT NULL
-- If selected, no negotiation
-- is assumed to be in force
-- for character sets.
} OPTIONAL,
-- Omitted if and only if proposedCharSets
-- was Omitted in the request.
selectedLanguage [2] IMPLICIT LanguageCode OPTIONAL,
recordsInSelectedCharSets [3] IMPLICIT BOOLEAN OPTIONAL
-- Omitted if and only if 'recordsInSelectedCharSets' was omitted
-- in the request. See rule 7 above.
}
PrivateCharacterSet ::= CHOICE{
viaOid [1] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER,
externallySpecified [2] IMPLICIT EXTERNAL,
previouslyAgreedUpon [3] IMPLICIT NULL}
LanguageCode ::= GeneralString -- from ANSI Z39.53-1994
-- Definition of ISO2022
-- For ISO 2022, the following is negotiated:
-- 1) The environment: 7-bit or 8-bit;
-- 2) a set of registration numbers (from the ISO Register of coded
-- character sets) for graphical and control character sets;
-- 3) g0, g1, g2, g3, c0, c1, the registration numbers of the graphical and
-- control character sets that are initially designated to g0, g1, etc.
-- The origin submits one or more sequences of values for
-- g0, g1, g2, g3, c0, c1 (for each sequence: at least one of
-- g0 and g1 must be included; g2 and g3 are optional and
-- may be included only if g1 is included;
-- c0 should be included; and c1 is optional); the target
-- selects one of the proposed sequences.
-- 4) gleft: which of g0, g1, g2 or g3, initially has GL shift status in
-- an 8-bit environment or has shift status in a 7-bit environment; and
-- 5) gright: which of g1, g2 or g3 initially has GR shift status in an
-- 8-bit environment.
Iso2022 ::= CHOICE{
originProposal [1] IMPLICIT SEQUENCE{
proposedEnvironment [0] Environment OPTIONAL,
-- omitted means no preference
proposedSets [1] IMPLICIT SEQUENCE OF INTEGER,
proposedInitialSets [2] IMPLICIT SEQUENCE OF
InitialSet,
proposedLeftAndRight [3] IMPLICIT LeftAndRight},
targetResponse [2] IMPLICIT SEQUENCE{
selectedEnvironment [0] Environment,
selectedSets [1] IMPLICIT SEQUENCE OF INTEGER,
selectedinitialSet [2] IMPLICIT InitialSet,
selectedLeftAndRight [3] IMPLICIT LeftAndRight}}
Environment ::= CHOICE{
sevenBit [1] IMPLICIT NULL,
eightBit [2] IMPLICIT NULL}
InitialSet::= SEQUENCE{
g0 [0] IMPLICIT INTEGER OPTIONAL,
g1 [1] IMPLICIT INTEGER OPTIONAL,
-- one of g0 and g1 must be included
g2 [2] IMPLICIT INTEGER OPTIONAL,
g3 [3] IMPLICIT INTEGER OPTIONAL,
--g2 and/or g3 may be included
-- only if g1 was included
c0 [4] IMPLICIT INTEGER,
c1 [5] IMPLICIT INTEGER OPTIONAL}
LeftAndRight ::= SEQUENCE{
gLeft [3] IMPLICIT INTEGER{
g0 (0),
g1 (1),
g2 (2),
g3 (3)},
gRight [4] IMPLICIT INTEGER{
g1 (1),
g2 (2),
g3 (3)} OPTIONAL}
-- Definition of Iso10646
--
-- The 10646 object identifier looks like:
-- 1.0.10646.1.implementationLevel.repertoireSubset.arc1.arc2. ....
--
-- (The second '1' is for "part 1" of 10646.)
--
-- ImplementationLevel is 1-3
--
-- repertoireSubset is 0 or 1, for 'all' or 'collections'.
-- The arcs are present only if repertoireSubset is 'collections',
-- in which case arc1, arc2, etc., are the
-- identifiers of collections of character repertoires.
--
-- There is a second 10646 oid, for specifying syntax/form:
-- 1.0.10646.1.0.form
--
-- (The second '0' represents "transfer syntax".)
--
-- where values of form include:
-- 2: ucs-2
-- 4: ucs-4
-- 5: utf-16
-- 8: utf-8
Iso10646 ::= SEQUENCE{
collections [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
--oid of form 1.0.10646.1.implementationLevel
-- .repertoireSubset.arc1.arc2. ....
-- Target to choose a subset of the collections
-- proposed by the origin, and an implementation level
-- less than or equal to that proposed.
--
-- when 'collections' is omitted,
-- 'implementationLevel' defaults to 3.
--
encodingLevel [2] IMPLICIT OBJECT IDENTIFIER
-- oid of form 1.0.10646.1.0.form
-- where value of 'form' is 2, 4, 5, or 8
-- for ucs-2, ucs-4, utf-16, utf-8
}
END
Library of
Congress