math.constant.function.xsl 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet version="1.0"
  3. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4. xmlns:math="http://exslt.org/math"
  5. xmlns:exsl="http://exslt.org/functions"
  6. extension-element-prefixes="exsl"
  7. exclude-result-prefixes="math">
  8. <exsl:function name="math:constant">
  9. <xsl:param name="name" select="/.." />
  10. <xsl:param name="precision" select="/.." />
  11. <xsl:choose>
  12. <xsl:when test="$name='PI'">
  13. <xsl:variable name="return">3.1415926535897932384626433832795028841971693993751</xsl:variable>
  14. <exsl:result select="number(substring($return,1,$precision))"/>
  15. </xsl:when>
  16. <xsl:when test="$name='E'">
  17. <xsl:variable name="return">2.71828182845904523536028747135266249775724709369996</xsl:variable>
  18. <exsl:result select="number(substring($return,1,$precision))"/>
  19. </xsl:when>
  20. <xsl:when test="$name='SQRRT2'">
  21. <xsl:variable name="return">1.41421356237309504880168872420969807856967187537694</xsl:variable>
  22. <exsl:result select="number(substring($return,1,$precision))"/>
  23. </xsl:when>
  24. <xsl:when test="$name='LN2'">
  25. <xsl:variable name="return">0.69314718055994530941723212145817656807550013436025</xsl:variable>
  26. <exsl:result select="number(substring($return,1,$precision))"/>
  27. </xsl:when>
  28. <xsl:when test="$name='LN10'">
  29. <xsl:variable name="return">2.302585092994046</xsl:variable>
  30. <exsl:result select="number(substring($return,1,$precision))"/>
  31. </xsl:when>
  32. <xsl:when test="$name='LOG2E'">
  33. <xsl:variable name="return">1.4426950408889633</xsl:variable>
  34. <exsl:result select="number(substring($return,1,$precision))"/>
  35. </xsl:when>
  36. <xsl:when test="$name='SQRT1_2'">
  37. <xsl:variable name="return">0.7071067811865476</xsl:variable>
  38. <exsl:result select="number(substring($return,1,$precision))"/>
  39. </xsl:when>
  40. </xsl:choose>
  41. </exsl:function>
  42. </xsl:stylesheet>