Subject: [xsl] Including precediing-siblings with the first group From: "rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 18 Aug 2022 14:27:35 -0000 |
Hi All, I have an input file that I want to split into files at each section. The first section should include everything before it. Below are my input, desired output, and stylesheet. I am pretty sure this is the simplest approach, but any suggestions would be appreciated. Thank you. Rick <?xml version="1.0" encoding="UTF-8"?> <chapter id="Assault_gd1g1l1027760"> <title>Transferred Intent</title> <toc/> <para/> <section id="GI_gd1g1o1030579"> <title>General Comments</title> <para>General comments here</para> </section> <section id="GI_gd1g1p1030593"> <title>InstructionbTransferred IntentbDifferent Offense</title> <para>Instructions here</para> </section> <section id="GI_gd1g1q1030657"> <title>InstructionbTransferred IntentbDifferent Person or Propertyo?=</title> <para>More instructions here</para> </section> </chapter> <?xml version="1.0" encoding="UTF-8"?> <root> <file> <title>Transferred Intent</title> <toc/> <para/> <section id="GI_gd1g1o1030579"> <title>General Comments</title> <para>General comments here</para> </section> </file> <file> <section id="GI_gd1g1p1030593"> <title>InstructionbTransferred IntentbDifferent Offense</title> <para>Instructions here</para> </section> </file> <file> <section id="GI_gd1g1q1030657"> <title>InstructionbTransferred IntentbDifferent Person or Property</title> <para>More instructions here</para> </section> </file> </root> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" version="3.0" expand-text="yes"> <xsl:output indent="yes"/> <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="/chapter"> <root> <xsl:for-each-group select="*" group-starting-with="section"> <xsl:choose> <xsl:when test="not(self::section)"> <file> <xsl:apply-templates select="current-group()"/> <xsl:apply-templates select="following-sibling::section[1]"/> </file> </xsl:when> <xsl:when test="self::section[preceding-sibling::section]"> <file> <xsl:apply-templates select="current-group()"/> </file> </xsl:when> </xsl:choose> </xsl:for-each-group> </root> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath expression which co, Norm Tovey-Walsh ndw | Thread | Re: [xsl] Including precediing-sibl, Martin Honnen martin |
Re: [xsl] XPath expression which co, Martin Honnen martin | Date | Re: [xsl] Including precediing-sibl, Martin Honnen martin |
Month |