XSLT循环无法获取对应Ref_ID的关联值问题求助
问题解决:XSLT循环中正确获取当前节点的属性值
问题根源
你代码里的//Attribute[@name = 'Title']用了绝对路径搜索(//代表从文档根节点开始遍历所有匹配节点),所以每次循环时,都会返回整个文档中第一个符合条件的Attribute节点值,而非当前EntityRef下的对应节点。
修正方案
将XPath改为相对当前上下文节点的路径,直接在当前EntityRef节点下查找Attribute,同时要获取Attribute子节点Value的文本内容(原代码直接选Attribute节点,实际需要的是其下Value的值)。
修正后的XSLT代码
<xsl:for-each select="$P_DataXMLRoot/WKIPreviewDataRoot/WKIUserSpecifiedAttributesRoot/EntityRef"> <xsl:value-of select="Attribute[@name = 'Title']/Value" /> <xsl:value-of select="Attribute[@name = 'Difficulty']/Value" /> </xsl:for-each>
代码解释
- 去掉
//,直接用Attribute[@name='xxx']:表示在当前循环的EntityRef节点下,查找对应的Attribute子节点 - 追加
/Value:获取Attribute节点下Value子节点的文本内容,这才是你需要的属性值
执行后,循环会依次输出每个EntityRef对应的属性值:
5 Low 10 hight
内容的提问来源于stack exchange,提问作者stomy
相关产品推荐
相关产品推荐

