base64Binary lexical/octet length

Hi

The XSD1.1 DataTypes spec in the base64Binary section gives following
pseudo-code for calculating octet length of a base64Binary encoded string.

---------------------------------------------------------------------------------
1) lex2   := killwhitespace(lexform)    -- remove whitespace characters
2) lex3   := strip_equals(lex2)         -- strip padding characters at end
3) length := floor (length(lex3) * 3 / 4)         -- calculate length
---------------------------------------------------------------------------------


My understanding is that, for a base64Binary encoded string, it's lexical
length would be a multiple of 4 and it's octet length would be a multiple of
3.

As an example if we take a base64Binary encoded string, which doesn't
contain whitespaces or padding chars(=), so that lexform is same as lex3 in
above code. Now let us take a lex3 of length 10 then, according to above
code, the octet length would be 7(not a multiple of 4).
Are octet-lengths which are not multiple of 4, valid in case of base64Binary
encoded string ?

Also, what should be the formulae for calculating lexical-length from the
octet-length of a base64Binary string ?
Should it be something like this:
*
*
*lexical-length := ceil( octet-length*4/3)*

If we take an example with octet-length=10, the lexical-length is not a
multiple of 4.
I am clueless here. Appreciate your help on the same.

-- 
Best Regards,
Satya Prakash Tripathi

Received on Saturday, 9 April 2011 20:49:58 UTC