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