Announcement

Collapse
No announcement yet.

XSL und Bedingungen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XSL und Bedingungen?

    Hallo zusammen,
    ich moechte per xslt folgende Bedingungen auf untenstehende Baumstruktur anwenden, weiss aber nicht wie?!
    Dieses sind die Bedingungen:
    Wenn das Element <Assoziierter_Kunde> eine 0 enthaelt und gleichzeitig der jeweilige Kunde (wenn wir von oben anfangen
    also der mit der Nr. 74614) in dem <Assoziierter_Kunde>-Element eines ANDEREN Kunden auftaucht (in untenstehendem Bsp.
    also bei dem Kunden mit der Nr. 85012), moechte ich "ja" ausgeben.
    Andersherum, wenn das <Assoziierter_Kunde>-Element eines Kunden 0 enthaelt, die KundenNr. dieses Kunden aber NICHT
    in dem <Assoziierter_Kunde>-Element eines anderen Kunden auftaucht, bedeutet das "nein".

    <Kunde>
    <Nr>74614</Nr>
    <Assoziierter_Kunde>0</Assoziierter_Kunde>
    </Kunde>
    <Kunde>
    <Nr>74616</Nr>
    <Assoziierter_Kunde>0</Assoziierter_Kunde>
    </Kunde>
    <Kunde>
    <Nr>85012</Nr>
    <Assoziierter_Kunde>74614</Assoziierter_Kunde>
    </Kunde>
    <Kunde>
    <Nr>92321</Nr>
    <Assoziierter_Kunde>0</Assoziierter_Kunde>
    </Kunde>
    <Kunde>
    <Nr>74615</Nr>
    <Assoziierter_Kunde>74616</Assoziierter_Kunde>
    </Kunde>

    Ich komme einfach nicht weiter - das ist alles was ich habe:

    <xsl:choose>
    <xsl:when test="Assoziierter_Kunde[.='0'] and Assoziierter_Kunde[.=???]">
    <xsl:text>ja</xsl:text>
    </xsl:when>
    <xsl:when test="Assoziierter_Kunde[.=???]">
    <xsl:text>nein</xsl:text>
    </xsl:when>
    </xsl:choose>

    Faellt vielleicht jemandem ein Loesungsansatz ein?
    Vielen Dank im Vorraus,
    Katja

  • #2
    Oh Gott, sorry fuer das Code-Durcheinander...
    wie formatiert man den denn richtig fuer eine Anfrage in diesem Forum???
    Katj

    Comment


    • #3
      Hallo,<br>
      eine mögliche Lösung - wenn ich die Frage richtig verstanden habe;-):<br>
      &lt;xsl:for-each select="Kunde"&gt;<br>
      &lt;xsl:variable name="nr" select="Nr"/"&gt;<br>
      &lt;xsl:choose"&gt;<br>
      &lt;xsl:when test="..//Assoziierter_Kunde[.=$nr]"&lt;ja&gt;/xsl:when"&gt;<br>
      &lt;xsltherwise&lt;nein&gt;/xsltherwise"&gt;<br>
      &lt;/xsl:choose"&gt;<br>
      &lt;/xsl:for-each"&gt;<br>
      <br>
      Gruss, Michae

      Comment


      • #4
        Hallo Michael,
        es hat geklappt - vielen Dank (Kniefall, verbeug, Fuesse kuess [wenn gewaschen ])!<br>
        Ich waere (leider) nicht drauf gekommen, diesen xpath zu setzen:<br>
        <b>..//</b>Assoziierter_Kunde<br>
        Koenntest Du evtl. in einem Satz nochmal erklaeren, was der genau bewirkt?<br>
        Vielen Dank, Katj

        Comment


        • #5
          Hallo - sind gewaschen;-)<br>
          1. die Abfrage befindet sich in einer for-Schleife und "sieht" nur den jeweils ausgewählten Knoten (Kunde)<br>
          2. die Abfrage muss aber im Eltern-Knoten von Kunde starten -> <b>..</b><br>
          3. jetzt müssen alle Elemente Assoziierter_Kunde überprüft werden - dazu wird <b>//</b> genutzt - eine Abkürzung für "descendant-or-self"; Anders ausgedrückt, vom Eltern-Knoten ausgehend werden alle Kind-Knoten rekursiv durchlaufen;<br>
          das war´s<br>
          Gruss, Michae

          Comment


          • #6
            Alles klar,
            vielen Dank.
            Gruss, Katj

            Comment

            Working...
            X