xslt字符串中的特殊字符
问题描述:
需要能够在字符串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>
答
您可以使用单引号时,属性值的分隔符,然后使用实体里面的字符串:
<xsl:when test='contains(ct-type/cats, "Cmm'l") or contains(ct-type/cats, "rst")'>
如果您在字符串中需要引号和撇号,那么你可以使用例如字符串或标点符号的变量。
答
您可以将该值作为变量或参数传递。
我确定有更好的方法来做到这一点,但现在我想不起来。
这里是将它作为默认值的参数的例子:
<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>
这里有两个约束:XPath的文字字符串不能具有分隔符作为内容,对于XML属性的值也是如此。所以,你必须去@ DevNull的[回答](http://*.com/questions/5332938/special-character-inside-of-xslt-string/5333150#5333150)或使用XML属性值标准化在你的青睐in:''。当然,最后一个**可读性较差** ... –
2011-03-17 02:44:00