使用XSLT value-of生成SOAP服务时如何转义XML特殊字符?
解决SOAP WebService中用户输入特殊字符的转义问题
核心结论
XSLT的<xsl:value-of>在输出XML元素内容时,会自动转义XML预定义特殊字符(&、<、>、"、'),无需手动处理。你遇到的&amp;这类双重转义问题,大概率是额外手动转义导致的。
具体说明
默认转义行为
当XSLT输出方法为xml(默认)或SOAP专用输出方法(soap1.1/soap1.2)时,<xsl:value-of>会自动将用户输入的特殊字符转换为对应的XML实体:&→&<→<>→>"→"'→&apos;
避免双重转义
不要手动用字符串替换函数(如replace())处理这些特殊字符,否则会出现双重转义(例如用户输入&,手动转成&后,XSLT再转一次就变成&amp;,这就是你示例中错误的来源)。正确的XSL代码示例
你原本的代码本身是正确的,只要确保输出方法符合XML/SOAP规范即可:<CreateTask> <taskDetails>comments$<xsl:value-of select="//dform:field[dform:name='comments']/dform:value" />#</taskDetails> </CreateTask>换行符处理
示例中的
是回车符的XML实体,用户输入的换行(\r/\n)会被XSLT保留为实体或原始字符,若需统一格式,可结合normalize-space()或<xsl:preserve-space>标签调整,具体取决于业务需求。
内容的提问来源于stack exchange,提问作者user1541219
相关产品推荐
相关产品推荐

