Strip diacritics, with XQuery
<result>
<source>çéüå</source>
<source-is-nfc-normalized>true</source-is-nfc-normalized>
<nfd-normalized>çéüå</nfd-normalized>
<stripped-of-combining-diacritical-marks>ceua</stripped-of-combining-diacritical-marks>
<src-codepoints>231 233 252 229</src-codepoints>
<nfd-codepoints>99 807 101 769 117 776 97 778</nfd-codepoints>
<fin-codepoints>99 101 117 97</fin-codepoints>
</result>xquery version "3.1";
declare function local:strip-diacritics($string as xs:string) as xs:string {
let $normalized := normalize-unicode($string, 'NFD')
let $stripped := replace($normalized, '\p{IsCombiningDiacriticalMarks}', '')
return
$stripped
};
declare function local:inspect-diacritics($string as xs:string) as element() {
let $normalized := normalize-unicode($string, 'NFD')
let $stripped := local:strip-diacritics($string)
return
<result>
<source>{$string}</source>
<source-is-nfc-normalized>{$string = normalize-unicode($string)}</source-is-nfc-normalized>
<nfd-normalized>{$normalized}</nfd-normalized>
<stripped-of-combining-diacritical-marks>{$stripped}</stripped-of-combining-diacritical-marks>
<src-codepoints>{string-to-codepoints($string)}</src-codepoints>
<nfd-codepoints>{string-to-codepoints($normalized)}</nfd-codepoints>
<fin-codepoints>{string-to-codepoints($stripped)}</fin-codepoints>
</result>
};
let $source := 'çéüå'
return
local:inspect-diacritics($source)