| let
$without-checksum := substring($value, 1, 18),
$letter-as-numbers-string :=
string-join(
for $code in string-to-codepoints($without-checksum)
return
if ($code >= string-to-codepoints('A') and string-to-codepoints('Z') >= $code) then
(: Letters A-Z :)
xs:string($code - string-to-codepoints('A') + 10)
else if ($code >= string-to-codepoints('0') and string-to-codepoints('9') >= $code) then
(: Digits 0-9 :)
xs:string($code - string-to-codepoints('0'))
else
(: Unrecognized characters :)
'',
''
),
$two-zeros-appended-digits := xs:decimal($letter-as-numbers-string || '00'),
$mod-97-reminder := $two-zeros-appended-digits mod 97,
$checksum-computed := substring('0' || string(98 - $mod-97-reminder), string-length('0' || string(98 - $mod-97-reminder)) - 1),
$checksum-provided := substring($value, 19, 2)
return $checksum-computed = $checksum-provided | | | documentation | | Walidacja cyfry kontrolnej identyfikatora LEI |
|