我有以下格式的xml:
<a>
<b>this</b>
<b>is></b>
<b>ok</b>
<b>this</b>
<b>is</b>
<b>not</b>"!.
</a>
所需的输出是:
this
is
ok
this
is
not
"
!
.
我的问题是:一旦我使用text()捕获标签外的标点符号,我会将它们标记为什么?
我正在使用XSLT 2.0,我尝试过使用
tokenize(text(),'.')
但无效。
注意:此问题源自this其他问题。
答案 0 :(得分:2)
您可以在另一个问题@Dimitre Novatchev中使用here建议的string-to-codepoints()
和codepoints-to-string()
功能,例如:
<xsl:template match="b"><xsl:value-of select="."/></xsl:template>
<xsl:template match="a/text()[normalize-space()]">
<xsl:for-each select="string-to-codepoints(normalize-space(.))">
<xsl:text>
</xsl:text>
<xsl:sequence select="codepoints-to-string(.)"/>
</xsl:for-each>
</xsl:template>
<强> Xsltransform Demo
强>
输出
this
is>
ok
this
is
not
"
!
.