récupération d'index d'un fichier XML grace au XSL
Bonjour à vous,
Merci d'avance à tous ceux qui pourront éclairer ma lanterne. J'ai créee une feuille de style XSL 2.0 qui à partir d'un fichier XML me sort trois fichiers HTML 4. Jusque là tout va bien. J'ai juste une petite question concernant un des résultats de transformation. Voici le dilemme :
J'ai une commande XSL qui pour chaque balise controlaccess de mon fichier XML m'extrait les mots d'index classés par ordre alpahabétique et pour chacun de ces mots d'index, me sort toutes les cotes qui s'y rapportent :
<xsl:for-each select="//c[child::controlaccess/subject=$index]|//c[child::controlaccess/function=$index]|//c[child::controlaccess/genreform[not(@type='typir')and not(@source='liste-typedocAC')]=$index]|//c[child::controlaccess/geogname[not(@role)]=$index]|//c[child::controlaccess/persname=$index]|//c[child::controlaccess/name=$index]|//c[child::controlaccess/famname=$index]|//c[child::controlaccess/corpname[not(@altrender)]=$index]">
<xsl:if test="child::did/unittitle[not(attribute::type)]">
<xsl:choose>
<xsl:when test="contains(did/unitid,'-')">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="//ead/eadheader/eadid"></xsl:value-of>notices.html#tt-<xsl:value-of select="count(ancestor::c)"></xsl:value-of>-<xsl:value-of select="did/unitid"></xsl:value-of></xsl:attribute>
<xsl:variable name="testcaractereindexsurtitre">
<xsl:value-of select="substring-after(./did/unitid,'/')"></xsl:value-of>
</xsl:variable>
<xsl:choose>
<xsl:when test="contains($testcaractereindexsurtitre,'/')"><xsl:value-of select="did/unitid"></xsl:value-of></xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="substring-after(./did/unitid,'/')"><xsl:value-of select="substring-after(did/unitid,'/')"></xsl:value-of></xsl:when>
<xsl:otherwise><xsl:value-of select="did/unitid"></xsl:value-of></xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose> <xsl:text> ; </xsl:text></xsl:element></xsl:when>
Voici donc le résultat dans mon fichier HTML :
Registre : 1 ; 1 ; 2-6 ; 2-5 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7-17 ; 7 ; 8-17 ; 8 ; 9 ; 10 ; 11 ; 12 ; 13 ; 14 ; 15 ; 16 ; 17 ; 18-19 ; 18 ; 19 ; 20 ; 21 ; 22-23 ; 22 ; 23 ; 24 ; 25 ; 29 ; 31 ; 35-36 ; 35 ; 36 ;
ma question est la suivante, en XSL, est-il possible de simplifier le résultat à ceci ( a condition qu'on puisse vérifier que toutes les cotes de 1 à 36 sont concernés par le mot d'index):
Registre : 1-25, 29, 31, 35-36
Si c'est impossible en XSL est-ce possible dans un autre langage ?
Merci d'avance de vos éclairages.
Cordialement