Чтобы получить нужную последовательность символов из строки $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()
, мы затем соединяем все такие отдельные строки, используя предоставленный символ соединения "/".
person
Dimitre Novatchev
schedule
06.12.2011