2010-02-08 74 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

相關問題