XSLT的tokenize函数在对句点字符进行标记时无法正常工作。'
-
以下是我对逗号字符进行标记时会发生什么的示例:
XML文件:
<value>a,b,c</value>
XSLT文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<firsttoken><xsl:value-of select="tokenize(/value,',')[1]" /></firsttoken>
</xsl:template>
</xsl:stylesheet>
输出:
<firsttoken>a</firsttoken>
-
以下是相同的示例,但在句点字符上进行标记:
XML文件:
<value>a.b.c</value>
XSLT文件:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<firsttoken><xsl:value-of select="tokenize(/value,'.')[1]" /></firsttoken>
</xsl:template>
</xsl:stylesheet>
输出:
<firsttoken/>
-
我无法解释为什么它适用于逗号但不适用于句号。
答案 0 :(得分:6)
.
是XSLT(上下文节点的简写)和正则表达式(任何字母数字字符)中的特殊字符。
如果你想匹配文字“。”你需要在前面用反斜杠来逃避它。
我无法解释为什么它适用于逗号但不适用于句号。
标记化确实适用于句点。只是.
首先不被解释为句号。
<强>样式表强>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<firsttoken><xsl:value-of select="tokenize(/value,'\.')[1]" /></firsttoken>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<?xml version="1.0" encoding="UTF-8"?><firsttoken>a</firsttoken>