2011-03-16 48 views
0

文字列Cmm'lに一重引用符を渡す必要があるため、その文字列の元のxmlファイルを読み取ります。どうすればいいですか?xslt文字列内の特殊文字

<xsl:when test="contains(ct-type/cats, 'Cmml') or contains(ct-type/cats, 'rst')"> 
<xsl:element name="Terms"> 
<xsl:value-of select="'example'"/> 
</xsl:element> 
</xsl:when> 
+0

ここには2つの制約があります。XPathのリテラル文字列は、コンテンツとして区切り文字を持つことはできません。また、XML属性の値に対しても同じことが言えます。ですから、@ DevNullの[answer](http://stackoverflow.com/questions/5332938/special-character-inside-of-xslt-string/5333150#5333150)に行くか、XML属性値の正規化を次のように使用する必要があります。 ''が含まれています。もちろん、最後は**読みにくい**です... –

答えて

0

あなたは属性値の区切り文字としてアポストロフィを使用して、文字列内のエンティティを使用することができます。

<xsl:when test='contains(ct-type/cats, "Cmm&apos;l") or contains(ct-type/cats, "rst")'> 

あなたの場合文字列に引用符とアポストロフィの両方が必要な場合は、たとえば文字列や句読点の変数。

0

変数またはパラメータとして値を渡すことができます。

私はこれを行うより良い方法があると確信していますが、私は今それを考えることはできません。ここで

は、デフォルト値のパラメータとして渡す例です:

<xsl:template match="doc"> 
    <xsl:param name="cat_type_1"> 
     <xsl:text>Cmm'l</xsl:text> 
    </xsl:param> 
    <xsl:param name="cat_type_2"> 
     <xsl:text>rst</xsl:text> 
    </xsl:param> 
    <xsl:if test="contains(ct-type/cats, $cat_type_1) or contains(ct-type/cats, $cat_type_2)"> 
     <Terms>Example</Terms> 
    </xsl:if> 
    </xsl:template>