Wende: Zuordnen und zusammenfassen über xslt

Hallo,
seit nun schon etwas längerer Zeit arbeite ich daran Metadaten aus Bilddateien (ca 50.000 Stück) auszulesen und nach einem bestimmten Muster als XML zu ordnen. Bis auf eine Zeile ist die Datei nun fertig.
Die XML Datei soll auch zu Vergleichszwecken den md5-code der Bilddatei enthalten. Ich habe nun ein Programm (Microsoft File Checksum Integrity Verifier) gefunden, dass mir die md5 codes als liste in xml auswirft. Sieht so aus:

<datei>
   <name>datei1</name>
   <code>0342D1FD69E2934A51204E9077A31F51</code>
</datei>
<datei>
   <name>datei2</name>
   <code>B532064D28CA262C753B1753EC03B3D8</code>
</datei>
<datei>
   <name>datei3</name>
   <code>736F10AAC8FB096CE99F9E966F629B50</code>
</datei>

Und hier mein Problem: Diese codes müssen jetzt in den Hauptkatalog eingeordnet werden. Dieser Hauptkatalog sieht so aus:

<MediaItemList>
 <MediaItem>
  <AssetProperties>
   <Filename>datei3</Filename>
   <MediaType>TIFF</MediaType>
   <FileSize unit="Bytes">18874560</FileSize>
   ...
  </AssetProperties>
 </MediaItem>
 <MediaItem>
  <AssetProperties>
   <Filename>datei1</Filename>
   <MediaType>TIFF</MediaType>
   <FileSize unit="Bytes">17560158</FileSize>
   ...
  </AssetProperties>
 </MediaItem>
        <MediaItem>
  <AssetProperties>
   <Filename>datei2</Filename>
   <MediaType>TIFF</MediaType>
   <FileSize unit="Bytes">15918354</FileSize>
   ...
  </AssetProperties>
 </MediaItem>

Unter den AssetProperties soll nun eine Gruppe entstehen mit dem Namen <md5>. Problem ist, dass die md5-codes erst der richtigen Datei zugeordnet werden müssen und ich nicht versichern kann, dass zu jeder Datei auch ein md5 existiert und zu jedem md5 eine Datei.
Da es sich um mehrere tausend Dateien handelt will ich sie natürlich auch nicht von Hand ordnen.
Ich habe alle bisherigen Probleme über xslt lösen können und es wäre super, wenn das hier auch wieder klappt.
Vielen Dank schon mal für alle Vorschläge!
Gruß,
Wende

  1. Hallo Wende,

    Unter den AssetProperties soll nun eine Gruppe entstehen mit dem Namen <md5>. Problem ist, dass die md5-codes erst der richtigen Datei zugeordnet werden müssen und ich nicht versichern kann, dass zu jeder Datei auch ein md5 existiert und zu jedem md5 eine Datei.

    Unter Annahme des Wurzelelements liste und dem Dateinamen liste.xml sollte es in diese Richtung gehen (Transformation des Katalogs):

    <?xml version="1.0" encoding="ISO-8859-1"?>  
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
      
      <xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>  
      
      <xsl:variable name="liste" select="document('liste.xml')/liste"/>  
      
      <xsl:template match="@*|node()">  
        <xsl:copy>  
          <xsl:apply-templates select="@*|node()"/>  
        </xsl:copy>  
      </xsl:template>  
      
      <xsl:template match="AssetProperties">  
        <xsl:variable name="Filename" select="Filename"/>  
        <xsl:copy>  
          <xsl:apply-templates select="@*|node()"/>  
          <xsl:if test="$liste//datei/name[.=$Filename]">  
            <md5><xsl:value-of select="$liste//datei/name[.=$Filename]/following-sibling::code"/></md5>  
          </xsl:if>  
        </xsl:copy>  
      </xsl:template>  
      
    </xsl:stylesheet>
    

    Mit den gegebenen Daten entsteht:

    <?xml version="1.0" encoding="ISO-8859-1"?>  
    <MediaItemList>  
     <MediaItem>  
      <AssetProperties>  
       <Filename>datei3</Filename>  
       <MediaType>TIFF</MediaType>  
       <FileSize unit="Bytes">18874560</FileSize>  
       <md5>736F10AAC8FB096CE99F9E966F629B50</md5>  
      </AssetProperties>  
     </MediaItem>  
     <MediaItem>  
      <AssetProperties>  
       <Filename>datei1</Filename>  
       <MediaType>TIFF</MediaType>  
       <FileSize unit="Bytes">17560158</FileSize>  
       <md5>0342D1FD69E2934A51204E9077A31F51</md5>  
      </AssetProperties>  
     </MediaItem>  
     <MediaItem>  
      <AssetProperties>  
       <Filename>datei2</Filename>  
       <MediaType>TIFF</MediaType>  
       <FileSize unit="Bytes">15918354</FileSize>  
       <md5>B532064D28CA262C753B1753EC03B3D8</md5>  
      </AssetProperties>  
     </MediaItem>  
    </MediaItemList>
    

    Ich hoffe, das war gesucht.

    Grüße,
    Thomas

    1. Hey Thomas,
      Hab noch ein paar Sachen angleichen müssen und jetzt läuft es! Juhu! Die Konvertierung ist nun perfekt! Ich brauch zwar im Moment noch 4 Stylesheets, aber die krieg ich auch noch zusammen :)
      Danke nochmal für deine Hilfe!
      Gruß,
      Wende