ThomasM: Zuordnen und zusammenfassen über xslt

Beitrag lesen

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