2012-12-13 26 views
1

我想翻譯和XML項目以刪除空格&任何特殊字符,並將大寫字母轉換爲小寫,我有點卡住至少可以說!XSLT翻譯刪除特殊字符和更多

理想情況下,我想要一種方法來捕捉所有的特殊字符來撕掉它們,而不是單獨指定它們。我已閱讀白名單上的一些答案,但不知道我在這裏如何實現它。另外要指出的是,我只能使用XSLT 1.0。

在此先感謝! :)

這是我到目前爲止有:

<xsl:template match="faq"> 
<article> 
    <xsl:call-template name="questionMatch"/> 
</article> 
</xsl:template> 
<xsl:template name="questionMatch" match="section"> 
    <xsl:for-each select="section"> 
     <xsl:for-each select="qa"> 
      <div class="toggler" id="{translate(translate(translate(question,'?!£$%^*',''), ' ', ''), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}"> 
      </div> 
     </xsl:for-each> 
    </xsl:for-each> 
</xsl:template> 
+1

我不是一個XSL專家,但發現了一個鏈接,可以幫助你: http://stackoverflow.com/questions/5084065/replace-special-characters- in-xslt – Tirthankar

回答

6

啊哈,找到了!我似乎已經在其他一些主題的幫助下(最終)發現了它。我以爲我會分享答案,因爲它可能會在未來幫助其他人?

答案是:

<xsl:template name="questionMatch" match="section"> 
    <xsl:variable name="vAllowedSymbols" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'"/> 
     <xsl:for-each select="qa"> 
      <div class="toggler" id="{translate(translate(question, translate(question, $vAllowedSymbols, ''), ''), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')}"> 
      </div> 
    </xsl:for-each> 
</xsl:template> 
+7

這確實是一個很有用的技巧。 'translate(question,$ vAllowedSymbols,'')'從'question'的值中刪除所有「允許的」符號,只留下「不允許的」符號。因此,雙翻譯'translate(question,translate(question,$ vAllowedSymbols,''),'')'接受'question'的值,並從中刪除所有的_not_-allowed字符,只剩下允許的字符。 –