2010-02-08 15 views
8

Po prostu mogę wykonać następujące czynności w xsl?Czy mogę użyć operatora "i" w xsl dla każdego?

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

Q: Kiedy używać select = "" w for-each to zmienić zakres mojego selektor kodu używam wewnątrz for-each?

Odpowiedz

7

Można użyć „i” w for-each pętli, ale nie w sposób, w jaki zostały wymienionym (jest pewien, co dokładnie chcesz osiągnąć)

zakładam swoje wymagania coś, albo

1) chcesz pętli Trip której oba podmioty są dziećmi (instance i result) NOT nULL, W tym przypadku trzeba pisać tak ..

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

jeśli dowolna z instancji i wynik są zerowe, to twoja pętla nie wchodzi w element a mianowicie, trip.


2) Chcesz zasięgnąć przez każdy instance i result dzieci wewnątrz rodzica trip których wartości nie są nieważne. W tym przypadku nie potrzebujesz and ..

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

To zadziała.

teraz odpowiedzieć na swojej Q ..
z pętli for-each można ustawić zakres selektora ..
na-przykład: W przypadku (1), zakres selektora była „root_name//trip”, a w przypadku (2) zakres selektora była „root_name//trip/instance” również „root_name//trip/result” ..

mam nadzieję, że zrozumiał swoje pytanie poprawnie i odpowiedział go jako zrozumiałe ..

6

Nie, nie można użyć atrybutu and w atrybucie select.

chcesz użyć operatora union: |, która zachowuje się trochę jak i i niby jak lub, w zależności od tego, jak się nad tym zastanowić.

To da ci wyraźną listę obu zestawów węzłów i zwróci je w kolejności dokumentów, które je znajdują (nie wszystkie instance, a następnie wszystkie elementy result).

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

Wewnątrz for-each kontekst nie będzie przełączać pomiędzy każdym z wybranych węzłów w każdej iteracji. Dostęp do bieżącego węzła można uzyskać za pomocą . lub current().

+0

+1 dla objaśnienia operatora UNION .. i dla punkt "W ZALEŻNOŚCI OD WASZEGO Z MYŚLĄ O NAMI" –

+0

@Mads Hansen: Dziękuję – Zoheir

Powiązane problemy