在xslt concat函数中转义单引号

我想在下面的xsl:value-of xsl statment中输出$ IDvariables的单引号。

<xsl:value-of select="concat('process[@Ref=',$ID,']')"></xsl:value-of> 

目前它打印

 process@Ref=87799989 

请让我知道我怎么能做到这一点。

在此先感谢,克沙夫

使用&apos;

 <xsl:value-of select="concat('process[@Ref=&apos;',$ID,'&apos;]')"></xsl:value-of> 

编辑:看到Dimitre的答案更好的解决scheme。

在XPath 1.0中

您可以使用内置实体的&apos;&quot;

在XSLT 1.0中

或者,您可以定义您的$Q$APOSvariables(将内容(文字“或文字”字符)放在xsl:variable的主体中,而不是在select属性中)。

在XPath 2.x中 (这也意味着XSLT 2.x和XQuery 1.x)

通过input两个相邻的撇号简单地转义撇号,通过input两个相邻的引号( 按照XPath 2.0语言定义)

要扩展Dimitre的答案,可以在XSLT中使用此解决scheme:

 <xsl:variable name="apos">'</xsl:variable> <xsl:value-of select="concat('process[@Ref=',$apos,$ID,$apos,']')"></xsl:value-of> 
 <xsl:value-of select="concat('process[@Ref=&apos;',$ID,'&apos;]')"></xsl:value-of> 

这对我不起作用。 我的解决scheme是:

 <xsl:value-of select="concat(&quot;process[@Ref='&quot;,$oidConstant,&quot;'&quot;)"></xsl:value-of> 

简单的例子是

  <xsl:variable name="varTitle" select="title" /> <xsl:variable name="APOS">'</xsl:variable> <xsl:value-of select="translate($varTitle, 'any text', $APOS)"/> 

这将取代我的标题中的“任何文字”。