Это true()
точно, когда строка $s
может использоваться как число :
number($s) = number($s)
Это true()
точно, когда строка $s
состоит только из латинских символов :
string-length(translate($s, $alpha, '')) = 0
где $ alpha - строка, содержащая все строчные и прописные буквы.
Это верно, если строка $s
содержит хотя бы одну букву или цифру :
not(string-length(translate($s, $alphaNum, '')) = string-length($s))
где $ alphaNum - строка, содержащая все строчные и прописные буквы и все цифры.
В XPath 2.0 (XSLT 2.0) можно использовать регулярные выражения и классы символов .
Обновление : Из комментариев ОП видно, что он на самом деле хочет проверить, содержит ли строка буквы или цифр.
Вторым новым требованием является сохранение в переменной некоторой части строки в каждом случае. Тем не менее, это требование не определено вообще, а лишь в двух противоречивых примерах, приведенных в комментариях ФП.