Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What XPath selects odd TRs from a table, starting with the third?

Tags:

dom

xhtml

xpath

I have a table:

<table>  
    <tr><td>1</td></tr>  
    <tr><td>2</td></tr>  
    <tr><td>3</td></tr>  
    <tr><td>4</td></tr>  
    <tr><td>5</td></tr>  
    <tr><td>6</td></tr>  
    <tr><td>7</td></tr>  
    <tr><td>8</td></tr>  
    <tr><td>9</td></tr>  
</table>

I need an XPath to select odd rows, starting on the third row (3, 5, 7, 9, etc.).

like image 920
Gordon Avatar asked Jul 04 '09 03:07

Gordon


2 Answers

"/table/tr[position() mod 2 = 1 and position() > 1]"
like image 60
lavinio Avatar answered Sep 21 '22 18:09

lavinio


I think 'position()' function of XPATH will do the job. Returns the index position of the node that is currently being processed. you need to do position() mod 2.

Here is XSLT solution

<xsl:for-each select="tr">
  <xsl:choose>
   <xsl:when test="position() mod 2 = 1 and position() > 1">
      ...do smthng ....
   </xsl:when>
   <xsl:otherwise>...do something else...</xsl:otherwise>
  </xsl:choose>
</xsl:foreach>
like image 44
Ratnesh Maurya Avatar answered Sep 19 '22 18:09

Ratnesh Maurya