ГОСТ РИСО 21090—2016
7.4.6.3 Атрибуты
7.4.6.3.1 value : String: фактическое содержание строки. Обсуждение кодировки символов строк
приведено в 6.7.5.
Это пример шаблона обертки примитивного типа данных. Более детальные сведения приведено
в 6.3.
7.4.6.3.2
language
. Code: человеческий язык содержания. Допустимые коды берутся из документа
RFC 3066 организации IETF. Если этот атрибут пуст, то язык может быть идентифицирован откуда-то
еще. например, из содержания или из тега языка в кодировке
Unicode.
В профилях соответствия должны быть определены правила задания языка по умолчанию, при
меняемые в данной среде использования настоящего стандарта.
Хотя значение атрибута language обычно изменяет интерпретацию текста, содержащийся в нем
код языка не меняет значение символов текста.
7.4.6.3.3 translation : Set(ST.NT): перевод, то есть альтернативное представление того же самого
содержания на другом языке. Переводы не могут содержать другие переводы.
Переводы должны представлять ту же самую информацию, но на другом языке. Переводы не при
нимают участия в проверке на равенство и. соответственно, не должны добавлять какую-либо новую
семантику к исходному значению.
7.4.6.4 Равенство
Два непустых (nonNull) значения типа ST равны только в том случае, если одинаковы последо
вательности символов, которые они представляют (то есть они не имеют причины пустоты nullFlavor и
значения их атрибутов value равны). Свойство translation исключается из проверки на равенство. Кроме
того, из этой проверки исключается свойство языка language, иначе было бы непонятно, как сравнивать
значения типа ST, когда язык не указан.
Значение типа данных ED. содержащее простой текст, может быть также равно значению типа
данных ST. имеющего то же символьное содержание, при условии выполнения правил, определенных
для типа данных ED (см. 7.4.2.4).
7.4.6.5 Инварианты:
- если атрибут value присутствует, он должен содержать по меньшей мере один символ;
- переводы не могут содержать переводы.
Представление инвариантов на языке OCL:
:nv "вложенные переводы не допускаются": translations
forAll(t I t.translation >isEmpty|
mv "содержание, если нет причины пустоты nullFlavor" : isNotNull implies
(value.oclisDeiined and value.size > 0}
7.4.6.6 Операции
7.4.6.6.1 mediaType : String: возвращает значение text/plain.
7.4.6.6.2 size : Integer: число символов в строке.
7.4.6.6.3 concat(other: S T): ST: конкатенация данного значения со значением other.
7.4 6.6.4 substring(lowe г INT. upper: INT). ST: подстрока данного значения, начинающаяся симво
лом с номером lower и завершающая символом с номером upper.
Символы нумеруются от 1 до значения this.size().
Примечание — При извлечении символов из строки может оказаться необходимым скопировать неко
торые другие предшествующие символы, образующие необходимый контекст в некоторых кодировках символов.
7.4.6.6.5 tolnteger: INT: если содержание строки представляет допустимую запись целого числа,
то возвращается его значение как целое число типа INT. Если содержание не представляет допустимую
запись целого числа, то возвращается причина пустоты NullFlavor со значением NI (нет информации).
Строка представляет допустимую запись целого числа, если она соответствует формату литерала
целого числа, определенному в ИСО/МЭК 11404. или лексическому представлению числа типа integer,
определенному в XML-схеме.
7.4.6.6.6 toReal: REAL: если содержание строки представляет допустимую запись числа с плава
ющей точкой, то возвращается его значение как число типа REAL. Если содержание не представляет
допустимую запись числа с плавающей точкой, то возвращается причина пустоты NullFlavor со значе
нием NI (нет информации).
42