1

我必须构建一个 XSLT 代码,如果输入超过 24 个字母数字字符。

我只需要提取前 24 个字母数字字符。

此外,如果输入少于 24 个字符,则必须提取相同的字符

谁能给我这个xslt代码?

4

2 回答 2

2

为了删除非字母数字字符,您需要使用“双重翻译”技巧。为简洁起见,我将定义一个全局变量

<xsl:variable name="allowedChars" select="concat('ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                                                 'abcdefghijklmnopqrstuvwxyz',
                                                 '0123456789')" />

现在要删除所有$theString不在$allowedChars可以使用的字符

translate($theString, translate($theString, $allowedChars, ''), '')

它的工作方式是内部translate

translate($theString, $allowedChars, '')

生成一个包含所有不允许的字符的字符串$theString然后外部翻译从原始字符串中删除所有这些字符,只留下有效字符。

substring然后,您可以使用函数将结果截断为 24 个字符。

于 2013-05-24T10:17:39.227 回答
1

假设您的输入中可能包含非字母数字字符,请使用 translate 删除它们,使用 Ian Roberts 的回答中描述的方法

然后像这样使用子字符串以最大长度剪切输入

substring($translated_input, 1, 24)
于 2013-05-24T09:41:54.487 回答