1

我想用文字替换 '.\s+\w+' 序列

这是我所拥有的:

<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','<br/>')" />

这是我得到的错误:

文件的第 33 行第 57 列出错:/Users/seth/Documents/EmausCCB/XSL/form_list.xsl:SXXP0003:XML 解析器报告的错误:与元素类型“null”关联的属性“select”的值不得包含'<' 字符。无法编译样式表。检测到 1 个错误。

如果我做 :

<xsl:value-of select="replace($fdesc,'[.][ ]+\w+','br')" />

我得到了预期的结果

4

1 回答 1

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+','&lt;br/&gt;')" />,但仍会返回字符串而不是元素节点。

于 2013-09-06T09:12:14.400 回答