xsl-list
[Top] [All Lists]

Re: [xsl] Muenchain method

2017-05-27 03:55:23
Thank you so much Martin. You save my week end :-)
Regards

  _____  

De : Martin Honnen martin(_dot_)honnen(_at_)gmx(_dot_)de
[mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com] 
Envoyé : samedi 27 mai 2017 10:34
À : xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Objet : Re: [xsl] Muenchain method



You might want to move to XSLT 2.0 with nested for-each-group where these
kind of problems don't occur, in your case you have defined the key for any
elements but only want to apply it with Muenchian grouping for a subtree,
therefore you have to use a key concatenating the id of the parent node and
the value you want to use:




<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
<http://www.w3.org/1999/XSL/Transform>
xmlns:fo="http://www.w3.org/1999/XSL/Format";
<http://www.w3.org/1999/XSL/Format>
xmlns:fox="http://xml.apache.org/fop/extensions";
<http://xml.apache.org/fop/extensions>  version="1.1"
exclude-result-prefixes="fo">
    <xsl:output method="html" indent="yes"/>
    
    <xsl:key name="idxaut"
match="datafield[@tag=100]|datafield[@tag=700]|datafield[@tag=710]"
use="."/> 
    <xsl:key name="idxtit" match="indexsort" use="concat(generate-id(..),
'|', .)"/>
    
    
    
    <xsl:template name="AUTHOR" match="collection">
        
        <xsl:for-each
select="level_1/record/datafield[@tag=100]|level_1/record/datafield[@tag=700
]|level_1/record/datafield[@tag=710]">
            <xsl:sort select="normalize-space(.)" lang="de-CH"/>
            <xsl:sort select="../indexsort"/>
            
            <!-- on affiche l'auteur -->
            <xsl:for-each select="current()[count(. | key('idxaut', .)[1]) =
1]">
                <b>
                    <xsl:value-of select="."/>
                </b>
                <br/>
                <xsl:for-each select="key('idxaut', .)">
                    <xsl:sort select="../indexsort"/>    
                    <xsl:for-each select="../indexsort[count(. |
key('idxtit', concat(generate-id(..), '|', .))[1]) = 1]">
                        <xsl:for-each select="key('idxtit',
concat(generate-id(..), '|', .))">
                            
                            <!--<xsl:if test="position()=1"> -->
                            <xsl:for-each select="../datafield[@tag=245]">
                                <xsl:value-of select="."/>
                            </xsl:for-each>    
                            <xsl:value-of select="concat(' | ',../recno)"/>
                            <br/>                
                            <!--</xsl:if> -->
                        </xsl:for-each>                
                        
                    </xsl:for-each>
                </xsl:for-each>
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>
    
    <xsl:template match="collection">
        <html>
            <xsl:call-template name="AUTHOR"/>
        </html>
    </xsl:template>
    
</xsl:stylesheet>



Am 26.05.2017 um 22:58 schrieb Jean-Pierre Lamon gipi(_at_)ngscan(_dot_)com:




 
For a bibliographic list, I'm trying to display author/title index entries.
I'm using the Muenchain method to group books by author/titles.
There's an index for author and titles. Titles are generated from the
indexsort XML node.
 
Could you try to generate this list with the attached files and see the
result :
 
The problem :
 
Affentranger, Urban 1944- (DE-588)1072229609
        Die Renovation der Klosterkirche Disentis im 19. und 20. Jahrhundert
/ Urban Affentranger | 6
        Turnen und Sport an der katholischen Kantonsschule Disentis
1833-1842 / Urban Affentranger | 5
        Turnen und Sport an der katholischen Kantonsschule Disentis
1833-1842 / Urban Affentranger | 7
Blum, Roger 1945- (DE-588)131690035
        Alfred Oberer - Steuermann im Hintergrund / Roger Blum | 3
        Die Mechanik der Politik in Baselland / Roger Blum | 2
Czouz-Tornare, Alain-Jacques 1957- (DE-588)158860152
Pavillon, Olivier
        Introduction / Olivier Pavillon | 1
  --> Introduction / Alain-Jacques Czouz-Tornare | 4 --> should be under
Czouz-Tornare
 


XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>  
EasyUnsubscribe <-list/2586163>  (by
email <> ) 
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>