簡體   English   中英

查詢msxsl:node-set的結果不起作用

[英]Querying results of msxsl:node-set is not working

我正在使用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)"/>查詢節點集變量時,盡管結果應為2 ,但我總是得到0

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

是否存在任何明顯的理由(例如,可能與名稱空間相關?),為什么查詢xsl節點集可能會中斷?

如果需要,我將嘗試提出一個簡單的示例來說明我的問題(由於該問題是專有代碼,因此我無法准確發布該問題的代碼段)。

使用例如<xsl:variable name="allotmentValues" xmlns="">...</xsl:variable>以及可能沒有前綴的路徑<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>作品。

我已經找到了解決該問題的方法 ,可以在我的情況下使用。

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

  • 如果從中獲取節點集的<xsl:variable/>包含在具有默認名稱空間的xml塊中,則它繼承該名稱空間
  • 因此,為了正確執行XPath查詢,可以為節點添加默認名稱空間的名稱前綴,例如count($allotmentValuesNodeSet/inheritedNS:values/inheritedNSmonth)而不是count($allotmentValuesNodeSet/values/month)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM