oda.Path

Материал из ODANT Wiki
Перейти к: навигация, поиск

Спецификации

Путь адресации

[10]    Path            ::=    ('oda://')? Step ('/' Step)*          /* Путь для выбора или поиска элемента ODANT */

Шаги адресации

[20]    Step            ::=    ThisStep | ChildStep | DescendantStep | ParentStep | SourceStep | AncestorStep          /* Шаг выбора элемента ODANT */ 
[21]    ThisStep        ::=    Prefix 'this'          /* Шаг, указывающий на элемент, являющийся частью текущего контекста */
[22]    ChildStep       ::=    StepId          /* Шаг ко всем дочерним элементам с указанным идентификатором */
[23]    DescendantStep  ::=    '/' StepId           /* Шаг ко всем нижестоящим элементам с указанным идентификатором */
[24]    ParentStep      ::=    '..'          /* Шаг к вышестоящему элементу */
[25]    SourceStep      ::=    'source'          /* Шаг к источнику наследования */
[26]    AncestorStep    ::=    '-' | ('-' StepId)          /* Шаг ко всем вышестоящим элементам с указанным идентификатором */
[27]    StepId          ::=    (Prefix)? (ItemId | ItemName | FilePath | AnyId)          /* Идентификатор шага */
[28]    AnyId           ::=     '*'          /* Маска идентификатора любого элемента */

Префиксы

[30]    Prefix          ::=    PrefixName ':'        /* Префикс идентификатора */
[31]    ItemId          ::=    (ItemChar)15        /* Идентификатор элемента */
[32]    ItemName        ::=    Name        /* Имя элемента */
[33]    PrefixName      ::=    'H' | 'P' | 'S' | 'D' | 'C' | 'I' | 'O' | 'F' | 'R' | 'U' | 'M'        /* Имена префиксов идентификаторов */
        H - Host           / Хост /
        P - Part           / Раздел /
        S - Storage        / Хранилище /
        D - Distributive   / Распространяемый компонент /
        C - Class          / Класс /
        I - Index          / Индекс /
        O - Object         / Объект /
        F - File/Folder    / Файл/Папка /
        R - Role           / Роль /
        U - User           / Пользователь /
        M - Method         / Метод / 

Имена и символы

[50]    Name            ::=     (Letter | '_') (NameChar)*        /* Имя */
[51]    NameChar        ::=     Letter | Digit | '-' | '_'         /* Допустимые символы имени */
[52]    Letter          ::=     [a-z] | [A-Z]        /* Буквенные символы */
[53]    Digit           ::=     [0-9]        /* Цифровые символы */

Примеры адресации

Хост

H:000000000000000       Выбрать хост '000000000000000'.
H:*                     Выбрать все хосты.
H:this                  Выбрать текущий хост.
H:this/..H:*               Выбрать хост поддержки текущего хоста.
H:this/-H:*                Выбрать всю иерархию хостов поддержки текущего хоста.
H:this/H:*              Выбрать все дочерние хосты текущего хоста.
H:this//H:*             Выбрать всю иерархию дочерних хостов от текущего хоста.
H:this/source           Некорректный путь, т.к. хосты не могут наследоваться, т.к. id хостов уникальны.

Раздел

root                     Выбрать корневой раздел.
*                     Выбрать все разделы.
H:this                   Выбрать текущий хост.
H:this/..               Выбрать хост выбранного раздела.
H:this/-                Выбрать всю иерархию хостов поддержки текущего хоста.
H:this/H:*              Выбрать все дочерние хосты текущего хоста.
H:this//H:*             Выбрать всю иерархию дочерних хостов от текущего хоста.
H:this/source           Некорректный путь, т.к. хосты не могут наследоваться, т.к. id хостов уникальны.