2017-01-03 7 views
0

が動作していないnode-setビルトイン機能クエリ結果:ノードセットは、私が使用しています

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

<xsl:copy-of select="$allotmentValuesNodeSet"/>は以下を生成し、コマンドの下のコードのようにノードセットにXSL変数を変換します出力:

<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> 

私は結果が2する必要がありますが、私はいつも、0を取得し、このXSLコマンド<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>でノードセット変数を照会してみてください。

allotmentValues変数は、他の外部xmlノード間に含まれます。 xmlノード間にそれを含めないと、コードは期待どおりに動作します。

xsl node-setsのクエリが中断する可能性があるため、明らかな問題がありますか

必要に応じて、私は問題を説明するための簡単な例を考え出します(独自のコードなので、問題のコードスニペットを正確に投稿できません)。

答えて

1

<xsl:variable name="allotmentValues" xmlns="">...</xsl:variable>と接頭辞のないパス<xsl:value-of select="count($allotmentValuesNodeSet/values/month)"/>がおそらく動作します。

+0

これは優雅な修正です。 – teodron

0

私の状況では、このquestionの解決策を見つけることができました。

問題と解決策の簡単な説明:

  • 我々はノードセットの派生元<xsl:variable/>は、デフォルトの名前空間を持つXMLブロックに含まれている場合、それが故に、その名前空間
  • を継承し、に正しくXPathクエリを実行して、ノードにデフォルトの名前空間の名前を付けることができます。 count($allotmentValuesNodeSet/inheritedNS:values/inheritedNSmonth)の代わりにcount($allotmentValuesNodeSet/values/month)
関連する問題