jstext.xsl 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <!--
  2. This file is part of the DITA Open Toolkit project.
  3. Copyright 2007 Shawn McKenzie
  4. See the accompanying LICENSE file for applicable license.
  5. -->
  6. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  7. <!-- this template will stip out funky chars used for js variable names -->
  8. <xsl:template name="stripstring">
  9. <xsl:param name="jsvarstring"/>
  10. <!-- this should simply strip strange characters from the param so it can
  11. be used as a JavaScript variable name -->
  12. <!-- can't use the following chars in xsl, so make vars -->
  13. <xsl:variable name="apos">'</xsl:variable>
  14. <xsl:variable name="comma">,</xsl:variable>
  15. <xsl:variable name="colon">:</xsl:variable>
  16. <xsl:variable name="gt">&gt;</xsl:variable>
  17. <xsl:variable name="lt">&lt;</xsl:variable>
  18. <xsl:value-of select="translate(translate(translate(translate(translate(translate($jsvarstring,
  19. '/\^&amp;|\¬`*.-) (%?$£!+=1234567890[]{}',
  20. ''), $apos, ''), $comma, ''), $colon, ''), $gt, ''), $lt, '')"/>
  21. <!-- above does not catch , ' or : -->
  22. <!-- <xsl:variable name="self"
  23. select="translate(translate(translate(@navtitle, '/', ''), '.', ''), ' ', '')"/>-->
  24. </xsl:template>
  25. <xsl:template name="escapestring">
  26. <xsl:param name="jstextstring"/>
  27. <!-- this might need recursion. I'll need to escape chars in the output
  28. so that these symbols , : ' (others?) look like \, \: \'
  29. I might need recursion because there may be multiple instances of
  30. these chars.-->
  31. <!-- can't use the following chars in xsl, so make vars -->
  32. <xsl:variable name="apos">'</xsl:variable>
  33. <xsl:variable name="jsapos">\'</xsl:variable>
  34. <xsl:variable name="comma">,</xsl:variable>
  35. <xsl:variable name="jscomma">\,</xsl:variable>
  36. <xsl:variable name="colon">:</xsl:variable>
  37. <xsl:variable name="jscolon">\:</xsl:variable>
  38. <!-- use the strip for testing and escape later -->
  39. <xsl:value-of select="translate(translate(translate($jstextstring, '/\^&amp;|\¬`*?.-) (%$£!+=', ''),
  40. $apos, ''), $comma, '')"/>/>
  41. </xsl:template>
  42. </xsl:stylesheet>