ストアドプロシージャを介してDBからデータを取得しており、FORXMLAUTOを使用してこのデータを取得しています。クエリはこんな感じ
WHERE ITEMNUMBER=@itemid AND DATASET = @dataset FOR XML AUTO, ELEMENTS) AS filters
結果のxmlは
<filters extra="filters">
<ISP_WebItem>
<FILTER>Type</FILTER>
<FILTERNAME>Matematik</FILTERNAME>
<UNITCODE></UNITCODE>
</ISP_WebItem>
<ISP_WebItem>
<FILTER>Strømkilde</FILTER>
<FILTERNAME>Solceller</FILTERNAME>
<UNITCODE></UNITCODE>
</ISP_WebItem>
</filters>
今私の問題は、xsltでこの結果をループしようとすると、結果を取得できないことです。私のXSLTコードはこのようなものです
<xsl:variable name="filt" select="msxsl:node-set(filters)"/>
<xsl:for-each select="$filt/ISP_WebItem">
<xsl:copy-of select="FILTER"/>
</xsl:for-each>
'filt'変数でfilterxmlを正しく取得していますが、foreachループが正しく実行されません。コードにブレークポイントを設定しようとすると、コードの実行がループ内に入らないことに気付きました。つまり、
<xsl:for-each select="filt/ISP_WebItem">
このコードは決して満足しません。また、追加情報として、このフィルターノードは大きなXMLデータの一部であり、このデータ内の他のすべてのノードは正しく機能しています(つまり、ループしたり、それらを使用して任意の操作を実行したりできます)。誰もが考えられる理由を提案できますか。