2010-02-08 6 views
8

Kann ich einfach Folgendes in xsl ausführen?Kann ich den Operator 'and' in xsl for-each verwenden?

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

F: Wenn ich wählen Sie verwenden = "" in for-each den Umfang meiner Wähler ändert sich für den Code, den ich innerhalb for-each verwenden?

Antwort

7

können Sie verwenden ‚und‘ in foreach-Schleife, aber nicht in der Art und Weise Sie erwähnt haben (nicht sicher sein, was genau Sie erreichen wollen)

Ich nehme an, Ihre Anforderungen so etwas wie, entweder

1) Sie mögen eine Schleife durch Trip deren beiden Kinder Entitäten (instance und result) nicht null, In diesem Fall können Sie wie folgt schreiben ..

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

Wenn zwischen Instanz und Ergebnis null ist, dann wird die Schleife nicht in das Element trip eingefügt.


2) Sie wollen trip, deren Werte durch jede instance und result Kinder innerhalb Eltern suchen sind nicht null. In diesem Fall Sie benötigen nicht and ..

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

Dies funktioniert.

jetzt zum Q beantworten ..
mit foreach-Schleife Sie den Umfang der Schalter einstellen ..
für Beispiel: Im Fall (1), den Umfang der Wähler war „root_name//trip“ und im Fall (2) Umfang der Wähler war „root_name//trip/instance“ auch „root_name//trip/result“ ..

ich hoffe, ich Ihre Frage richtig verstanden und beantwortet sie so verständlich ..

6

Nein, Sie können and im Attribut select nicht verwenden.

Sie wollen den union Operator verwenden: |, die wie eine Art von Verhalten und und Art wie ein oder, je nachdem, wie man darüber nachdenkt.

Es wird Ihnen eine eindeutige Liste beider Knotengruppen geben und sie in der Dokumentreihenfolge zurückgeben, in der sie gefunden werden (nicht alle und dann alle result Elemente).

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

Im Inneren des for-each der Zusammenhang zwischen jedem der ausgewählten Knoten während jeder Iteration wechseln. Sie können mit . oder current() auf den aktuellen Knoten zugreifen.

+0

+1 für Erklärung UNION Operator .. und für der Punkt "abhängig davon, wie Sie darüber denken" –

+0

@ Mads Hansen: Danke – Zoheir

Verwandte Themen