我必须构建一个 XSLT 代码,如果输入超过 24 个字母数字字符。
我只需要提取前 24 个字母数字字符。
此外,如果输入少于 24 个字符,则必须提取相同的字符
谁能给我这个xslt代码?
我必须构建一个 XSLT 代码,如果输入超过 24 个字母数字字符。
我只需要提取前 24 个字母数字字符。
此外,如果输入少于 24 个字符,则必须提取相同的字符
谁能给我这个xslt代码?
为了删除非字母数字字符,您需要使用“双重翻译”技巧。为简洁起见,我将定义一个全局变量
<xsl:variable name="allowedChars" select="concat('ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz',
'0123456789')" />
现在要删除所有$theString
不在你$allowedChars
可以使用的字符
translate($theString, translate($theString, $allowedChars, ''), '')
它的工作方式是内部translate
translate($theString, $allowedChars, '')
生成一个包含所有不允许的字符的字符串$theString
,然后外部翻译从原始字符串中删除所有这些字符,只留下有效字符。
substring
然后,您可以使用函数将结果截断为 24 个字符。
假设您的输入中可能包含非字母数字字符,请使用 translate 删除它们,使用 Ian Roberts 的回答中描述的方法
然后像这样使用子字符串以最大长度剪切输入
substring($translated_input, 1, 24)