Subject: Re: [xsl] Remove duplicate affiliation From: "Terry Badger terry_badger@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sun, 24 Dec 2023 22:58:45 -0000 |
This will do what you want: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet exclude-result-prefixes="xs math xd" version="2.0" xmlns:math="http://www.w3.org/2005/xpath-functions/math" B B B xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" xmlns:xs="http://www.w3.org/2001/XMLSchema" B B B xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> B B B <!-- make a variable that has the gen-id of only the first occurance of the xreflabel contents --> B B B <xsl:variable name="affiliations"> B B B B B B B <xsl:for-each-group group-by="@xreflabel" select="/authorgroup/author/affiliation"> B B B B B B B B B B B <!-- take only the first one in the group --> B B B B B B B B B B B <xsl:copy-of select="current-group()[1]/generate-id(.)"/> B B B B B B B </xsl:for-each-group> B B B </xsl:variable> B B B <!-- start at root --> B B B <xsl:template match="/authorgroup"> B B B B B B B <aug> B B B B B B B B B B B <!--<xsl:apply-templates mode="a1"/>--> B B B B B B B B B B B B <xsl:apply-templates mode="a2"/> B B B B B B B </aug> B B B </xsl:template> B B B <!-- match each author --> B B B <xsl:template match="author" mode="a1"> B B B B B B B <au> B B B B B B B B B B B <xsl:value-of select="name"/> B B B B B B B </au> B B B </xsl:template> B B B <!-- drop name on the a2 pass --> B B B <xsl:template match="author/name" mode="a2"/> B B B <!-- process affiliation elelemts --> B B B <xsl:template match="author/affiliation" mode="a2"> B B B B B B B <!-- debug info --> B B B B B B B <!--<gen-id> B B B B B B B B B B B <xsl:value-of select="generate-id(.)"/> B B B B B B B </gen-id>--> B B B B B B B <xsl:if test="./generate-id(.) = tokenize($affiliations, ' ')"> B B B B B B B B B B B <aff> B B B B B B B B B B B B B B B <xsl:copy-of select="org | sub | sup"/> B B B B B B B B B B B B B B B <xsl:value-of select="./text()"/> B B B B B B B B B B B </aff> B B B B B B B </xsl:if> B B B </xsl:template> B B B <!-- drop all --> B B B <xsl:template match="* | text() | @* | comment()"/> </xsl:stylesheet> Terry Badger On Wednesday, December 20, 2023 at 05:02:15 AM EST, Joga Singh Rawat jrawat@xxxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: Hi Friends, We need to remove duplicate affiliation that can be unique by @xreflabel. Could you please let me know any clue. Input <authorgroup> <author> <name>a</name> <affiliation xreflabel=b1b><org>..</org> First affiliation</affiliation> <affiliation xreflabel=b2b><sup>..</sup> Second affiliation</affiliation> </author> <author> <name>b</name> <affiliation xreflabel=b1b><org>..</org> First affiliation</affiliation> </author> <author> <name>c</name> <affiliation xreflabel=b3b><org>..</org> Third affiliation</affiliation> </author> <author> <name>d</name> <affiliation xreflabel=b1b><org>..</org> First affiliation</affiliation> <affiliation xreflabel=b4b><sub>..</sub> Forth affiliation</affiliation> </author> B Output <aug> <au>a</au> <au>b</au> <au>c</au> <au>d</au> <aff><org>b&</org> First affiliation</aff> <aff><sup>b&</sup> Second affiliation</aff> <aff><org>b&</org> Third affiliation</aff> <aff><sub>b&</sub> Forth affiliation</aff> B B B XSL-List info and archive EasyUnsubscribe (by email)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Remove duplicate affiliat, Joga Singh Rawat jra | Thread | [xsl] Got a slick XPath expression , Roger L Costello cos |
Re: [xsl] Got a slick XPath express, Liam R. E. Quin liam | Date | |
Month |