我有一个XML,它有一些拉丁字符,如é,ä,å,ß,ö等,我必须使用XSLT 2.0将此XML转换为CSV文件,并且必须将这些拉丁字符替换为UTF-8格式。我已经使用character-map将这5个字符分别映射到e,ae,aa,ss,oe,但输入XML可以有许多这样的其他字符。有没有办法可以使用某些编码转换这些字符?任何线索都会非常有用。
此致 ABHI
答案 0 :(得分:2)
您可以通过首先将字符串转换为已分解的正常形式(其中重音由单独的代码点表示),然后使用replace()函数剥离重音来删除重音:
replace(normalize-unicode($in, 'NFD'),
'\p{IsCombiningDiacriticalMarks}', '')
这不能解决像ß和æ这样的情况,但它会让你走很长的路。
(另外:这会从重音字母上删除重音。但它与你的问题标题无关,即转换为UTF-8。我怀疑你对实际要求感到困惑。)
答案 1 :(得分:0)
您可以通过提供相应的映射来使用translate函数:
<xsl:value-of select="translate(., 'äß','aB')"/>