我想选择多个节点,但是select
方法的xsl:for-each
仅检索到第一个节点。
这是我的代码:
<div STYLE="height=100%;width=100%;overflow:visible;" id="VIEW1">
<table>
<tbody>
<xsl:for-each select="//FUNCTION|PROPERTY[not(@toc) or @toc!='false']|CLASS|EVENT">
<xsl:sort select="@name"/>
<tr>
<td>
<a> <xsl:attribute name="HREF">f_content.html#<xsl:value-of select="user:getId(.)"/></xsl:attribute> <xsl:attribute name="TARGET">FRAMECONTENT</xsl:attribute><xsl:value-of select="@name"/></a>
</td>
</tr>
</xsl:for-each>
</tbody>
</table>
</div>
问题位于此处,它仅选择所有FUNCTION
个节点。 :
<xsl:for-each select="//FUNCTION|PROPERTY[not(@toc) or @toc!='false']|CLASS|EVENT">
如何更改此行以检索所有其他节点? 再次感谢!
答案 0 :(得分:1)
您必须为所有需要选择的节点添加//
或相对路径
<xsl:for-each select="//FUNCTION|//PROPERTY[not(@toc) or @toc!='false']|//CLASS|//EVENT">
另一种方法是使用self
轴,这可能会更有效
<xsl:for-each select="//*[self::FUNCTION|self::PROPERTY[not(@toc) or @toc!='false']|self::CLASS|self::EVENT]">
如果您使用的是XSLT 2.0,还有一个选择
<xsl:variable name="nodenames" select="'FUNCTION','CLASS','EVENT'"/>
<xsl:for-each select="//*[name()=$nodenames or self::PROPERTY[not(@toc) or @toc!='false']]">