2011-09-30 13 views
6

Tengo el siguiente código que parece estar fallando.XSL - Escapar un apóstrofo durante xsl: cuando prueba

<xsl:when test="$trialSiteName = 'Physician&apos;s Office'"> 

Además, Visual Studio se queja diciendo

"esperaba final de la expresión, se encontró 's"

¿Cómo se supone que voy a escapar del personaje?


XSLT v1.0. Procesador Apache XSL-FO.

+0

podría su problema estar relacionado con http://stackoverflow.com/questions/646194/xsl-character-escape-problem? Si es así, intente: & apos; – Dan

+0

@Dan Lehmann - Eso no funcionó. No creo que esos problemas sean los mismos. –

+0

Como solución alternativa, voy a eliminar este carácter en C# antes de pasarlo al procesador XSLT. Esto no funcionará para todas las situaciones, así que dejaré esta pregunta abierta. –

Respuesta

8

Mucho más sencilla - utilizar:

<xsl:when test="$trialSiteName = &quot;Physician&apos;s Office&quot;"> 
1

&apos; funciona para XPath 1.0. Si está utilizando XSLT 2.0 con XPath 2.0 tratan doble apóstrofe:

<xsl:when test="$trialSiteName = 'Physician''s Office'"> 

Look para una explicación completa por Dimitre Novatchev en su respuesta Escape single quote in xslt concat function

+1

Esto no funcionó. Visual Studio aún muestra error. La lógica no se ejecuta correctamente. –

+0

@_Phillip: Sí, * es * posible utilizar la misma técnica :) –

6
  1. declara una variable:

    <xsl:variable name="apos" select='"&apos;"'/> 
    
  2. Utilice la variable de esta manera en la cláusula <xsl:when>:

    <xsl:when test="$trialSiteName = concat('Physician', $apos, 's Office')"> 
    
+3

+1. También puede usar ' ''. – LarsH