使用xslt删除™®

时间:2017-11-29 19:54:09

标签: xml xslt xsl-fo workday-api

我有一个场景,我需要删除特殊字符和拉丁字符。我能够删除拉丁文和少数特殊字符。但出于某种原因,™正在转换为TM。如何使用xslt删除它?这是我的代码和功能

' Array1 = [{
  'Sk': 6,
  'Qty': 50
},
{
  'SK': 5,
  'Qty': 20
},
{
  'SK': 5,
  'Qty': 20
}
Array2 = [{
  'Sk': 6,
  'Qty': 80
},
{
  'SK': 5,
  'Qty': 20
},
{
  'SK': 5,
  'Qty': 20
}

功能

 <Last_Name xtt:fixedLength="30" xtt:required="true" xtt:severity="error" xtt:align="left"><xsl:value-of select="lancet:stripSpecialChars(replace(normalize-unicode(translate(wd:Last_Name, ',', ''), 'NFKD'), '⁄', '/'))"/></Last_Name>

我期待什么?

INPUT: DE'ERIKA

输出(现在使用我的代码) - &gt; DEATMERIKA

预期输出: DEAERIKA(我的代码正在消除拉丁字符和少数符号)

1 个答案:

答案 0 :(得分:0)

您正在看到这些字符,因为您在某处使用了错误的代码页:输入XML被编码为UTF-8,但显示系统却采用ASCII。解决方案是执行转换或使显示应用程序使用UTF-8。

不要删除characters角色!如果用户输入例如一个带有重音(ï)的字母,在ASCII代码页中不存在,系统将呈现类似的东西。

具体来说,â是一个正确的单引号。所以用户输入是:

DE'ERIKA(这是许多语言中的有效名称)。

将此呈现为DEERIKA或(更糟)DEATMERIKA 不正确!

如果删除这些字符,则删除部分输入。这就像是建议将你的名字改为“Gop Nadu”,因为你的系统无法呈现'i'。

Related question that explains what happens