我正在通过存储过程从数据库中获取一些数据,并且我正在使用 FOR XML AUTO 来获取这些数据。查询是这样的
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' 变量中正确获取了过滤器 xml,但是 for each 循环永远不会正确执行。当我尝试在我的代码中放置断点时,我注意到代码执行永远不会进入循环内部,这意味着
<xsl:for-each select="filt/ISP_WebItem">
这段代码永远无法满足。对于额外信息,此过滤器节点是大型 XML 数据的一部分,此数据中的所有其他节点都正常工作(即我可以循环或对它们进行任何操作)。任何人都可以提出任何可能的原因。