2017-04-10 8 views
1

xalan javaを使用していますが、xsltでsin()とcos()を計算する必要があります。ここに私の例では、xsltで三角関数sinとcosを計算する方法

<?xml version="1.0"?> 
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:math ="http://www.w3.org/2005/xpath-functions/math" 
     extension-element-prefixes="math"> 
     version="1.0"> 
     <xsl:output method="xml" indent="yes"/> 
     <xsl:template match = "root/module[start-with(@name, phase)]"> 
      <xsl:variable name ="k" select ="0.0"=/> 
      <xsl:variable name = "angle" select ="math:cos(k)"/> 
      <theta x = "$angle"> 
      </theta> 
     </xsl:template> 
    </xsl:stylesheet> 

NOTEです:これは私が試した、失敗した、あなたがXSLTで三角関数を計算する方法の例を提供してくださいすることができ、単に例示的な方法です。ありがとうございます

+0

さて、Saxon 9(MavenまたはSourceforgeで利用可能)のようなXSLTプロセッサを使用して、Xalanに頼るのではなく、これらの関数をサポートしています。これは1999年以降のバージョン1.0以降のXSLT/XPathの開発をサポートするようには更新されていません。 XSLT 2.0とXPath 3.0をサポートし、近い将来Saxon 9.8ではXSLT 3.0とXPath 3.1のサポートを受ける予定です。 –

+0

@MartinHonnen xsltで三角関数計算の例を教えてください – Mudasir

+0

Xalanを使用している場合、http://exslt.org/math/functions/sin/index.htmlとhttp:// exsltを使用できます。 org/math/functions/cos/index.htmlにあります。 –

答えて

1

Saxon 9.6以降を使用してください。

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" 
    xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="math"> 

    <xsl:template match="/"> 
     <result> 
      <xsl:value-of select="math:sin(math:pi() div 2)"/> 
     </result> 
    </xsl:template> 

</xsl:transform> 

は正常に動作するはずです。

+0

Xalanは三角関数をサポートしていませんか?ありがとうございます。 – Mudasir

+0

@Muddassir Xalanは三角関数を拡張子としてサポートしています(すでに10分以上前に話しましたが)。 –

+0

@ michael.hor257k:上記の例のエラーは(java.lang.NoSuchMethodException:拡張機能fuctionのために、メソッドorg.apache.xml.utils.NodeVector.cos([ExpressionContext、])が見つかりませんでした。このエラーが発生しました。 – Mudasir

関連する問題