This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: getting the node position in source xml in a variable


Hi Gurvinder,

> I dont think that when i convert using msxml:node-set i get a single
> root node...

Then you're not passing in result tree fragments, which means that you
don't need to use the msxsl:node-set() function at all :)

Try:

<xsl:template name="lookup">
  <xsl:param name="name"/>
  <xsl:param name="datanodes"/>
  <xsl:param name="displaynodes"/>
  <select name="{$name}">
    <xsl:for-each select="$displaynodes">
      <xsl:sort select="." />
      <xsl:variable name="num"
                    select="count(preceding-sibling::*) + 1"/>
      <xsl:variable name="data"
                    select="$datanodes[$num]" />
      <option id="{$data}" value="{$data}">
        <xsl:value-of select="$data"/>-<xsl:value-of select="."/>
      </option>
    </xsl:for-each>
  </select>
</xsl:template>

Note how the $num variable is being set - to the number of preceding
siblings that the display node has, plus one. Thus $num is based on
the position of the display node within the original source rather
than on its position within the sorted list.

You could instead use the xsl:number element:

<xsl:template name="lookup">
  <xsl:param name="name"/>
  <xsl:param name="datanodes"/>
  <xsl:param name="displaynodes"/>
  <select name="{$name}">
    <xsl:for-each select="$displaynodes">
      <xsl:sort select="." />
      <xsl:variable name="num">
        <xsl:number />
      </xsl:variable>
      <xsl:variable name="data"
                    select="$datanodes[$num]" />
      <option id="{$data}" value="{$data}">
        <xsl:value-of select="$data"/>-<xsl:value-of select="."/>
      </option>
    </xsl:for-each>
  </select>
</xsl:template>

Though that won't give you the same number unless all the display
nodes are of the same type (i.e. they're elements with the same name).

Cheers,

Jeni

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


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]