[xsl] problem reqarding link

Subject: [xsl] problem reqarding link
From: "Joga Singh Rawat jrawat@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 18 Jan 2024 08:02:08 -0000
Hi Team,

I am not able to get required OUTPUT of @sn <link> because of hash (#)
problem.  Please help in this regard.

 

Input

<html>

<p>Text. <a href="#bibx" class="bibcit">1</a>  xxx <a href="#biby"
class="bibcit">2</a></p>

<p class="Bib_entry" id='bibx">xxxxxxxxxxxx</p>

<p class="Bib_entry" id='biby">xxxxxxxxxxxx</p>

</html>

 

output

<html>

<p>Text. <link rid="bibx" class="bibcit" sn="1">1</link>  xxx <link
rid="biby" class="bibcit" sn="2">2</a></p>

<bib id='bibx" sn="1">xxxxxxxxxxxx</bib>

<bib id='biby" sn="2">xxxxxxxxxxxx</bib>

</html>

 

Xsl

<xsl:key name="ids" match="p[@class = 'Bib_entry'] use="@id"/>

 

<xsl:template match="p[@class='Bib_entry']/@id | @href">

<xsl:for-each select="key('ids', .)">

  <xsl:if test="name(.)= 'p'">

   <xsl:text/>

   <xsl:number format="1" count="p[@class = 'Bib_entry']" level="any"
from="html"/>

  </xsl:if>

</xsl:for-each>

</xsl:template>

 

<xsl:template match="a">

<xsl:variable name="rid" select="substring-after(@href, '#')"/>

<xsl:choose>

  <xsl:when test="@class = 'bibcit'">

   <link class="bibcit">

      <xsl:attribute name="rid">

       <xsl:value-of select="$rid"/>

      </xsl:attribute>

    <xsl:attribute name="sn">

     <xsl:apply-templates select="@href"/>

    </xsl:attribute>

    <xsl:apply-templates/>

   </link>

  </xsl:when>

</xsl:choose>

</xsl:template>

 

<xsl:template match="p[@class='Bib_entry']">

<bib>

  <xsl:call-template name="id"/>

  <xsl:attribute name="sn">

   <xsl:apply-templates select="@id"/>

  </xsl:attribute>

  <xsl:apply-templates/>

</bib>

</xsl:template>

 

Thanks a lot in advance

.JSR

Current Thread