Re: [xsl] Generating attributes from the position of an element

Subject: Re: [xsl] Generating attributes from the position of an element
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Tue, 1 Jun 2010 13:02:32 +0530
I would have done this as following,

<xsl:template match="node() | @*">
   <xsl:copy>
      <xsl:apply-templates select="node() | @*" />
   </xsl:copy>
</xsl:template>

<xsl:template match="@ID">
   <xsl:attribute name="Id">
      <xsl:value-of select="count(../preceding-sibling::w) + 1" />
   </xsl:attribute>
</xsl:template>

PS: this is not tested.

On Tue, Jun 1, 2010 at 12:22 PM, GC!bor TC3th <roysy@xxxxxxxx> wrote:
> Dear All,
>
> I have the following xml file and wish to generate ID-s based on the
> position to the <w> elements with the following XSL file, however, the
> end result of the ID attribute is always 1, I have no idea why.
>
> The xml file is
>
> <?oxygen
RNGSchema="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all
.rng"
> type="xml"?>
> <?xml-stylesheet type="text/xsl" href="template.xsl"?>
> <text>
> B  B <w ID=" " >car</w>
> B  B <w ID=" ">dog</w>
> B  B <w ID=" ">cat</w>
> B  B <w ID=" ">house</w>
>
> </text>
>
> The XSL file is
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> B  B xmlns:tei="http://www.tei-c.org/ns/1.0";
xmlns="http://www.tei-c.org/ns/1.0";
> B  B version="2.0" exclude-result-prefixes="tei"
> B  B xpath-default-namespace="http://www.tei-c.org/ns/1.0";
> B  B >
>
>
> B  B <xsl:template match="@*|node()|comment()|processing-instruction()"
> priority="-5">
> B  B  B  B <xsl:copy><xsl:apply-templates
> select="@*|node()|comment()|processing-instruction()"/></xsl:copy>
> B  B  B  B <xsl:apply-templates select="/text/w/@ID"/>
>
> B  B </xsl:template>
>
> <xsl:template match="@ID">
> B  B  B  B  <xsl:attribute name="Id">
> B  B  B  B  B  B <countNo><xsl:value-of select="position()"/></countNo>
>
> B  B  B  B </xsl:attribute>
>
> B  B </xsl:template>
>
> Result:
>
> <?xml version="1.0" encoding="UTF-8"?><?oxygen
>
RNGSchema="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all
.rng"
> type="xml"?><?xml-stylesheet type="text/xsl"
> href="template.xsl"?><text>
> B  B <w Id="1">car</w>
> B  B <w Id="1">dog</w>
> B  B <!-- Why does not increment the number of the ID? B -->
> <w Id="1">cat</w>
> B  B <w Id="1">house</w>
>
> </text>
>
> Thanks,
>
> Gabor



--
Regards,
Mukul Gandhi

Current Thread