Re: [xsl] Duplicate title issue

Subject: Re: [xsl] Duplicate title issue
From: "J.S. Rawat jogarawat@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 15 Apr 2025 15:57:41 -0000
Hi team no one found the solution

On Wed, 9 Apr 2025, 18:26 J.S. Rawat jogarawat@xxxxxxxxx, <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Hi Team,
> I am facing duplicate topicref problem. Please help.
> Output
> <map id="d1e1" xml:lang="en-us">
>    <title>1.0 Electrical</title>
>    <topicref1 navtitle="1.0 Electrical" href="electrical.dita">
>       <topicref4 navtitle="1.1 Wire" href="wire.dita"/>
>       <topicref2 navtitle="1.2 Switches" href="switches.dita">
>          <topicref4 navtitle="1.2.1 Switch type" href="switch_type.dita"/>
>          <topicref4 navtitle="1.2.2 How connected" href="how_th.dita"/>
>          <topicref4 navtitle="1.2.3 Switch operates" href="how_the.dita"/>
>          <topicref4 navtitle="1.2.4 Function" href="function.dita"/>
>          <topicref2 navtitle="1.3 Specialty switches"
> href="specialty_switches.dita"/>
>       </topicref2>
>       <topicref4 navtitle="1.2.1 Switch type" href="switch_type.dita"/>
>       <topicref4 navtitle="1.2.2 How connected" href="how_th.dita"/>
>       <topicref4 navtitle="1.2.3 Switch operates" href="how_the.dita"/>
>       <topicref4 navtitle="1.2.4 Function" href="function.dita"/>
>       <topicref2 navtitle="1.3 Specialty switches"
> href="specialty_switches.dita"/>
>    </topicref1>
>    <topicref1 navtitle="2.0 Switch symbols (Switcheally)"
> href="switch.dita"/>
> </map>
>
> Exptected Output
> <map id="d1e1" xml:lang="en-us">
>    <title>1.0 Electrical</title>
>    <topicref1 navtitle="1.0 Electrical" href="electrical.dita">
>       <topicref2 navtitle="1.1 Wire" href="wire.dita"/>
>       <topicref2 navtitle="1.2 Switches" href="switches.dita">
>          <topicref4 navtitle="1.2.1 Switch type" href="switch_type.dita"/>
>          <topicref4 navtitle="1.2.2 How connected" href="how_th.dita"/>
>          <topicref4 navtitle="1.2.3 Switch operates" href="how_the.dita"/>
>          <topicref4 navtitle="1.2.4 Function" href="function.dita"/>
>        </topicref2
>        <topicref2 navtitle="1.3 Specialty switches"
> href="specialty_switches.dita"/>
>    </topicref1>
>    <topicref1 navtitle="2.0 Switch symbols (Switcheally)"
> href="switch.dita"/>
> </map>
>
> xslt
>  <!--to Generate chapter TOC and filename will be .ditamap-->
>  <xsl:template match="topics">
>   <xsl:variable name="folder-name"><xsl:value-of
> select="@folder"/></xsl:variable>
>   <xsl:variable name="title"><xsl:value-of
> select="translate(topic[1]/title, ' - ', '_')"/></xsl:variable>
>   <xsl:variable name="topicName" select="lower-case(translate($title,
> ' ,.()?[]&amp;b":/%#', '_'))"/>
>   <xsl:result-document
> href="argos-dita/{$folder-name}/m_{$topicName}.ditamap" method="xml">
>    <map id="{generate-id()}" xml:lang="en-us">
>     <title>
>      <xsl:value-of select="topic[1]/title"/>
>     </title>
>     <xsl:for-each select="topic[@type = '1']">
>      <xsl:variable name="subsection" select="@filename"/>
>      <topicref1 href="{$subsection}.dita" navtitle="{title}">
>       <xsl:if test="body[not(child::*)]">
>        <xsl:attribute name="topichead">yes</xsl:attribute>
>       </xsl:if>
>       <xsl:if test="following-sibling::*[1][self::topic[@type = '2']] or
>                     following-sibling::*[1][self::topic[@type = '3']] or
>                     following-sibling::*[1][self::topic[@type = '4']]">
>         <xsl:call-template name="pullObjects"/>
>       </xsl:if>
>      </topicref1>
>     </xsl:for-each>
>     <xsl:call-template name="pullObjects"/>
>    </map>
>   </xsl:result-document>
>  </xsl:template>
>
>  <xsl:template match="topic[@type='2']" mode="pullObjects">
>   <xsl:variable name="subsection" select="@filename"/>
>   <topicref2 navtitle="{title}" href="{$subsection}.dita">
>    <xsl:if test="body[not(child::*)]">
>     <xsl:attribute name="topichead">yes</xsl:attribute>
>    </xsl:if>
>    <xsl:if test="following-sibling::*[1][self::topic[@type = '3']] or
>                  following-sibling::*[1][self::topic[@type = '4']]">
>     <xsl:call-template name="pullObjects"/>
>    </xsl:if>
>   </topicref2>
>   <xsl:call-template name="pullObjects"/>
>  </xsl:template>
>
>  <xsl:template match="topic[@type='3']" mode="pullObjects">
>   <xsl:variable name="subsection" select="@filename"/>
>   <topicref4 navtitle="{title}" href="{$subsection}.dita">
>    <xsl:if test="body[not(child::*)]">
>     <xsl:attribute name="topichead">yes</xsl:attribute>
>    </xsl:if>
>    <xsl:if test="following-sibling::*[1][self::topic[@type = '4']] or
>                  following-sibling::*[1][self::topic[@type = '5']]">
>     <xsl:call-template name="pullObjects"/>
>    </xsl:if>
>   </topicref4>
>   <xsl:call-template name="pullObjects"/>
>  </xsl:template>
>
>  <xsl:template match="topic[@type='4']" mode="pullObjects">
>   <xsl:variable name="subsection" select="@filename"/>
>   <topicref4 navtitle="{title}" href="{$subsection}.dita">
>    <xsl:if test="body[not(child::*)]">
>     <xsl:attribute name="topichead">yes</xsl:attribute>
>    </xsl:if>
>   </topicref4>
>   <xsl:call-template name="pullObjects"/>
>  </xsl:template>
>
>  <xsl:template name="pullObjects">
>   <xsl:apply-templates
> select="following-sibling::*[1][self::topic[@type='2']
>                                                     or
> self::topic[@type='3']
>                                                     or
> self::topic[@type='4']]" mode="pullObjects"/>
>  </xsl:template>
>
> thanks
> ...JSR

Current Thread