Bolli: logischer Operator "or" in if-Anweisung

Hallo,

folgendes möchte ich in XSL ausdrücken:

"Falls es das Element A gibt oder das Element B oder (...), dann (...)"

<xsl:if test="Element/A"></xsl:if> funktioniert, aber wie kann ich den Operator "or" darin unterbringen um zusätzlich auf Element/B abzufragen?
Ich habe für alle möglichen Varianten nur Fehlermeldungen kassiert.

Obwohl die Aufgabe zugegebenermaßen simpel ist, habe ich kein Beispiel gefunden, aber wenn ich die einschlägigen Scripte richtig verstanden habe, ist "or" ein zulässiger Operator im XSLT-Element "if".

Danke für eure Mühe im Voraus.
Gruß, Bolli

  1. Hi,

    Obwohl die Aufgabe zugegebenermaßen simpel ist, habe ich kein Beispiel gefunden, aber wenn ich die einschlägigen Scripte richtig verstanden habe, ist "or" ein zulässiger Operator im XSLT-Element "if".

    nein, im XSLT-Attribut "test".

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo,

    folgendes möchte ich in XSL ausdrücken:

    "Falls es das Element A gibt oder das Element B oder (...), dann (...)"

    <xsl:if test="Element/A"></xsl:if> funktioniert, aber wie kann ich den Operator "or" darin unterbringen um zusätzlich auf Element/B abzufragen?

    <xsl:if test="A or B or C or D"> ... </xsl:if>

    Beachte aber, dass es wirklich ein "oder" ist, d.h. der Test ist war, wenn irgendeine der Bedingungen darin erfüllt wird.

    Grüße
    Thomas

    1. Hallo Thomas,

      <xsl:if test="A or B or C or D"> ... </xsl:if>

      Danke für die Hilfe, aber diese Syntax "<xsl:if test="Elemente/A or Elemente/B"> führt zu dem Fehler:

      "Erwartetes Token 'eof' fand 'NAME'. Elemente/A -->or<-- Elemente/B"

      Wenn A und B für eine normale Bedingung stehen würden, also z.B. x < 5, dann würde Deine Lösung funktionieren, aber
      "Elemente" ist hier das Wurzelelement und "Elemente/A" ist somit die Navigation nach <A>. Das XML-Dokument sieht so aus:

      <Elemente>
       <A></A>
       <B></B>
      </Elemente>

      Wie gesagt "<xsl:if test="Elemente/A"> ist true, wenn <A> existiert (funktioniert auch). Ich suche nun einen Ausdruck, der true ist, wenn <A> oder <B> existiert.

      1. Hallo,

        diese Syntax "<xsl:if test="Elemente/A or Elemente/B"> führt zu dem Fehler:

        "Erwartetes Token 'eof' fand 'NAME'. Elemente/A -->or<-- Elemente/B"

        Das ist nicht nachvollziehbar -- welcher XSLT-Prozessor kommt denn zum Einsatz? Es wird doch nicht etwa ein altes MSXML 2.x und "WD-xsl" im Spiel sein? (MSXML 3+ waere kein Thema)

        Dieses Beispiel funktioniert unter XSLT 1.0/XPath 1.0 wie erwartet:

        test.xml:

        <?xml version="1.0" encoding="ISO-8859-1"?>
        <?xml-stylesheet href="test.xsl" type="text/xsl"?>
        <Elemente>
          <A></A>
          <B></B>
        </Elemente>

        test.xsl:

        <?xml version="1.0" encoding="ISO-8859-1"?>
        <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

        <xsl:template match="/">

        <xsl:if test="Elemente/A or Elemente/B">
              xsl:textODER-Bedingung erfolgreich</xsl:text>
            </xsl:if>

        </xsl:template>

        </xsl:stylesheet>

        MfG, Thomas

        1. Es wird doch nicht etwa ein altes MSXML 2.x und "WD-xsl" im Spiel sein?

          *kleinlaut* Doch... :-)))

          Das war's. Jetzt geht's. Vielen Dank!!!

          (Jetzt kann ich ja doch noch in Frieden ins Wochenende gehen.)