Announcement

Collapse
No announcement yet.

Knoten Vergleich

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

  • Knoten Vergleich

    Hallo ich habe nun schon 100 sachen ausprobiert um mein Problem zu lösen. Will in einer XSLT zwei Knoten miteinander vergleichen. Beide Knoten enthalten Zahlen. Der Knoteninhalte können gleich sein. Wenn dies der Fall ist soll der Name des einen Knoten ausgegeben werden. In meinem Beispiel: Wenn die KontoNr mit empfKontoNr eines Anderen Kontos übereinstimmt soll der Name des Besitzers des eingehenden Kontos ausgegeben werden.

    XML Dokument sieht wie folgt aus: (es kann beliebig viele Kunden geben und beliebig viele Konten sowie Überweisungen.

    Dokument
    Bank
    Kunde
    Name
    Konto
    KontoNr
    Überweisung
    empfKontoNr
    /Überweisung
    /Konto
    /Kunde
    /Bank
    /Dokument


    Mein letzter Versuch:

    Code:
    	  <xsl:for-each select="Kunde/Konto">
    		<xsl:variable name="a" select="./KontoNr"/>
    		<xsl:for-each select="./Überweisung">
    		    <xsl:variable name="b" select="./empfKontoNr"/>
    		    <xsl:if test="$b = $a">
    			  <xsl:value-of select="./../../Name"/>
    		    </xsl:if>
    		</xsl:for-each>		
    	  </xsl:for-each>
    Der Vergleich funktioniert bei mir nicht . Was mach ich hier falsch hat einer eine Lösung?
    mfg

  • #2
    Zeige mal ein konkretes Stück XML-Code. Ich sehe in der formalen Struktur z. B. nicht, dass Kunde/Konto ein Kindelement KontoNr hat.
    Zuletzt editiert von Thomas Meinike; 28.12.2007, 14:21.

    Comment


    • #3
      Code:
      <Dokument xsi:noNamespaceSchemaLocation="schemanr9.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      	<Bank>
      		<BLZ/>
      		<Bankname/>
      		<Adresse>
      			<Strasse/>
      			<Hausnummer/>
      			<PLZ/>
      			<Ort/>
      			<Telefon/>
      		</Adresse>
      		<Kunde>
      			<Name/>
      			<Adresse>
      				<Strasse/>
      				<Hausnummer/>
      				<PLZ/>
      				<Ort/>
      				<Telefon/>
      			</Adresse>
      			<Konto>
      				<Eröffnungsdatum/>
      				<KontoNr/>
      				<Überweisung>
      					<empfKontoNr/>
      					<empfBLZ/>
      					<Betrag/>
      				</Überweisung>
      			</Konto>
      		</Kunde>
      	</Bank>
      </Dokument>
      Kunden kann es mehrere geben. jeder Kunde kann auch mehrere Konten haben und jedes Konto kann mehrere Überweisungen haben.

      Comment


      • #4
        Wenn ich das richtig verstanden habe, sollte es in diese Richtung gehen:

        Code:
        <xsl:template match="Kunde">
          
          <xsl:for-each select="Konto">
           
            <xsl:variable name="KontoNr" select="KontoNr"/>
            
             <xsl:for-each select="following::Konto/Überweisung/empfKontoNr[. = $KontoNr]">
               <xsl:value-of select="../../../Name"/><br />
             </xsl:for-each>
          
          </xsl:for-each>
         
        </xsl:template>

        Comment


        • #5
          Danke geht schon fast. Bin noch am probieren. Am ende soll nur der Kunde ausgegeben werden der ein Konto besitzt und der eine Überweisung erhält.

          Comment

          Working...
          X