2011-09-30 19 views
6

Ho il seguente codice che sembra fallire.XSL - Escaping di un apostrofo durante xsl: durante il test

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

Inoltre, Visual Studio si lamenta dicendo

"Prevista fine di espressione, ha trovato s'"

Come faccio a sfuggire al personaggio?


XSLT v1.0. Processore Apache XSL-FO.

+0

Potrebbe essere il problema legato alla http://stackoverflow.com/questions/646194/xsl-character-escape-problem? Se è così, prova: & apos; – Dan

+0

@Dan Lehmann - Non ha funzionato. Non penso che quei problemi siano gli stessi. –

+0

Come soluzione temporanea, ho intenzione di rimuovere questo carattere in C# prima di passarlo nel processore XSLT. Questo non funzionerà per tutte le situazioni, quindi lascerò aperta questa domanda. –

risposta

8

Molto più semplice - utilizzare:

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

&apos; funziona per XPath 1.0. Se si sta utilizzando XSLT 2.0 con XPath 2.0 provare doppio apostrofo:

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

Cercare una spiegazione completa da Dimitre Novatchev nella sua risposta Escape single quote in xslt concat function

+1

Questo non ha funzionato. Visual Studio mostra ancora errori. La logica non viene eseguita correttamente. –

+0

@_Phillip: Sì, * è * possibile utilizzare la stessa tecnica :) –

6
  1. dichiarare una variabile:

    <xsl:variable name="apos" select='"&apos;"'/> 
    
  2. Utilizzare la variabile in questo modo nella clausola <xsl:when>:

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

+1. Puoi anche usare ' ''. – LarsH