如何在XSLT的列表中转义撇号(')字符?
解决XSLT列表中撇号(')的转义问题
在XSLT里,当用单引号定义字符串时,字符串内部的撇号不能直接书写,必须用两个连续的单引号来转义——这是XSLT的标准规则,反斜杠在这里不生效。
给你两种可行的修正方案:
方案一:转义单引号
把原代码里的'Fruit's 13'改成'Fruit''s 13',用两个单引号替代单个撇号,修正后的完整代码如下:
<xsl:param name="unsorted-values" as="xs:string*" select="'Apple','Banana','Fruit''s 13'"/> <xsl:param name="values" as="xs:string*"> <xsl:perform-sort select="$unsorted-values"> <xsl:sort select="string-length()" order="descending"/> </xsl:perform-sort> </xsl:param>
方案二:改用双引号包裹字符串
如果将select属性的外层引号换成双引号,字符串内部的单引号就无需转义(XML属性用双引号时,内部单引号不会被解析为属性结束符),代码示例:
<xsl:param name="unsorted-values" as="xs:string*" select='"Apple","Banana","Fruit's 13"'"/> <xsl:param name="values" as="xs:string*"> <xsl:perform-sort select="$unsorted-values"> <xsl:sort select="string-length()" order="descending"/> </xsl:perform-sort> </xsl:param>
两种方法都能解决问题,根据个人习惯选择即可。
内容的提问来源于stack exchange,提问作者Adrian
相关产品推荐
相关产品推荐

