这里是XSL中的一段代码,它将文本标记为由函数间和类似字符分隔的片段。我想询问是否有以某种方式捕捉该文本被标记化的字符串的可能性,例如逗号或点等XSLT标记化 - 捕获分隔符
<xsl:stylesheet version="2.0" exclude-result-prefixes="xs xdt err fn" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:err="http://www.w3.org/2005/xqt-errors" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="GENERUJ">
<TEXT>
<xsl:variable name="text">
<xsl:value-of select="normalize-space(unparsed-text(@filename, 'UTF-8'))" disable-output-escaping="yes"/>
</xsl:variable>
<xsl:for-each select="tokenize($text, '(\s+("|\(|\[|\{))|(("|,|;|:|\s\-|\)|\]|\})\s+)|((\.|\?|!|;)"?\s*)')">
<xsl:choose>
<xsl:when test="string-length(.)>0">
<FRAGMENT>
<CONTENT>
<xsl:value-of select="."/>
</CONTENT>
<LENGTH>
<xsl:value-of select="string-length(.)"/>
</LENGTH>
</FRAGMENT>
</xsl:when>
<xsl:otherwise>
<FRAGMENT_COUNT>
<xsl:value-of select="last()-1"/>
</FRAGMENT_COUNT>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</TEXT>
</xsl:template>
正如你所看到的构建标签内容长度,如果你知道我的意思,我想添加一个名为SEPARATOR的选项。我无法在互联网上找到任何答案,我只是一个xsl转换的初学者,所以我正在寻找一个快速解决方案。先谢谢你。
你能否包括一些简化的样本输入和期望的输出?就目前来看,你的问题还不够清楚。 – 2012-04-26 05:11:08
一般观点:不要使用 xsl:variable>'。改用' '。它不仅更简洁,而且更高效。 –
2012-04-26 08:19:18
嗯..如果它有助于输入(变量“文本”)将形成一个文本文件'Blah等等等等,等等等等'和期望的输出像'等等等等等等 ''''等等......和迈克尔,我试着用你的建议,但是如果你向左滚动,有一个'disable-output-escaping =“yes”'属性,它给出我错误的时候,我把它放到'xsl:variable'标签 –
2012-04-26 11:23:13