我必须构建一个XSLT代码,如果输入超过24个字母数字字符。
我必须只提取前24个字母数字字符。
此外,如果输入少于24个字符,则必须提取相同的
有人可以为我提供xslt代码吗?
答案 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)