我对一些包含引号的入站消息有特定的问题(例如)斯海尔托亨博斯 我需要转义第一个单引号,因为我无法在数据库中注入(inject)整个节点集..谁能告诉我解决方案我怎么能忽略那个引号?..或者简要地说我怎么能动态地转义不必要的引号除第一条和最后一条外的所有入站消息。
我尝试使用 translate($InboundMessage, ' "', "(blankspace)") 并且效果很好,但是它删除了所有引号..我需要保留第一个和最后一个..例如我的入站消息是
'去年我访问了's-Hertogenbosch'..那个单引号会造成伤害,因为在输出中我得到的'去年我访问过'没有城市名称。
解决方案?
问候。
请您参考如下方法:
试试这个表达......
<xsl:value-of select='replace($InboundMessage, "(.)'+(.)", "$1$2")'/>
或者,如果你想用双引号来做......
<xsl:value-of select="replace($InboundMessage, '(.)"+(.)', '$1$2')"/>
编辑:如果你只能使用 XSLT1.0 和 XPATH 1.0,那么你必须做一些字符串操作
<xsl:value-of select='concat(substring($InboundMessage, 1, 1), translate(substring($InboundMessage, 2, string-length($InboundMessage) - 2), "'", ""), substring($InboundMessage, string-length($InboundMessage)))'/>
或者,鉴于您对构建 SQL 的评论,您可以替换所有撇号,并将外部撇号放回您构建的 SQL 字符串中
<xsl:value-of select='concat("INSERT INTO ", $Destination, " (", $Column, ") VALUES ('", translate($InboundMessage, "'", ""), "')")'/>

