Qiuna: XML in HTML anzeigen - Summe berechnen von idRef?!

Hallöchen zusammen,

Ich habe ein XML Datei und möchte nun diese Datei in Html darstellen

<unternehmen>
<projekte>
 <projekt id="1">
 <name>p1</name>
 <price>50</price>
 </projekt>

<projekt id="2">
 <name>p2</name>
 <price>100</price>
 </projekt>

<projekt id="3">
 <name>p2</name>
 <price>20</price>
 </projekt>
</projekte>

<person>
 <name>Keller Manuel</name>
 <email>keller@muster.com</email>
 <kuerzel>kell</kuerzel>
<projekte>
 <projektRef idref="1"/>
 </projekte>
 </person>

<person>
 <name>Minostrone Daniel</name>
 <email>Minostrone@muster.com</email>
 <kuerzel>mino</kuerzel>
<projekte>
 <projektRef idref="2"/>
 </projekte>
 </person>

<person>
 <name>Stuja Brigitte</name>
 <email>Stuja@muster.com</email>
 <kuerzel>stuj</kuerzel>
<projekte>
 <projektRef idref="1"/>
 </projekte>
 </person>

<person>
 <name>de Spindler Alexandre</name>
 <email>deSpindler@muster.com</email>
 <kuerzel>desa</kuerzel>
<projekte>
 <projektRef idref="3"/>
 </projekte>
 </person>

</unternehmen>

Aber leider zählt es mir entweder von den Projekten alle Beträge zusammen oder gar nichts.
Wie kann ich das XSLT so erstellen, dass es nur die Summe berechnet, in welcher zb. Person A ist und Summe der Projekte Person b etc?!

<xsl:key name="key1" match="unternehmen" use="@id"/>

<xsl:template match="/">
  <html>
  <body>
  <h2>Adressbuch mit Bilder</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Name mit Mailadresse</th>
        <th>Bilder</th>
        <th>Projekt Summe</th>
          </tr>
      <xsl:for-each select="unternehmen/person">
      <tr>
<td><li><a href="mailto:{email}"><xsl:value-of select="name"/></a></li></td>

<td><img src="http://pd.zhaw.ch/portraet/images/{kuerzel}.jpg" width="85" height="70" /></td>

<td><xsl:value-of select="sum(key(key1', '[@id]')../projekte/projekt/price)"/> </td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

  1. Hallo Qiuna,

    Aber leider zählt es mir entweder von den Projekten alle Beträge zusammen oder gar nichts.

    Was soll im genannten Beispielcode herauskommen und kann ggf. XSLT 2.0 verwendet werden?

    Grüße,
    Thomas

    1. Hallo Qiuna,

      Aber leider zählt es mir entweder von den Projekten alle Beträge zusammen oder gar nichts.

      Was soll im genannten Beispielcode herauskommen und kann ggf. XSLT 2.0 verwendet werden?

      Grüße,
      Thomas

      Ich sehe 3 Spalten Namen, Bilder, Summe. Jedoch berechnet es Summe nicht wo die Beispielmitarbeiter Mitglied sind bei den Projekten...

      1. Hallo Qiuna,

        Aber leider zählt es mir entweder von den Projekten alle Beträge zusammen oder gar nichts.

        Was soll im genannten Beispielcode herauskommen und kann ggf. XSLT 2.0 verwendet werden?

        Grüße,
        Thomas

        Ich sehe 3 Spalten Namen, Bilder, Summe. Jedoch berechnet es Summe nicht wo die Beispielmitarbeiter Mitglied sind bei den Projekten...

        Der Preis soll zusammen gezählt werden, ich weiss nicht ob xslt 2.0 geht, grosse änderungen zum vorgänger?

        1. Hallo Qiuna,

          Der Preis soll zusammen gezählt werden, ich weiss nicht ob xslt 2.0 geht, grosse änderungen zum vorgänger?

          Ich sehe vier Personen. Was soll zahlenmäßig bei diesen stehen?

          Wenn es nicht direkt im Browser laufen muss, bieten sich XSLT 2.0 und ein Prozessor wie Saxon oder AltovaXML an. Es gibt vielfältige Detailverbesserungen, gerade im Bereich Gruppierung (xsl:for-each-group).

          Grüße,
          Thomas

          1. Die Summe vom Umsatz wo die Mitarbeiter Mitglied sind?
            Es sollte im Browser laufen...

            1. Hallo Qiuna,

              Die Summe vom Umsatz wo die Mitarbeiter Mitglied sind?

              Du weißt es selbst nicht?

              Es sollte im Browser laufen...

              Dann 1.0.

              Grüße,
              Thomas

              1. Hallo Qiuna,

                Die Summe vom Umsatz wo die Mitarbeiter Mitglied sind?

                Du weißt es selbst nicht?

                Nein ich weiss es nicht wie es geht mit ID Ref darauf zugreifen.

                Zb. Person 1 Umsatz 50, Person 2 Umsatz 100 Person 3 Umsatz 70
                Wenn Person 3 zb. an mehrern Projekten arbeiten würde?!

                grüesse
                Qiuna

                1. Hallo Qiuna,

                  Zb. Person 1 Umsatz 50, Person 2 Umsatz 100 Person 3 Umsatz 70
                  Wenn Person 3 zb. an mehrern Projekten arbeiten würde?!

                  Ich verstehe das Beispiel nicht: Person 2 mit Summe 100 gibt es nicht, aber zwei Personen, welche jeweils auf die id="1" zugreifen. (BTW: Falls in DTD id als ID definiert ist, wären Zahlenwerte so nicht gültig, als CDATA schon).

                  Gib mal ein plausibles Beispiel an mit dem erwarteten Ergebnis.

                  Grüße,
                  Thomas

                  1. Projekt A 20 Umsatz
                    Projekt B 30 Umsatz
                    Projekt C 40 Umsatz

                    Also Person  1 arbeitet in Projekt A und Projekt B
                    Person 2 nur in Projekt C und Person 3 in Projekt B und C.

                    Ich möchte nur den Auszug evtl. mit Key id  - Die summe der Projekte rausgibt wo die Personen arbeiten.

                    Also zb. Person 1 dann 50 Umsatz, Person 2 nur 40 und Person 3 zb. 70

                    Also möchte nur für die XSLT Datei den richtigen link:

                    <td><xsl:value-of select="sum(key(key1', '[@id]')../projekte/projekt/umsatz)"/> </td>

                    1. Habs rausgefunden :P

                      sum(key('test',projekte/projektRef/@idref)/umsatz)"/>

                      und es funktioniert :P

                      Danke trotzdem