RE: [xsl] Assigning serial numbers

Subject: RE: [xsl] Assigning serial numbers
From: "Ramesh, Marimuthu" <M.Ramesh@xxxxxxxxxxx>
Date: Sat, 10 Apr 2010 12:39:33 +0530
Try the below:

<xsl:template match="/">
       <table>

		<xsl:variable name="serial">
		<xsl:for-each select="//a/@href">
		<xsl:if test="not(for $x in //@id return
$x[$x=current()])">
		<xsl:copy-of select="ancestor::a[1]"/>
		</xsl:if>
		</xsl:for-each>
		</xsl:variable>

		<xsl:for-each select="$serial/a">
            <tr>
                <td><xsl:value-of select="position()"/></td>
                <td><xsl:value-of select="@href"/></td>
			</tr>
		</xsl:for-each>
        </table>
</xsl:template>

<xsl:template match="text()"/>

Regards,
Ramesh

-----Original Message-----
From: Siddhi Thakkar [mailto:siddhi.thakkar@xxxxxxxxxxxxxx]
Sent: Saturday, April 10, 2010 12:07 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Assigning serial numbers

Dear Experts,

I need to create an HTML table of dead links and assign serial numbers
to
it. Here is what my input looks like:

<book>
    <para id="p1"> .....some text..... <a href="p5">.....</a> ...some
text..... </para>
    <article id="p2"> ......some text..... <a href="p1">......</a> text2

</article>
    <section id="p3">.....some text....<a
href="p9">.....</a>...........</section>
</book>

Since two of the href attribute values listed above (p5 and p9) have no
corresponding id values, these are the dead links. Please note that I
have
got the list of such links, I AM ONLY STUCK AT PROVIDING SERIAL NOS.
Mentioned below is my XSL code:

<!--CODE START-->
<xsl:output method="html"/>
<xsl:template match="/">
       <table>
           <xsl:apply-templates/>
        </table>
</xsl:template>

<xsl:template match="//a">
        <xsl:for-each select="@href">
                <xsl:if test="not(for $x in //@id return
$x[$x=current()])">
                        <tr>
                                <td>
                                    <!-- This is where I would like to
write
the code to assign serial number-->
                                </td>
                                <td>
                                        <xsl:value-of
select="current()"/>
                                </td>
                    </tr>
              </xsl:if>
        </xsl:for-each>
</xsl:template>

<xsl:template match="text()"/>
<!--CODE END-->

DESIRED OUTPUT:
<table>
    <tr>
        <td>1</td>
        <td>p5</td>
    </tr>
    <tr>
        <td>2</td>
        <td>p9</td>
    </tr>
</table>

Thanks much,
Siddhi

Current Thread