Чтобы получить нужную последовательность символов из строки $str
, используйте пару функций string-to-code-points()
и codepoints-to-string()
:
for $c in string-to-codepoints($str)
return
codepoints-to-string($c)
Чтобы соединить эту последовательность символов с '/' в качестве строки соединения, просто примените string-join()
к вышеприведенному выражению.
Вот полный пример кода :
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:sequence select=
"string-join(
for $c in string-to-codepoints('ABC')
return
codepoints-to-string($c),
'/'
)
"/>
</xsl:template>
</xsl:stylesheet>
создает требуемую последовательность символов :
A/B/C
Объяснение
string-to-codepoints($str)
создает последовательность кодовых точек (представьте их как «коды символов»), представляющих каждый символ строки.
Например ;
string-to-codepoints('ABC')
производит последовательность :
65 66 67
codepoints-to-string($code-seq)
является обратной функцией string-to-codepoints()
. Учитывая последовательность кодовых точек, она создает строку, символы которой представлены кодовыми точками в последовательности. Таким образом:
codepoints-to-string((65,66,67))
выдает строку:
ABC
Следовательно:
for $c in string-to-codepoints($str)
return
codepoints-to-string($c)
получает кодовую точку каждого отдельного символа в $str
и преобразовывает ее в отдельную строку.
Используя string-join()
, мы затем соединяем все такие отдельные строки, используя предоставленный символ соединения "/".