Level 1: Block Types
Level 1 introduces block types and catalog. For this level all non-listed attributes in node blocks are considered zero.
Block Type
First two attributes in node block are interpreted as follows:
UBNatural - TypeGroup UBNatural - BlockType
Blocks types are organized into Groups. Type group with value 0 is called Basic Group and it's meaning is build-in and defined in the protocol itself.
TypeGroup value specifies to which group each block belongs. BlockType value specifies particular block in the corresponding group where meaning of single groups and block types is defined in document using basic blocks.
Basic Group
Basic group uses TypeGroup = 0. Basic blocks provides ability to store block type declarations, definitions and links to catalog.
Undefined
This block is used for unknown block types or data padding.
Block: Basic (0) / Unknown (0)
Declaration
Declaration block determines the allowed range of groups. This block should be located at the beginning of each file, if the application didn't provide any static/special meaning, but it might be used anywhere inside document as well.
Block: Basic (0) / Document Declaration (1)
+Natural groupsCount - The number of allocated groups +Natural preserveGroups - The number of groups to keep from previous declarations FormatDeclaration formatDeclaration - Declaration of format Any documentRoot - Root node of document
For subblocks of this block there is permitted range of values in the interval group preserveGroups + 1 .. preserveGroups + groupsCount + 1. preservedGroups + groupsCount + 1. If the value reserveGroups = 0, takes the highest not yet reserved group in the current or parental blocks + 1. For all values of zero and the application of rules of cutting the block of zeros coincides with the data block.
Format Declaration
Format declaration allows you use either declaration from catalog or local format definition or both.
Block: Basic (0) / Format Declaration (2)
+CatalogFormatSpecPath catalogFormatSpecPath - Specification of format defined as path in catalog +Natural formatSpecRevision - Specification's revision number FormatDefinition formatDefinition
Format Definition
This block allows to specify the basic structure of format specification. Specifies the sequence of parameters using either join or consist operation.
Block: Basic (0) / Format Definition (3)
Any[] formatParameters - Join or Consist format parameters +RevisionDefinition[] revisions
Block: Basic (0) / Format Join Parameter (4)
+FormatDeclaration formatDeclaration
Block: Basic (0) / Format Consist Parameter (5)
+GroupDeclaration groupDeclaration
Group Declaration
Group declaration allows you use either declaration from catalog or local group definition or both.
Block: Basic (0) / Group Declaration (6)
+CatalogGroupSpecPath catalogGroupSpecPath - Specification of format defined as path in catalog +Natural groupSpecRevision - Specification's revision number GroupDefinition groupDefinition
Group Definition
This block allows to specify the basic structure of group specification. Specifies the sequence of parameters using either join or consist operation.
Block: Basic (0) / Group Definition (7)
Any[] groupParameters - Join or Consist group parameters +RevisionDefinition[] revisions
Block: Basic (0) / Group Join Parameter (8)
+GroupDeclaration groupDeclaration
Block: Basic (0) / Group Consist Parameter (9)
+BlockDeclaration blockDeclaration
Block Declaration
Block declaration allows you use either declaration from catalog or local block definition or both.
Block: Basic (0) / Group Declaration (10)
+CatalogBlockSpecPath catalogBlockSpecPath - Specification of format defined as path in catalog +Natural blockSpecRevision - Specification's revision number BlockDefinition blockDefinition
Block Definition
This block allows to specify the basic structure of block specification. Specifies the sequence of parameters using either join, consist, list join or list consist operation.
Block: Basic (0) / Block Definition (11)
Any[] blockParameters - Join or Consist or List Join or List Consist block parameters +RevisionDefinition[] revisions
Block: Basic (0) / Block Join Parameter (12)
+BlockDeclaration blockDeclaration
Block: Basic (0) / Block Consist Parameter (13)
+BlockDeclaration blockDeclaration
Block: Basic (0) / Block List Join Parameter (14)
+BlockDeclaration blockDeclaration
Block: Basic (0) / Block List Consist Parameter (15)
+BlockDeclaration blockDeclaration
Revision Definition
Block allows to define parameters count for particular specification definition.
Block: Basic (0) / Revision Definition (16)
+Natural parametersCount
Type Context
For each block, there is type context which provides mapping of particular block type (as defined above) to particular declaration/definition. Context is typically same for block and it's childer, except for declaration blok and it's formatDeclaration parameter, which affects context of documentRoot block and also incrementally affects group and block definitions which can use block types already defined in currently processed declaration.