2017-01-03 62 views
0

我使用的node-set內置功能到一個xsl變量轉換成節點集,如下面的代碼查詢結果:節點集不工作

<xsl:variable name="allotmentValuesNodeSet" select="msxsl:node-set($allotmentValues)"/> 

命令<xsl:copy-of select="$allotmentValuesNodeSet"/>產生以下輸出:

<values> 
     <month>Mar</month> 
     <incomeQTD>1499.63109246680</incomeQTD> 
     <realizedQTD /> 
     <incomeYTD>1519.35773710483</incomeYTD> 
     <realizedYTD /> 
     <incomePrevYTD>1519.35773710483</incomePrevYTD> 
     <realizedPrevYTD /> 

     <month /> 
     <incomeQTD /> 
     <realizedQTD /> 
     <incomeYTD /> 
     <realizedYTD /> 
     <incomePrevYTD /> 
     <realizedPrevYTD /> 

</values> 

當我試圖查詢這個XSL命令<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>節點設置可變我總是0,但結果應該是2

allotmentValues變量包含在其他外部xml節點之間。如果我沒有將它包含在任何xml節點之間,那麼代碼將按預期工作。

爲什麼查詢xsl節點集可能會中斷,是否有任何明顯的casue(例如namespace related可能?)?

如果需要,我會試着想出一個簡單的例子來說明我的問題(由於它是專有代碼,我不能完全發佈問題的代碼片段)。

回答

1

修改變量創建,例如, <xsl:variable name="allotmentValues" xmlns="">...</xsl:variable>和可能的前綴路徑<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>的作品。

+0

這是一個優雅的修復。 – teodron

0

我發現從這個question解決方案在我的情況下工作。

問題和解決方案的簡要說明:

  • 如果從中派生節點集合被包括在與一個默認的命名空間的XML塊<xsl:variable/>,它繼承該命名空間
  • 因此,爲了正確地執行XPath查詢,可以使用默認名稱空間的名稱爲節點添加前綴,例如count($allotmentValuesNodeSet/inheritedNS:values/inheritedNSmonth)而不是count($allotmentValuesNodeSet/values/month)
相關問題