Tom4u: Mehrere Bedingungen

Hallo,

Ich hab folgendes Problem ich möchte mit einem XPatch Ausdruck mehrere tags bis auf ein paar bestimmte lesen.

Dazu tu ich folgendes:

<xsl:for-each select="//Tags/*[. != //de1]">
</xsl:for-each>

das funktioniert auch ... nun nimmt er den de1 nicht mehr mit ... jetzt habe ich aber noch de2 3 4 5 .. etc.

Ich hab schon alles versucht ;) so schwer kann es ja nicht sein.
Wie gebe ich in der bedingung jetzt an das er auch diese nicht mit lesen soll. Habs schon mit "and" oder "," versucht .. klabt alles nicht

Danke
Tom

  1. Hallo,

    Ich hab folgendes Problem ich möchte mit einem XPatch Ausdruck mehrere tags bis auf ein paar bestimmte lesen.

    Dazu tu ich folgendes:

    <xsl:for-each select="//Tags/*[. != //de1]">

    Das "//" am Anfang einer Bedingung ist selten günstig vom Performance her.

    wo befindest du dich im Elementenbaum, wenn du for-each aufrufst?:

    /wurzelement/Tags ? /wurzelement/adereselement/Tags ? etc?

    das funktioniert auch ... nun nimmt er den de1 nicht mehr mit

    Doch das tut er und zwar den ersten den erfindet. Wenn er natürlich keinen entsprechenden Knoten findet, kann der Ausdruck auch nichts selektieren.

    Daher wieder die Frage: wie sieht deine XML-Struktur aus?

    ... jetzt habe ich aber noch de2 3 4 5 .. etc.

    Ich hab schon alles versucht ;) so schwer kann es ja nicht sein.
    Wie gebe ich in der bedingung jetzt an das er auch diese nicht mit lesen soll. Habs schon mit "and" oder "," versucht .. klabt alles nicht

    Da ich dein XML-Struktur nicht kenn kann ich nur folgendes raten:
    select="//Tags/*[(local-name(.) != 'de1') and (local-name(.) != 'de2') and ... "

    Wenn es dir aber darum geht, dass das Element "de1" samt Inhalt etc. nicht dem aktuelle bearbeiteten Knoten entspricht, muss du mehr von deinem XML zeigen.

    Grüße
    Thomas