在xslt concat函数中转义单引号
我想在下面的xsl:value-of xsl statment中输出$ IDvariables的单引号。
<xsl:value-of select="concat('process[@Ref=',$ID,']')"></xsl:value-of>
目前它打印
process@Ref=87799989
请让我知道我怎么能做到这一点。
在此先感谢,克沙夫
使用'
?
<xsl:value-of select="concat('process[@Ref='',$ID,'']')"></xsl:value-of>
编辑:看到Dimitre的答案更好的解决scheme。
在XPath 1.0中 :
您可以使用内置实体的'
和"
在XSLT 1.0中 :
或者,您可以定义您的$Q
和$APOS
variables(将内容(文字“或文字”字符)放在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='',$ID,'']')"></xsl:value-of>
这对我不起作用。 我的解决scheme是:
<xsl:value-of select="concat("process[@Ref='",$oidConstant,"'")"></xsl:value-of>
简单的例子是
<xsl:variable name="varTitle" select="title" /> <xsl:variable name="APOS">'</xsl:variable> <xsl:value-of select="translate($varTitle, 'any text', $APOS)"/>
这将取代我的标题中的“任何文字”。