This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: making grandparents of grandchildren


> What I tried for some time to achieve in vain, is group paintings
> belonging to same owners under their names sorted and add author names
> to each picture in the list. Would really appreciate your help (or our
> exhibition in Madrid will have to be postponed :).

How about

<?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"
            indent="yes" 
            encoding="ISO-8859-1" />

<xsl:key name="owner" match="owner" use="." />
<xsl:key name="picture" match="picture" use="owner" />

<!-- this should match the parent of authorgroup elements-->
<xsl:template match="foo">
  <!-- get unique owners -->
  <xsl:apply-templates select="authorgroup/picture/owner[generate-id(.)
= generate-id(key('owner', .))]" mode="sort">
    <xsl:sort select="." />
  </xsl:apply-templates>
</xsl:template>

<xsl:template match="owner" mode="sort">
  <ownergroup>
    <name>
      <xsl:value-of select="." />
    </name>
    <!-- list pictures by this owner-->
    <xsl:apply-templates select="key('picture', .)" />
  </ownergroup>
</xsl:template>

<xsl:template match="picture">
  <xsl:copy>
    <author>
      <xsl:value-of select="ancestor::authorgroup[1]/name" />
    </author>
    <xsl:apply-templates select="*[not(self::owner)]" />    
  </xsl:copy>
</xsl:template>

<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>

It's the fourth Monday of this week, so I wouldn't be surprised if it
didn't work - Anyhow, it should generate

<ownergroup>
  <name></name>
  <picture>
    <author></author>
    <title></title>
    <inv><inv>
  </picture>
  <picture>
    ...
  </picture>
</ownergroup>
<ownergroup>
...
</ownergroup>

Santtu

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]