-1

嗨我有一个场景,我需要删除特殊字符以及拉丁字符。我能够去掉拉丁语和一些特殊字符。但由于某种原因,™ 正在转换为 TM。如何使用 xslt 删除它?这是我的代码和功能

 <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>

功能

<xsl:function name="lancet:stripSpecialChars">
<xsl:param name="string" />
<xsl:variable name="AllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789()*%$#@!~&lt;&gt;™,.?[]=- +   /\ '"/>
<xsl:value-of select="replace(normalize-unicode($string, 'NFKD'), '\P{IsBasicLatin}', '')"/>

我在期待什么?

输入: DE’ERIKA

输出:(现在使用我的代码)-> DEATMERIKA

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

4

1 回答 1

0

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

不要删除’字符!例如,如果用户输入了一个在 ASCII 代码页中不存在的带重音符号 (ï) 的字母,系统将呈现类似 ’ 的内容。

具体来说,’ 是一个右单引号。所以用户输入是:

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

将其渲染为 DEERIKA 或(更糟糕的)DEATMERIKA 是不正确的!

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

解释发生了什么的相关问题

于 2017-12-05T15:34:56.680 回答