使用XSLT 1.0,在下面的XLST模板中,我想将单引号和双引号添加到允许值列表中。 vAllowedSymbols2出现错误,提示“字符串文字未关闭”。
<xsl:template name="CleanAlphaField">
<xsl:param name="inputText" />
<xsl:param name="maxLength" />
<xsl:variable name="vAllowedSymbols2" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !@$%()+-_,.;:=[]{}\?"''"/>
<xsl:variable name="vAllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !@$%()+-_,.;:=[]{}\?'"/>
<xsl:variable name="truncatedInputText" select="substring($inputText,1,$maxLength)" />
<!-- return the revised string -->
<xsl:value-of select="translate($truncatedInputText,translate($truncatedInputText, $vAllowedSymbols, ''),'')"/>
</xsl:template>
答案 0 :(得分:1)
出于XML转义的原因,您可能需要将它们创建为单独的变量。
<xsl:variable name="singleQuote" select='"'"' />
<xsl:variable name="doubleQuote" select="'"'" />
完成此操作后,您可以concat一起使用
<xsl:variable name="vAllowedSymbols2"
select="concat($vAllowedSymbols, $singleQuote, $doubleQuote)" />
之所以发生这种情况,是因为XML实体扩展发生在事物到达XSLT处理器之前,因此在最小的情况下
<xsl:variable name="invalid" select="'''" />
@select的值被扩展,XSLT引擎看到一个属性(名称= {{}select
,值= '''
),并且不知道它来自实体扩展。它只知道三个单引号不能构成有效的XPath表达式。
答案 1 :(得分:1)
您可以简单地做:
<xsl:variable name="vAllowedSymbols2">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !@$%()+-_,.;:=[]{}\?"'</xsl:variable>