2011-03-16 154 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

這裏有兩個約束:XPath的文字字符串不能具有分隔符作爲內容,對於XML屬性的值也是如此。所以,你必須去@ DevNull的[回答](http://stackoverflow.com/questions/5332938/special-character-inside-of-xslt-string/5333150#5333150)或使用XML屬性值標準化在你的青睞in:''。當然,最後一個**可讀性較差** ... – 2011-03-17 02:44:00

回答

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>