2012-03-15 73 views
0

XSLT/XML:转换撇号的空间XSLT/XML:转换撇号的空间

我的XML

<Name>KUEN'S INTERNATIONAL</Name> 

使用XSL需要转换为

<Name>KUENS INTERNATIONAL</Name> 

在我的XSL我有一个模板,在这里我将一些特殊字符替换为空格, 现在我需要从字符串中删除'撇号,这会抛出错误。

我甚看着一些与该问题相关的答案,一些人试图用2.0的版本,但我在1.0 wrking你能告诉我这些特殊cahracters如何工作 - > < > &者; 如何转换'撇号太空

在此先感谢

<xsl:template name="stripSpecialChars"> 
    <xsl:param name="string" />  
    <xsl:value-of select="translate($string,'()*%$#@!~&lt;&gt;&amp;apos;,.?[]=-+/\',' ')"/> 
</xsl:template> 


<xsl:text><![CDATA[<NAME>]]></xsl:text>       
    <xsl:call-template name="stripSpecialChars"> 
     <xsl:with-param name="string" select="/Name"/> 
    </xsl:call-template> 
<xsl:text><![CDATA[</NAME>]]></xsl:text> 
+1

'由XSLT解释为'和&';被解释为' – 2012-03-15 09:55:45

回答

2

使用另一个变量:

<xsl:template name="stripSpecialChars"> 
    <xsl:param name="string"/> 
    <xsl:variable name="stopset" select='"()*%$#@!~&lt;&gt;&apos;,.?[]=-+/\"'/> 
    <xsl:value-of select="translate($string, $stopset, ' ')"/> 
</xsl:template> 

一个行版本

<xsl:template name="stripSpecialChars"> 
    <xsl:param name="string"/> 
    <xsl:value-of select='translate($string, "()*%$#@!~&lt;&gt;&apos;,.?[]=-+/\", " ")'/> 
</xsl:template> 
+0

或者另一个参数,那么它是可定制的... +1 – Boldewyn 2012-03-15 10:04:20

+0

谢谢!!!!!!!!!!!!但有一个疑问,为什么我们需要添加另一个变量?我们可以把它放在同一行吗?为什么它不能在那里工作? – 2012-03-15 10:15:33

+0

@VigneshLakshmanan:它也可以使用一行代码,诀窍是使用select ='...',然后将封闭的字符串放在双引号中,请参阅编辑 – hroptatyr 2012-03-15 10:19:48