xsl-list
[Top] [All Lists]

RE: Sorting and replacing content

2004-09-01 02:41:25
Hi,

I can manage to make a stylesheet with an <xsl:if> for each <A> to <E>
asking whether the number is 1, 2, 3, 4 or 5, but I am sure 
there must be a
simpler way to do this. I can not use position() since the 
position af the
tags can change in the structure.

<Root>
<a>10</a>
<b>20</b>
<c>30</c>
<d>40</d>
<e>50</e>
...

...
<A>3</A>
<B>5</B>
<C>1</C>
<D>2</D>
<E>4</E>
</Root>

Result I need:

<no>30</no> <!-- C = 1 has to be first with the value of c 
(which is 30) -->
<no>40</no>
<no>10</no>
<no>50</no>
<no>30</no>

For example

  <xsl:template match="Root">
    <xsl:for-each select="A | A/following-sibling::*">
      <xsl:sort select="." data-type="number"/>
      <no>
        <xsl:value-of select="../*[name() = translate(name(current()), 'ABCDE', 
'abcde')]"/>
      </no>
    </xsl:for-each>
  </xsl:template>

Cheers,

Jarno


<Prev in Thread] Current Thread [Next in Thread>