Peter: logische Bedingung innerhal einer logischen Bedingung B

Hi,

wie muss ich es schreiben, wenn ich eine logische Bedingung innerhalb einer logischen Bedingung schreiben möchte, also knapp formuliert liegt das problem so, geht das so?

<xsl:value-of select="produkt[@genre='klassiker' or (@year='1950' and @author='old')]/>

Kann mir jemand sagen, ob das überhaupt möglich ist und wenn ja welche klammern muss ich setzen. also entweder das eine kriterium stimmt oder aber die anderen beiden stimmen, dann wird der wert angezeigt.

  1. Hi,

    wie muss ich es schreiben, wenn ich eine logische Bedingung innerhalb einer logischen Bedingung schreiben möchte, also knapp formuliert liegt das problem so, geht das so?
    <xsl:value-of select="produkt[@genre='klassiker' or (@year='1950' and @author='old')]/>

    Nö, so geht's nicht, das select-Attribut wird nicht geschlossen.

    also entweder das eine kriterium stimmt oder aber die anderen beiden stimmen, dann wird der wert angezeigt.

    Du willst wirklich ein exklusives Oder?

    Dann wäre der Ausdruck auf jeden Fall falsch, denn der trifft auch dann zu, wenn alle 3 Vergleiche wahr ergeben.
    Meines Wissens kennt XPath keinen Operator für XOR, den müßtest Du also nachbauen:

    A xor B  <---> (A and !B) or (!A and B)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Das geht wirklich nicht?

      danke erst einmal fuer die schnelle antwort. Das kann ich mir doch bald gar nicht vorstellen, dass xsl nicht dies interpretieren kann. Dein beispiel habe ich nicht ganz verstanden, ich würde mein problem eher so definieren

      entweder A oder (B und C)

      bei deinem beispiel muesste ich ja aber auch irgendwie abgrenzen können

      <xsl:value-of select="wert[(@A and @B) or (B and A)]"/> ???

      Hi,

      wie muss ich es schreiben, wenn ich eine logische Bedingung innerhalb einer logischen Bedingung schreiben möchte, also knapp formuliert liegt das problem so, geht das so?
      <xsl:value-of select="produkt[@genre='klassiker' or (@year='1950' and @author='old')]/>

      Nö, so geht's nicht, das select-Attribut wird nicht geschlossen.

      also entweder das eine kriterium stimmt oder aber die anderen beiden stimmen, dann wird der wert angezeigt.

      Du willst wirklich ein exklusives Oder?

      Dann wäre der Ausdruck auf jeden Fall falsch, denn der trifft auch dann zu, wenn alle 3 Vergleiche wahr ergeben.
      Meines Wissens kennt XPath keinen Operator für XOR, den müßtest Du also nachbauen:

      A xor B  <---> (A and !B) or (!A and B)

      cu,
      Andreas

      1. Hi Peter,
        Du kennst den Unterschied zwischen „oder“ (or) und „entweder oder“ (xor)?

        A   B   A or B   A xor B
        1   1     1         0     ← da ist er.
        1   0     1         1
        0   1     0         1
        0   0     0         0

        Und bitte kein TOFU.

        Live long and prosper,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
        1. Korrektur:

          A   B   A or B   A xor B
          1   1     1         0     ← da ist er.
          1   0     1         1
          0   1     1         1     ← und da ist keiner.
          0   0     0         0

          Ich plädiere für die Abschaffung des Nummernblocks auf Tastaturen. Zwischen 0 und 1 gehört ein Sicherheitsabstand. ;-)

          Live long and prosper,
          Gunnar

          --
          „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
  2. Hallo,

    wie muss ich es schreiben, wenn ich eine logische Bedingung innerhalb einer logischen Bedingung schreiben möchte, also knapp formuliert liegt das problem so, geht das so?

    <xsl:value-of select="produkt[@genre='klassiker' or (@year='1950' and @author='old')]/>

    select="produkt[(@genre='klassiker') or (@year='1950' and @author='old')]"

    Grüße
    Thomas

    --
    Surftip: kennen Sie schon Pipolino's Clowntheater?
    http://www.clowntheater-pipolino.net/