web-dev-qa-db-fra.com

Escape single quote in xslt concat function

Je veux sortir un guillemet simple autour de la variable $ ID dans le --- xsl: value-of xsl statment.

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

actuellement il imprime

process@Ref=87799989

Veuillez me faire savoir comment puis-je y parvenir.

Merci d'avance, Keshav

47
keshav84

Utilisation &apos;?

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

Edit: Voir réponse de Dimitre pour une meilleure solution.

29
kennytm

Dans XPath 1.0 :

Vous pouvez utiliser les entités intégrées &apos; et &quot;

Dans XSLT 1.0 :

Vous pouvez également définir votre $Q et $APOS variables (mettez le contenu (le littéral "ou le littéral 'caractère) dans le corps du xsl:variable, pas dans l'attribut select).

Dans XPath 2.x (cela signifie également XSLT 2.x et XQuery 1.x)

Échappez simplement à une apostrophe en entrant deux apostrophes adjacentes, échappez à une citation en entrant deux guillemets adjacents, tel que défini par le langage XPath 2.

41

Pour développer la réponse de Dimitre, vous pouvez utiliser cette solution en 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>

ça ne marche pas pour moi. Ma solution est:

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

Un exemple simple serait

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

Cela remplacera "tout texte" par "dans mon titre.

0
user3392863