[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Selecting a particular node of an XML generated from

Subject: Selecting a particular node of an XML generated from Excel
From: Karlmarx R <karlmarxr@xxxxxxxxx>
Date: Wed, 9 Nov 2011 04:49:17 +0800 (SGT)
 Selecting a particular node of an XML generated from
Hello,

I have a requirement where I am not sure of the best possible
solution. The XML is generated from Excel. The problem is with missing rows
which makes it difficult to select a particular node. Better I explain using
this sample XML: [Pls ignore any case mismatch or spell mistakes]

<root>
   
<Row>
        <Cell><Data>u1</Data></Cell>
        <Cell><Data>13.7 billion
years ago</Data></Cell>
        <Cell><Data>Hydrogen and helium nuclei form in
the first three minutes...</Data></Cell>
        <Cell
ss:Index="107"><Data>107</Data></Cell>
        <Cell><Data>108</Data></Cell>
        <Cell><Data>109</Data></Cell>
        <Cell
ss:Index="115"><Data>115</Data></Cell>
        <Cell><Data>116</Data></Cell>
        <Cell><Data>YES</Data></Cell> <!-- this is 117th row. But position()
!= 117  -->
        <Cell><Data>118</Data></Cell>
    </Row>
    <Row>
       
<Cell><Data>u2</Data></Cell>
        <Cell><Data>2 million
yearsgo</Data></Cell>
        <Cell><Data>blahlah</Data></Cell>
       
<Cell><Data>1</Data></Cell>
        <Cell><Data>2</Data></Cell>
        <!--
SO MANY ROWS HERE -->
        <Cell><Data>YES</Data></Cell>   <!-- THIS IS
117th row (Cell) i.e. position() = 117 -->
        <!--GAIN SO MANY ROWS HERE
-->
        <Cell><Data>199</Data></Cell>
       
<Cell><Data>200</Data></Cell>  <!--ASSUME THIS IS 200TH ROW -->       
   
</Row>
    <Row>
        <Cell><Data>u3</Data></Cell>
       <Cell><Data>20th
century</Data></Cell>
        <Cell><Data>blah blah</Data></Cell>
       
<Cell ss:Index="117"><Data>NO</Data></Cell>   <!-- THIS IS 117th row But
position() != 117  -->
        <Cell ss:Index="199"><Data>119</Data></Cell>
    </Row>   
</root>


The excel to xml convertion results in empty excel
columns getting stripped out in the resulting <Cell>. And so, the number of
<Cell>'s vary for each <Row>. Now, if I want to select a particular <Cell>,
say 117th <Cell>, I need to check any @ss:Index exist and if so, count()  the
number of the preceding-sibling's + the preceding @ss:Index value. So, for
117th Cell value, 


(A) in Row 1, 2nd <Cell> of @ss:Indiex is 117th
(B) in
Row 2, position() = 117 is the required one
(C) in Row 3, @ss:Indiex matching
117
(D) if none matching found, ignore


In my requirement, I need to select
the N-th <Cell> value and check whether it is 'yes' or 'no' and then process.
I am trying approach something like this (incomplete)



<xsl:for-each
select="Cell">
  ...

  <xsl:variable name="last-index "
select="preceding-sibling::Cell[@ss:Index][1]"/>  

 <!-- the ABOVE giver the
last <Cell>'s ss:Index value.

Now I need to do something like
count(preceding-sibling::Cell[@ss:Index][1]) - this may be wrong, but here is
what I having trouble and need suggestions and best approach to solve this, to
select N-th <Cell>, where N is known and can be 1 to X (=max possible value).
Thanks in advance!. 



Regards,
karl

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.