Re: [xsl] Problem with generating sequence ids.

Subject: Re: [xsl] Problem with generating sequence ids.
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Wed, 6 Jul 2005 06:13:50 -0700 (PDT)
XSLT 2.0 spec has introduced a function to find a
random permutation of a sequence of integers. I don't
know if this helps, but Saxon 8.4 provides
implementation of this function along with the full
XSLT specification.

Please take my word, Saxon deserves 10/10 rating in
XSLT circles.

Regards,
Mukul

--- Lakshmi narayana <lchintala@xxxxxxxxxxxx> wrote:

> 
> Hi,
> I am facing the problem to create the IDs to the
> elements. See the
> following example XML file.
> <A1 sequence="1">
>          <B1 sequence="3"/>
>          <B2 sequence="1">
>                   <C1 sequence="4"></C1>
>                   <C2 sequence="11">
>                            <D1 sequence="01"/>
>                   </C2>
>          </B2>
> </A1>
> 
> I want the xslt code to get the result as
> <A1 sequence="1" id="001000000000000">
>          <B1 sequence="3" id="001003000000000"/>
>          <B2 sequence="1" id="001001000000000">
>                   <C1 sequence="4"
> id="001001004000000"></C1>
>                   <C2 sequence="11"
> id="001001011000000">
>                            <D1 sequence="01"
> id="001001011001000"/>
>                   </C2>
>          </B2>
> </A1>
> 
> Steps to generate id value :
> Note : Maximum width of id is 15.
>             Maximum width of sequence attribute is
> 3.
> 	If the sequence is like 3, we have to replace it by
> adding leading zeros
> and make that sequence as 3 digit number.
> 1) Get the sequence attribute value.
>    For example for node <A1>
> 	Assume that id=000000000000000
>     if(sequence attribute value is not null)
> 	{
> 		then id=sequnce value in 3 digit
> format+000000000000
> 			(eg: for A, seq value is 1. then the result id is
> 001000000000000)
> 	)
> 
> 	Here we filled the first 3 positions in the id
> value. Remaining all are
> zeros only.
> 2) Get the sequnece attribute value of child of A1.
> ie..B1 node.
> 	Because it is having the parent, id = (id value of
> parent)
> 	if(sequence attribute value of current node is not
> null)
> 	{
> 		get the sequence attribute value of current node.
> 		add this value to the computed id value of its
> parent.
> 		eg: its parent id value is 001000000000000
> 		    its sequence value is 3.
> 		Then the new id will come like this..
> 			parent id : 001000000000000
> 			sequenc   :    003
> 			--------------------------------------------
> 			Result Id        :  001003000000000
> 			---------------------------------------------
> 	}
> 		else
> 			current id = parent id.
> 3) for our xml, ids are like this
> 	000000000000000
> A1	001
> -----------------------------------
> 	001000000000000
> B1	      003
> -----------------------------------
> 	001003000000000
> B2	      001
> ------------------------------------------
> 	001001000000000
> 
> For C1: 001001000000000
> 	         004
> --------------------------------------
> 	001001004000000
> 
> Can any one give me the xslt code for this.
> 
> Thanks,
> Laxmi Narayana Babu.
> 
> 



		
____________________________________________________
Sell on Yahoo! Auctions  no fees. Bid on great items.  
http://auctions.yahoo.com/

Current Thread