Subject: RE: [xsl] Interesting problem: Combing tables sections into one table From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 16 Aug 2006 19:10:16 +0100 |
I would certainly tackle this as a multi-pass transformation, just to keep my head clear. It's not clear to me entirely what the phases are, for example is there always a date in the top entry on each page? But once you've worked that out, I don't think any of the phases are really that difficult. For example, filling in the missing dates is simply <xsl:template match="date[not(normalize-space)]" <date> <xsl:value-of select="../preceding-sibling::date[normalize-space()]"/> </date> </xsl:template> Similarly, converting the dates to ISO format is no great hassle; and when you've done that, the sort should be easy. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Ed Yau [mailto:eyau@xxxxxxxxxxxxxxx] > Sent: 16 August 2006 18:57 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Interesting problem: Combing tables sections > into one table > > Hi, > > I wanted to float this by everyone. I have a very > complicated XSLT problem (imho), and want to seek opinions as > to how best to proceed with it. > Hope someone's up for the challenge, as it baffles my > relatively small XSLT knowledge. > > I'm getting through XML from a data-extraction system > that has been used on phone bills. The phone bills are > normally folded in half and stapled in middle in a booklet format. > The XML looks something like this: > > <page no='3'> > ... > <t-left> > <tr> > <date> 26 Jan </date> > <time> 11:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date> </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date>27 Jan </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tf> > ... footer info ... > </tf> > </t-left> > ... > > <t-right> > <tr> > <date> 26 feb </date> > <time> 11:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date> </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date>27 feb </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tf> > ... footer info ... > </tf> > </t-right> > > </page> > > <page no='4'> > ... > <t-left> > <tr> > <date> 28 Jan </date> > <time> 11:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date> </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date>29 Jan </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tf> > ... footer info ... > </tf> > </t-left> > ... > </page> > > What I am aiming for should look something like this: > > <table> > <tr> > <date> 28 Jan </date> > <time> 11:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date>28 Jan </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tr> > <date>29 Jan </date> > <time> 12:45 </time> > <destination> XXX </destination> > </tr> > <tf> > ... footer info ... > </tf> > </table> > > The two main challenges I'm faced with is therefore: > 1) reordering the entries as they should appear > - the order the appear in the XML is not the right order due > to the folding over the booklet > 2) filling 'empty' dates with preceeding dates > > I've considered the following approaches: > 1) A 'pull' approach where I recurse over the tables > bring them together, doing the sorting. > - The ordering of the pages is hard to predict. > There is a pattern, but trying to code this in XSLT far > defeats me. I think this is much the harder approach. > The main problem I've found is that the way you > recurse depends on the total number of sections. So I'd have > to find some way of counting this first. > > 2) Trying to sort by date. This is tricky because the > months are not in number format, and there are lots of > missing dates that I'd have to fill in at the same time. I'm > assuming it's possible to do this as a 1-pass approach, but > it would certainly be simpler as a 2-pass. > > Any thoughts on this welcome. Anyone have any > experience of this? Which approach do you think is likely to > work best? > > Many thanks in advance, > Ed
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Interesting problem: Combing , Ed Yau | Thread | [xsl] Are nested brackets legal? Is, Abel Online |
Re: [xsl] Dividing a long document , Jay Bryant | Date | RE: [xsl] Need help with XSLT: addi, Michael Kay |
Month |