xsl-list
[Top] [All Lists]

Re: [xsl] grabbing chunks of preceding-siblings between tables

2007-10-04 11:23:07
Hi Everyone,

Thanks for the great suggestions. Got it working perfect.

Cheers,

Spencer

On 10/4/07, Mukul Gandhi <gandhi(_dot_)mukul(_at_)gmail(_dot_)com> wrote:
Here is another XSLT 1.0 solution:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">

 <xsl:output method="xml" indent="yes" />

 <xsl:template match="root">
   <root>
     <xsl:for-each select="table">
       <xsl:variable name="x" select="generate-id()" />
       <table>
         <xsl:copy-of
select="preceding-sibling::*[generate-id(following-sibling::table[1])
= $x][not(self::table)]" />
         <xsl:copy-of select="*" />
       </table>
     </xsl:for-each>
   </root>
 </xsl:template>

</xsl:stylesheet>

On 10/4/07, Spencer Tickner <spencertickner(_at_)gmail(_dot_)com> wrote:
Hi List,

Thanks in advance for the help. I'm doing some pre-processing of a XML
Dump of tables. I'm trying to associate header information in the
table to the table itself. I'm having difficulty figuring out how to
do this.. Anyway, examples always seem to say it better (XSLT 2.0 is
fine):

XML

<?xml version="1.0"?>
<root>
       <title1>Title for Table 1</title1>
       <title2>sub-title for Table 1</title2>
       <caption>Caption for Table 1</caption>
       <para_norm>Any number of different paragraphs that belong with Table
1</para_norm>
       <table>
               <cell>Foo</cell>
               <cell>Bar</cell>
       </table>
       <title2>Table 2 only has subtitle</title2>
       <caption>Caption for Table 2</caption>
       <para_diff>Any number of different paragraphs that belong with Table
2</para_diff>
       <table>
               <cell>Foo</cell>
               <cell>Bar</cell>
       </table>
       <title1>Title for Table 3</title1>
       <title2>sub-title for Table 3</title2>
       <caption>Caption for Table 3</caption>
       <para_norm>Any number of different paragraphs that belong with Table
3</para_norm>
       <table>
               <cell>Foo</cell>
               <cell>Bar</cell>
       </table>
</root>

Desired XML Output:

<?xml version="1.0"?>
<root>
       <table>
               <title1>Title for Table 1</title1>
               <title2>sub-title for Table 1</title2>
               <caption>Caption for Table 1</caption>
               <para_norm>Any number of different paragraphs that belong 
with Table
1</para_norm>
               <cell>Foo</cell>
               <cell>Bar</cell>
       </table>
       <table>
               <title2>Table 2 only has subtitle</title2>
               <caption>Caption for Table 2</caption>
               <para_diff>Any number of different paragraphs that belong 
with Table
2</para_diff>
               <cell>Foo</cell>
               <cell>Bar</cell>
       </table>
       <table>
               <title1>Title for Table 3</title1>
               <title2>sub-title for Table 3</title2>
               <caption>Caption for Table 3</caption>
               <para_norm>Any number of different paragraphs that belong 
with Table
3</para_norm>
               <cell>Foo</cell>
               <cell>Bar</cell>
       </table>
</root>

I've tried a number of different things, but can't seem to translate
"Take all elements between <table> and add as child to following
<table>" into XSLT. Any help would be greatly appreciated.

Thanks,

Spencer


--
Regards,
Mukul Gandhi

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--