web-dev-qa-db-ja.com

xslt concat関数で単一引用符をエスケープする

以下の$ ID変数の前後に一重引用符を出力したいxsl:value-of xsl statment。

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

現在、印刷します

process@Ref=87799989

これを達成する方法を教えてください。

事前に感謝、ケシャブ

47
keshav84

つかいます &apos;

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

編集:より良い解決策については、 ディミトレの答え を参照してください。

29
kennytm

XPath 1.0

組み込みエンティティ&apos;および&quot;を使用できます

XSLT 1.0

または、$Qおよび$APOS変数を定義することもできます(コンテンツ(リテラル "またはリテラル '文字)を、select属性ではなく、xsl:variableの本体に配置します)。

XPath 2.x(これはXSLT 2.xおよびXQuery 1.xも意味します)

隣接する2つのアポストロフィを入力してアポストロフィをエスケープし、隣接する2つの引用符を入力してクォートをエスケープしますXPath 2.0言語で定義されている

41

Dimitreの答えを拡張するには、XSLTでこのソリューションを使用できます。

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

これは私には機能しません。私の解決策は次のとおりです。

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

簡単な例は

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

これにより、タイトルの「任意のテキスト」が「」に置き換えられます。

0
user3392863