XSLT 用两个单引号替换单引号

XSLT replace single quotation sign with two single quotation signs

我正在编写 XSLT 代码来解析来自 XML 的数据。一个元素的值包含我需要转义的单引号。 我试图做这样的事情:

<xsl:variable name="text"><xsl:value-of select='desc_text'/></xsl:variable>
<xsl:value-of select="replace($text, '&apos;', '&apos;&apos;')"/>

但是我得到一个错误: xsl:value-of : 无法编译 select 表达式 'replace($text, ''', '''')'

使用 <xsl:value-of select="replace($text, &quot;'&quot;, &quot;''&quot;)"/>,在 XPath 2.0 及更高版本中您也可以使用(参见 https://www.w3.org/TR/xpath-31/#prod-xpath31-StringLiteral<xsl:value-of select="replace($text, '''', '''''')"/>.

如果你切换分隔符,它会更简单(也更容易阅读):

<xsl:value-of select='replace($text, "&apos;", "&apos;&apos;")'/>

P.S.

而不是:

<xsl:variable name="text"><xsl:value-of select='desc_text'/></xsl:variable>

做:

<xsl:variable name="text" select="desc_text"/>

演示:http://xsltransform.net/bEzjRK9