我想用文字
替换'。\ s + \ w +'序列这就是我所拥有的:
<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','<br/>')" />
以下是我的错误:
文件第33行第57行出错:/Users/seth/Documents/EmausCCB/XSL/form_list.xsl: SXXP0003:XML解析器报告的错误:与“a”关联的属性“select”的值 元素类型“null”不得包含'&lt;'字符。 无法编译样式表。检测到1个错误。
如果我这样做:
<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','br')" />
我得到了预期的结果
答案 0 :(得分:1)
如果你想创建一个br
结果元素,你不能使用replace
函数,因为它返回一个字符串而不是元素。
使用analyze-string
代替,例如
<xsl:analyze-string select="$fesc" regex="[.][ ]+\w+">
<xsl:matching-substring>
<br/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
至于XML解析错误,正确的语法是<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','<br/>')" />
,但仍会返回字符串而不是元素节点。