XSLT代码仅包含前24个字母数字字符

时间:2013-05-24 08:58:50

标签: xslt

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

我必须只提取前24个字母数字字符。

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

有人可以为我提供xslt代码吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

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

这种方式的工作方式是内部translate

translate($theString, $allowedChars, '')

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

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

答案 1 :(得分:1)

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

然后使用子字符串切割最大长度的输入

substring($translated_input, 1, 24)