2011-09-30 4 views
6

次のコードが失敗しているようです。XSL - xslの間にアポストロフィをエスケープする:テストのとき

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

また、Visual Studioは

を言って "さん見出される発現の期待終わり、"

を不平を言っているどのように私は文字をエスケープすることが出来るのですか?


XSLT v1.0。 Apache XSL-FOプロセッサ

+0

あなたの問題はhttp://stackoverflow.com/questions/646194/xsl-character-escape-problemに関連していませんか?その場合は、試してみてください:& apos; – Dan

+0

@ダン・レーマン - それはうまくいかなかった。私はそれらの問題は同じだとは思わない。 –

+0

回避策として、C#でこの文字を削除してからXSLTプロセッサに渡します。これはすべての状況で機能しないので、私はこの質問を開いたままにします。 –

答えて

8

はるかに簡単な -を使用します。

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

&apos;はXPath 1.0で動作します。あなたは、XPath 2.0とXSLT 2.0を使用している場合は、二重アポストロフィを試してみてください。

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

Dimitre Novatchevによって完全な説明を探し彼の答えでEscape single quote in xslt concat function

+1

これは機能しませんでした。ビジュアルスタジオはまだエラーを表示します。ロジックが正しく実行されません。 –

+0

@_Phillip:はい、同じテクニックを使用することができます。 –

6
  1. 変数を宣言します。

    <xsl:variable name="apos" select='"&apos;"'/> 
    
  2. <xsl:when>句の変数を次のように使用します。

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

+1。 ' ''も使用できます。 – LarsH