diff options
author | Rickard Green <[email protected]> | 2019-03-21 20:45:46 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-03-21 20:45:46 +0100 |
commit | 4c8c3f0e66c3d200a2e5891b0649c87f85fe0db2 (patch) | |
tree | bd8182b84d156a85e468c065eb2c0760d57b17e0 /lib/xmerl/src | |
parent | 0f091e92c70f0687c4a1d3ef50aaf0a078b5dcdb (diff) | |
parent | f5c90a31ebd6e9f09588f176ea6895406d1f7d92 (diff) | |
download | otp-4c8c3f0e66c3d200a2e5891b0649c87f85fe0db2.tar.gz otp-4c8c3f0e66c3d200a2e5891b0649c87f85fe0db2.tar.bz2 otp-4c8c3f0e66c3d200a2e5891b0649c87f85fe0db2.zip |
Merge branch 'maint'
Diffstat (limited to 'lib/xmerl/src')
-rw-r--r-- | lib/xmerl/src/xmerl_scan.erl | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/xmerl/src/xmerl_scan.erl b/lib/xmerl/src/xmerl_scan.erl index e543a5a11e..d76ed5c820 100644 --- a/lib/xmerl/src/xmerl_scan.erl +++ b/lib/xmerl/src/xmerl_scan.erl @@ -2410,15 +2410,22 @@ scan_att_chars("&" ++ T, S0, Delim, Acc, TmpAcc,AT,IsNorm) -> % Reference true -> scan_att_chars(T1,S1,Delim,[ExpRef|Acc],[ExpRef|TmpAcc],AT,IsNorm); _ -> - Ch = string_to_char_set(S#xmerl_scanner.encoding, ExpRef), case T of "#" ++ _ -> %% normalization rules (sec 3.3.3) require that for %% character references, the referenced character be %% added directly to the normalized value - scan_att_chars(T1, S1, Delim, Ch ++ Acc,TmpAcc, AT,IsNorm); + {T2,S2,IsNorm2} = + if + ?whitespace(hd(ExpRef)) -> + normalize(T1, S1, IsNorm); + true -> + {T1, S1, IsNorm} + end, + scan_att_chars(T2, S2, Delim, ExpRef ++ Acc, TmpAcc, AT, IsNorm2); _ -> - scan_att_chars(Ch ++ T1, S1, Delim, Acc,TmpAcc, AT,IsNorm) + Ch = string_to_char_set(S#xmerl_scanner.encoding, ExpRef), + scan_att_chars(Ch ++ T1, S1, Delim, Acc, TmpAcc, AT, IsNorm) end end; scan_att_chars("<" ++ _T, S0, _Delim, _Acc,_, _,_) -> % Tags not allowed here @@ -3964,7 +3971,7 @@ normalize(T,S,IsNorm) -> {_,T,S} -> {T,S,IsNorm}; {_,T1,S1} -> - {T1,S1,true} + normalize(T1,S1,true) end. |