I have read the FAQ and think I have found a partial answer to my
problem. Seems to be Positional Grouping solution (10)
http://www.dpawson.co.uk/xsl/sect2/N4486.html
but my xslt skills are too weak to understand the solution!. I can't
even get the solution to work - been at this for hours now... very bad I
know.
I have the following XML - a Batch of Invoices a 3 line Invoice and a
2 line Invoice (there are a bunch of other tags and data inside these
but for simplicity I've left then out in this example).
<invoices>
<invoiceHeader> ...</invoiceHeader>
<invoiceLine>... </invoiceLine>
<invoiceLine>... </invoiceLine>
<invoiceLine>... </invoiceLine>
<invoiceHeader>... </invoiceHeader>
<invoiceLine>... </invoiceLine>
<invoiceLine>... </invoiceLine>
</invoices>
What I need is a <invoice> tag that surrounds the Header and Lines.
There is nothing that relates a Header to a Line apart from its position
i.e the header will be followed by its lines.
<invoices>
<invoice>
<invoiceHeader> ...</invoiceHeader>
<invoiceLine>... </invoiceLine>
<invoiceLine>... </invoiceLine>
<invoiceLine>... </invoiceLine>
</invoice>
<invoice>
<invoiceHeader>... </invoiceHeader>
<invoiceLine>... </invoiceLine>
<invoiceLine>... </invoiceLine>
<invoice>
</invoices>
How can I do this ?
Something like the partial example snippet given in the FAQ above would
give the following - but can somebody fill in the blanks - I am missing
the start template statements etc - but I do not know what they are
meant to be.
<xsl:for-each select=="invoiceHeader">
<invoice>
<invoiceHeader><xsl:value-of select="." />
</invoiceHeader>
<invoiceLine>
<xsl:for-each select=="following-sibling::invoiceLine[
count(preceding-sibling::invoiceHeader[1] | current()) == 1]">
<xsl:value-of select=="invoiceLine" />
</xsl:for-each>
</invoiceLine>
</invoice>
</xsl:for-each>
Thanks for any assistance
Peter