Я создал минимальный пример, который дает то, что вы хотите:
fun <T: Any> test(t: T?): T {
// ...
return t as T
}
Вы определяете верхнюю границу Any
для T
, поэтому она не может быть null
. Для параметра t
вы используете тип T?
. В конце концов вы возвращаете t
в касте T
.
Примеры:
val a: String = test("Hello")
val b: String = test(null)
Это - на самом деле необработанный XML парсинг проблемы, не чего-то, с чем XSLT может помочь Вам. Синтаксический анализ XML должен преобразовать новые строки в том значении атрибута к пробелам согласно ‘3.3.3 Нормализации Значения атрибута’ в стандарте XML. Так что-либо в настоящее время чтение Ваших атрибутов описания и удержание новых строк делают его неправильно.
Вы можете восстанавливать новые строки путем предварительной обработки XML для выхода из новых строк к и № 10; символьные ссылки, пока Вы также не получили новые строки, где charrefs запрещены, такой как в телах тега. Charrefs должен выжить как управляющие символы до значения атрибута, где можно затем превратить их в текстовые узлы.
Как другие указали, спецификация XML не допускает сохранение пробелов в атрибутах. На самом деле это - один из нескольких дифференциаторов между тем, что можно сделать с атрибутами и элементами (другой основной, являющийся этим, элементы могут содержать другие теги, в то время как атрибуты не могут).
Необходимо будет обработать файл за пределами XML сначала для сохранения пробелов.
Согласно Аннотируемой Спецификации XML, пробел в значениях атрибута нормализован процессором XML (См. (T) аннотацию на 3.3.3). Так, похоже, что ответ, вероятно, нет.