1

入力が 24 文字を超える英数字の場合、XSLT コードを作成する必要があります。

最初の 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

入力に英数字以外の文字が含まれている可能性があると仮定すると、 Ian Roberts の回答で説明されている方法を使用して、変換を使用してそれらを削除します

そして、そのように部分文字列で最大長で入力をカットします

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