如何在XSLT 2.0中将拉丁字符转换为UTF-8格式?

时间:2018-04-18 20:42:18

标签: xml xslt-2.0 transformation

我有一个XML,它有一些拉丁字符,如é,ä,å,ß,ö等,我必须使用XSLT 2.0将此XML转换为CSV文件,并且必须将这些拉丁字符替换为UTF-8格式。我已经使用character-map将这5个字符分别映射到e,ae,aa,ss,oe,但输入XML可以有许多这样的其他字符。有没有办法可以使用某些编码转换这些字符?任何线索都会非常有用。

此致 ABHI

2 个答案:

答案 0 :(得分:2)

您可以通过首先将字符串转换为已分解的正常形式(其中重音由单独的代码点表示),然后使用replace()函数剥离重音来删除重音:

replace(normalize-unicode($in, 'NFD'), 
        '\p{IsCombiningDiacriticalMarks}', '')

这不能解决像ß和æ这样的情况,但它会让你走很长的路。

(另外:这会从重音字母上删除重音。但它与你的问题标题无关,即转换为UTF-8。我怀疑你对实际要求感到困惑。)

答案 1 :(得分:0)

您可以通过提供相应的映射来使用translate函数:

<xsl:value-of select="translate(., '&#x00E4;&#x00DF;','&#x0061;&#x0042;')"/>