xsl-list
[Top] [All Lists]

Re: First Occurance Problem

2003-03-24 10:12:45
Hi Deepak,

I have the following template

<agg1>
   <agg2>             <----Can repeat 1 to N times
      <tag1></tag1>   <----Both tag1 and tag2 can be empty
      <tag2></tag2>
   </agg2>
</agg1>

Problem:

I want to return a xml with the following template

<agg1>
   <agg2>             <----Can occur only once
      <tagx></tagx>   <----tag1 will have the value from the first
                           populated occurance of tag1 in the source xml
   </agg2>
</agg1>

You can locate the value of the first populated occurrence of <tag1>
with:

  (/agg1/agg2/tag1[string(.)])[1]

The [string(.)] predicate tests whether the <tag1> element has a
string value or not. The brackets ensure that the [1] predicate
applies to the position of the <tag1> element within all the <tag1>
elements in the document rather than just those found within a
particular <agg2> element. You can therefore build your result as:

<xsl:template match="agg1">
  <agg1>
    <agg2>
      <tagx>
        <xsl:value-of select="(agg2/tag1[string(.)])[1]" />
      </tagx>
    </agg2>
  </agg1>
</xsl:template>

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



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