2012-03-15 57 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