After puzzling a little further, I came up with the following:
This pulls the inserted lines into the table cell with the matching
lines, which isn't bad for my application, as mostly, such extra lines
will be split-of parts of paragraphs anyway.
<xsl:template name="align-paragraphs">
<xsl:param name="a"/>
<xsl:param name="b"/>
<xsl:variable name="anchors" as="xs:string*">
<xsl:for-each-group select="$a/p/@name, $b/p/@name" group-by=".">
<xsl:if test="count(current-group()) = 2">
<xsl:sequence select="string(.)"/>
</xsl:if>
</xsl:for-each-group>
</xsl:variable>
<table>
<xsl:for-each select="$a/p[@name = $anchors]">
<xsl:variable name="name" select="@name"/>
<tr>
<td>
<p><xsl:apply-templates select="."/></p>
<xsl:call-template name="output-inserted-lines">
<xsl:with-param name="start" select="."/>
<xsl:with-param name="anchors" select="$anchors"/>
</xsl:call-template>
</td>
<td>
<p><xsl:apply-templates select="$b/p[@name =
$name]"/></p>
<xsl:call-template name="output-inserted-lines">
<xsl:with-param name="start" select="$b/p[@name
= $name]"/>
<xsl:with-param name="anchors" select="$anchors"/>
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
I didn't grasp the function idea entirely, but using a recursive
template works fine. The paragraphs that go into the table
still have internal structure that needs to be rendered.
<xsl:template name="output-inserted-lines">
<xsl:param name="start" as="node()"/>
<xsl:param name="anchors"/>
<xsl:variable name="next" select="$start/following-sibling::*[1]"/>
<xsl:if test="not($next/@name = $anchors)">
<xsl:if test="$next">
<p><xsl:apply-templates select="$next"/></p>
<xsl:call-template name="output-inserted-lines">
<xsl:with-param name="start" select="$next"/>
<xsl:with-param name="anchors" select="$anchors"/>
</xsl:call-template>
</xsl:if>
</xsl:if>
</xsl:template>
--~------------------------------------------------------------------
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>
--~--