[xsl] passing_vars_as_counters

Subject: [xsl] passing_vars_as_counters
From: mankar@xxxxxxxxxxxxxxx
Date: Sat, 31 Jul 2004 18:35:15 +0300
Hallo,
i am generating dynamically xml outputs from oracle which have the
following structure.
Each SHAPE element has exactly one ELEM_INFO child and one COORDINATES
child. Each
ELEM_INFO element has an odd number of ELEM_INFO_ITEM children.Each three
sequential
ELEM_INFO_ITEM children describe a differrent sub_element of the overall
shape,so i 've
separated them in triplets just to show you this. The first ELEM_INFO_ITEM
element of each
triplet contains a number (1, 7 and 11 in this example).These numbers
denote the position, in
the latter COORDINATES_ITEM SET, where coordinates referring to differrent
sub_elements start.
For example,the <ELEM_INFO_ITEM>1</ELEM_INFO_ITEM> of the first triplet,
denotes that coordinates
referring to the first sub_element(1001) start from the first
COORDINATES_ITEM
element in the COORDINATES_ITEM set which is
<COORDINATES_ITEM>68</COORDINATES_ITEM>. Similarly
the <ELEM_INFO_ITEM>7</ELEM_INFO_ITEM> of the second triplet denotes that
coordinates
referring to the second sub_element(1002) start from the seventh
COORDINATES_ITEM
element in the COORDINATES_ITEM set which is
<COORDINATES_ITEM>20</COORDINATES_ITEM> etch..
I just want to use xslt to mark the positions of these COORDINATE_ITEM
elements.
To be more specific i need to generate exactly the same document except for
that the specific
COORDINATE_ITEM elements will also contain a character like d, for example
concatenated with
their number value so that they are clearly discriminated from the other
COORDINATE_ITEM
elements.

The source xml is the one following:


<SHAPE>
- <ELEM_INFO>
     <ELEM_INFO_ITEM>1</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>1001</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>5000</ELEM_INFO_ITEM>

     <ELEM_INFO_ITEM>7</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>1002</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>5000</ELEM_INFO_ITEM>

     <ELEM_INFO_ITEM>11</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>1003</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>5000</ELEM_INFO_ITEM>
  </ELEM_INFO>
- <COORDINATES>
    <COORDINATES_ITEM>68</COORDINATES_ITEM>
    <COORDINATES_ITEM>54</COORDINATES_ITEM>
    <COORDINATES_ITEM>72/COORDINATES_ITEM>
    <COORDINATES_ITEM>65</COORDINATES_ITEM>
    <COORDINATES_ITEM>83</COORDINATES_ITEM>
    <COORDINATES_ITEM>17</COORDINATES_ITEM>
    <COORDINATES_ITEM>20</COORDINATES_ITEM>
    <COORDINATES_ITEM>60</COORDINATES_ITEM>
    <COORDINATES_ITEM>24</COORDINATES_ITEM>
    <COORDINATES_ITEM>55</COORDINATES_ITEM>
    <COORDINATES_ITEM>98</COORDINATES_ITEM>
    <COORDINATES_ITEM>25</COORDINATES_ITEM>
  <COORDINATES>
</SHAPE>


The desired xml should look like this:a d character is just added in the
content of each
of the specified positions, so that the position of the COORDINATES_ITEM
element denoting
the starting coordinate of a diferrent sub_element is clearly specified.

<SHAPE>
- <ELEM_INFO>
     <ELEM_INFO_ITEM>1</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>1001</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>5000</ELEM_INFO_ITEM>

     <ELEM_INFO_ITEM>7</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>1002</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>5000</ELEM_INFO_ITEM>

     <ELEM_INFO_ITEM>11</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>1003</ELEM_INFO_ITEM>
     <ELEM_INFO_ITEM>5000</ELEM_INFO_ITEM>
  </ELEM_INFO>
- <COORDINATES>
    <COORDINATES_ITEM>d68</COORDINATES_ITEM>
    <COORDINATES_ITEM>54</COORDINATES_ITEM>
    <COORDINATES_ITEM>72/COORDINATES_ITEM>
    <COORDINATES_ITEM>65</COORDINATES_ITEM>
    <COORDINATES_ITEM>83</COORDINATES_ITEM>
    <COORDINATES_ITEM>17</COORDINATES_ITEM>
    <COORDINATES_ITEM>d20</COORDINATES_ITEM>
    <COORDINATES_ITEM>60</COORDINATES_ITEM>
    <COORDINATES_ITEM>24</COORDINATES_ITEM>
    <COORDINATES_ITEM>55</COORDINATES_ITEM>
    <COORDINATES_ITEM>d98</COORDINATES_ITEM>
    <COORDINATES_ITEM>25</COORDINATES_ITEM>
  <COORDINATES>
</SHAPE>

Can this be achieved through xslt.Note that the source xml is generated
dynamically, so
i can't foreknow how many triplets representing the diferrent sub-elemets
appear in it.

Regards
Manousos
Athens

Current Thread