2012-12-05 34 views
-1

我打電話返回節點設置的模板,我試圖將其存儲在一個變量,但它僅返回值不節點名稱如何存儲節點設置

<MaxData> 
    <xsl:variable name="maxP"> 
    <xsl:call-template name="MaxPeaks"/> 
     </xsl:variable> 
</MaxData> 

    <xsl:template name="MaxPeaks"> 
     <DailyPeakDmds> 
      <xsl:text>Test1</xsl:text> 
     </DailyPeakDmds> 
     <DailyPeakDmds> 
      <xsl:text>Test2</xsl:text> 
     </DailyPeakDmds> 
</xsl:template> 

發送節點設置爲C#代碼文件:

<xsl:value-of select="code:GetMax($maxP)"/> 

但在C#方法給它的結果 「的Test1 Test2的」,但我需要這樣的:

<DailyPeakDmds> 
    Test1 
</DailyPeakDmds> 
<DailyPeakDmds> 
    Test2 
</DailyPeakDmds> 

當我測試變量'maxP'它包含「Test1 Test2」的值,並且它不包含節點名稱任何人都可以幫助我如何獲取節點集並存儲它。

+0

是如何你「測試」變量?請記住'''會爲您提供片段的_string value_,這意味着文本節點的連接。如果你想要這個結構,你需要使用''。 –

+0

耶節點的連接現在得到了。我使用$ maxP它給了我連接結果,所以我能做些什麼來獲得節點集? – user1805169

+0

我需要做這個節點設置在C#代碼文件中的計算,所以我發送這個節點設置爲C#代碼文件作爲代碼:GetMax($ maxP)但我只得到文本節點不是節點集:( – user1805169

回答

0

找到答案我自己通過給道路節點設置如下圖所示

<xsl:copy-of select="code:GetMax(msxsl:node-set($maxP)/DailyPeakDmds/*)" /> 
0
<xsl:value-of select="code:GetMax($maxP)"/> 

將通過包含在maxP變量您的擴展功能結果樹片段,然後再轉換擴展功能將一個字符串的返回值,並在輸出中包含該字符串值。如果該函數返回節點集或其他結果樹片段,並且您希望將這些節點按原樣包含在輸出中(而不僅僅是節點集的字符串值),那麼您應該使用copy-of而不是value-of

<xsl:copy-of select="code:GetMax($maxP)"/> 

如果該功能預計其參數成爲集,而不是一個結果樹片段,那麼你將需要使用擴展功能轉換$maxP一個節點。既然你提到C#我想你正在使用的.NET XSLT處理器,在這種情況下,你可能想the msxsl:node-set function

<xsl:copy-of select="code:GetMax(msxsl:node-set($maxP))" /> 
+0

結果$ maxP包含像「Test1 Test2」這樣的值的連接,但maxP應該包含節點集 – user1805169

+0

@ user1805169'$ maxP'變量包含一個「結果樹片段」 - 如果'GetMax'需要一個節點集,則必須使用一個擴展函數來轉換它。 –

+0

即使在用您的建議替換之後,也會得到相同的樹片段結果以上。 – user1805169