[Home] [By Thread] [By Date] [Recent Entries]
Am 09.05.2019 um 21:55 schrieb Martin Honnen martin.honnen@xxxxxx:
Am 09.05.2019 um 21:42 schrieb Manuel Souto Pico terminolator@xxxxxxxxx: An adaption of the previous suggestion, but now with escaped XML syntax in the sample input, to then use parse-xml-fragment, is at https://xsltfiddle.liberty-development.net/ej9EGcD/5 and does B <xsl:template match="tu">
B B B B B <xsl:variable name="split">
B B B B B B B B B <xsl:apply-templates mode="split"/>
B B B B B </xsl:variable>
B B B B B <xsl:for-each-group select="$split/tuv/seg" group-by="position()
mod count($split/tuv[1]/seg)">
B B B B B B B B B <tu tuid="{position()}">
B B B B B B B B B B B B B <xsl:apply-templates
select="current-group()/snapshot()/.."/>
B B B B B B B B B </tu>
B B B B B </xsl:for-each-group>
B </xsl:template>B <xsl:mode name="split" on-no-match="shallow-copy"/> B <xsl:template match="seg" expand-text="yes" mode="split">
B B B B B <xsl:for-each-group select="parse-xml-fragment(.)/node()"
group-ending-with="br">
B B B B B B B B B <seg>{.}</seg>
B B B B B </xsl:for-each-group>
B </xsl:template>For HTML parsing you would need to use an extension or David Carlisle's HTML parser available on Github, but the approach then is the same. Of course handling different elements like various list constructs needs more code but once you have a tree you can process the "normal" XSLT way you can write more templates and/or more modes for various processing steps to address more complex input structures.
|

Cart



