XSLT / XML:将撇号转换为空格

时间:2012-03-15 09:45:22

标签: xml xslt

XSLT / XML:将撇号转换为空格

我的XML

<Name>KUEN'S INTERNATIONAL</Name>

使用XSL需要转换到

<Name>KUENS INTERNATIONAL</Name>

在我的xsl中,我有一个模板,我用空格替换一些特殊字符。

我需要从字符串中替换'撇号,这会引发错误。

我甚至研究过与该问题相关的一些答案,有些人尝试使用2.0版,但我在1.0工作

你能告诉我这些特殊字符的工作原理吗?&gt; &LT;&GT;&安培;者; 如何将'撇号转换为空格

<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 个答案:

答案 0 :(得分: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>
相关问题