2011-07-20 21 views
0

私はjs関数にXSL変数を渡して、それを文字列と連結しようとしていますが、動作しません。XSL変数をJavaScript文字列と連結できませんか?

<msxsl:script language="JavaScript" implements-prefix="js"> 
<![CDATA[ 
    function printString1(str) 
    { 
    str2 = 'hello' + str; 
    return str2; 
    } 
]]> 
</msxsl:script> 

そして、これは私がメソッドを呼び出す方法です:

これは私が試したものです

<xsl:value-of select="js:printString1(s:somepath/@name)"/> 

名は "ジェイク" です。

この場合、出力は「hello」で、それ以外は何も出力されません。それは "helloJake"ではないはずですか?

しかし、私はしようとした場合:

<msxsl:script language="JavaScript" implements-prefix="js"> 
<![CDATA[ 
    function printString1(str) 
    { 
    return str; 
    } 
]]> 
</msxsl:script> 

私は出力として "ジェイク" を取得します。

私はここで何が欠けていますか?

EDIT:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="MeasDataStylesheetWithScript2.xsl"?> 

<measCollecFile 
xmlns="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="measCollec"> 
    <fileHeader vendorName="samplename"> 
</fileHeader> 
</measCollecFile> 

そして、これはどのようにXSLファイルを見ている:

これは、XMLファイルがどのように見えるかです

<?xml version="1.0" encoding="UTF-8"?> 

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:s="http://www.3gpp.org/ftp/specs/archive/32_series/32.435#measCollec" 
xmlns:msxsl="urn:schemas-microsoft-com:xslt" 
xmlns:js="urn:custom-javascript" 
exclude-result-prefixes="s msxsl js"> 

<msxsl:script language="javascript" implements-prefix="js"> 
    <![CDATA[ 
     function printString1(str) 
     { 
     var str2 = 'hello' + str; 
     return str2; 
     } 
    ]]> 
</msxsl:script> 

<xsl:template match="/"> 
    <html> 
    <body> 

    <xsl:value-of select="js:printString1(s:measCollecFile/s:fileHeader/@vendorName)"/> 

    </body> 
    </html> 

</xsl:template> 
</xsl:stylesheet> 

答えて

0

str2varを設定してみてください。

<msxsl:script language="JScript" implements-prefix="js"> 
     <![CDATA[ 
    function printString1(str) 
    { 
var str2 = 'hello' + str; 
return str2; 
    } 
]]> 
    </msxsl:script> 

私は次のテンプレートを試してみました:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" 
    xmlns:js="js" 
> 
    <xsl:output method="xml" indent="yes"/> 

    <msxsl:script language="JScript" implements-prefix="js"> 
     <![CDATA[ 
    function printString1(str) 
    { 
var str2 = 'hello' + str; 
return str2; 
    } 
]]> 
    </msxsl:script> 

    <xsl:template match="/"> 
     <xsl:value-of select="js:printString1('Jake')"/> 
    </xsl:template> 
</xsl:stylesheet> 

出力:helloJake


EDIT

XPathを使用string機能、例えば:

<xsl:value-of select="js:printString1(string(s:measCollecFile/s:fileHeader/@vendorName))"/> 
+0

はちょうどしようと、それはありません作業。他のアイデアはありますか? – Simon

+0

@Simon、私は私の答えを更新しました。 –

+0

ソースファイルの見た目を正確に記述しました。 'jake'のような文字列を渡すのは間違いありませんが、xmlファイルから文字列を抽出することはできません。 – Simon

関連する問題