On 09.05.2019 15:44, Manuel Souto Pico terminolator(_at_)gmail(_dot_)com wrote:
Do you think I can use XSLT to do this more or less easily?
Yes, XSLT 3 can do it easily, using tokenize to split the segments and
then grouping to group the different segments together:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:output indent="yes"/>
<xsl:param name="lb" as="xs:string"><br></xsl:param>
<xsl:template match="tu">
<xsl:variable name="split">
<xsl:apply-templates mode="split"/>
</xsl:variable>
<xsl:for-each-group select="$split/tuv/seg" group-by="position()
mod count($split/tuv[1]/seg)">
<tu tuid="{position()}">
<xsl:apply-templates select="current-group()/snapshot()/.."/>
</tu>
</xsl:for-each-group>
</xsl:template>
<xsl:mode name="split" on-no-match="shallow-copy"/>
<xsl:template match="seg" expand-text="yes" mode="split">
<xsl:for-each select="tokenize(., '(' || $lb || ')+')">
<seg>{.}</seg>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/ej9EGcD/1
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--