2009-08-10 16 views
2

不必要に紛らわしいので、細部を惜しみません。私はXSLT 1.0を使用してXSLドキュメントを生成しています。変数をリテラル文字列と比較しようとしています。その文字列には引用符とアポストロフィが含まれている可能性があります。XPathでアポストロフィと引用符の両方を含む文字列を表す方法は?

簡潔にするために、このリテラルが2つの文字で構成されているとしましょう。引用符の後にアポストロフィが続きます。実際には、それはどんなテキストでもかまいません。これを行う簡単な方法はありますか?

<xsl:if test="$var = concat('&quot;', &quot;'&quot;)"> 

これ以上ですか?

<xsl:variable name="str">"'</xsl:variable> 
<xsl:if test="$var = $str"> 

、私はXPath's specsをチェックして、次は、必要に応じてない動作しますので、文字をエスケープする方法があるようには思えない。

<xsl:if test="$var = '&quot;&amp;apos;'"> 

ありがとう!

答えて

2

です。 XPath 2.0では、倍精度化によって両方の種類の引用符をエスケープできます。

+0

残念ながら私はXPath 1.0(私はそれを言及するために私の質問を編集したばかりです)に言及するのを忘れましたが、私の人生がXSLT 2.0/XPath 2.0でいかに簡単だろうと思い出してくれてありがとう... –

+0

まともなXSLT 2.0実装が特に.NETのために現れ始めるなら、本当に素晴らしいものになるでしょう。私はこれらの問題にも常に取り組んでいます。 –

+0

ディストリビューションで25MbのIKVMが肥大化しても大丈夫なら、Saxon.NETはかなりいいです... –

1

& quot;& amp;&(!)apos; - よく見えますが、何を得たいですか?

とにかく:私はXSLT上でJavascriptを作成するアプリケーションを書いています。 & quot;の膨大な数の 同じ問題、...我々は2つの方法で解決:

  1. は、グローバルxsl:param$qを宣言 - & quot;
  2. 使用よりも短く見える 'translate' XPath関数、仮定'!'を作る - です& quot;#は、XPath 1.0できちんとそれを行うための方法はありません& amp; ...
関連する問題