2010-02-08 73 views

回答

7

您可以使用“和”在for-each循环,而不是在你提到的方式(即不知道到底要达到什么)

我假设你的要求是这样,无论是

1)您可以通过Trip其两个孩子实体(instanceresult)不为空, 在这种情况下,你必须写这样想循环..

<xsl:for-each select="trip[instance!='' and result!='']> 

如果实例和结果中的任何一个为空,那么你的循环就不会进入该元素,即行程。


2)你想通过每个instanceresult儿童家长里其trip值不为空,寻求。在这种情况下,您不需要and ..

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 

这会工作。

现在回答您的问与答..
与for-each循环,您可以设置选择的范围..
换例如:在情况(1),选择的范围是“root_name//trip”,并在情况( 2)选择的范围是“root_name//trip/instance”也“root_name//trip/result” ..

我希望,我理解正确你的问题,并回答它理解..

6

不,您不能在select属性中使用and

您要使用的union操作:|,其行为有点像一个和有点像一个,这取决于你如何看待它。

它会为您提供两组节点的清晰列表,并将按文档顺序返回它们(并非全部为instance,然后全部为result元素)。

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']"> 
</xsl:for-each> 

for-each上下文将每次迭代期间每个所选节点之间的开关内。您可以使用.current()访问当前节点。

+0

+1对UNION操作说明..和关于“你如何看待它”的观点 – 2010-02-08 08:42:56

+0

@Mads Hansen:谢谢 – Zoheir 2010-02-09 01:28:10

相关问题