Subject: Re: [xsl] Grouping help From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 22 Jul 2022 18:04:41 -0000 |
You missed to tell us what the desired output must be ... On Fri, Jul 22, 2022 at 10:15 AM rick@xxxxxxxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Hi All, > > > > I have a flat file that I am trying to add some hierarchy to. Here is an > example of the input: > > > > <?xml version="1.0" encoding="UTF-8"?> > > <root> > > <item level="2" number="A.">General</item> > > <item level="3" number="(1)">This task gives...</item> > > <item level="4" number="(a)">Replace the water...</item> > > <item level="4" number="(b)">Replace the barrier...</item> > > <item level="4" number="(c)">Replace the...</item> > > <item level="3" number="(2)">This task takes...</item> > > <note type="note" position="1">NOTE:</note> > > <note type="note" position="2">Refer to typical...</note> > > <item level="2" number="B.">References</item> > > <item level="2" number="C.">Tools/Equipment</item> > > <note type="note" position="1">NOTE:</note> > > <note type="note" position="2">When more than one...</note> > > <effectivity>Effective on:</effectivity> > > <effectivity>Effective on:</effectivity> > > <item level="2" number="D.">Consumable Materials</item> > > <item level="2" number="E.">Location Zones</item> > > <item level="2" number="F.">Procedure</item> > > <item level="3" number="(1)">Do a check...</item> > > <item level="3" number="(2)">Repair or replace...</item> > > <item level="3" number="(3)">Do this task...</item> > > <item level="3" number="(4)">Do a check...</item> > > <item level="3" number="(5)">Replace the sealant...</item> > > <item level="3" number="(6)">Do a check of...</item> > > <item level="4" number="(a)">Replace the water...</item> > > <item level="4" number="(b)">Replace the barrier...</item> > > <item level="4" number="(c)">Replace the...</item> > > <item level="3" number="(7)">Assemble the...</item> > > <item level="3" number="(8)">Seal all of the...</item> > > <note type="caution" position="1">CAUTION:</note> > > <note type="caution" position="2">MAKE SURE...</note> > > <item level="3" number="(9)">Apply a layer of grease as follows: > <para>Apply a layer of...</para></item> > > <note type="note" position="1">NOTE:</note> > > <note type="note" position="2">The grease can...</note> > > <item level="3" number="(10)">Use the <b>vacuum cups</b> ...</item> > > </root> > > > > My output is not quite right: > > > > <?xml version="1.0" encoding="UTF-8"?> > > <task> > > <pretopic lbl="A."> > > <title>General</title> > > <list1> > > <l1item lbl="(1)">This task gives...</l1item> > > <list2> > > <l2item lbl="(a)">Replace the water...</l2item> > > </list2> > > </list1> > > </pretopic> > > <pretopic lbl="B."> > > <title>References</title> > > </pretopic> > > <pretopic lbl="C."> > > <title>Tools/Equipment</title> > > <note type="note" position="1">NOTE:</note> > > <note type="note" position="2">When more than one...</note> > > <effectivity>Effective on:</effectivity> > > <effectivity>Effective on:</effectivity> > > </pretopic> > > <pretopic lbl="D."> > > <title>Consumable Materials</title> > > </pretopic> > > <pretopic lbl="E."> > > <title>Location Zones</title> > > </pretopic> > > <pretopic lbl="F."> > > <title>Procedure</title> > > <list1> > > <l1item lbl="(1)">Do a check...</l1item> > > <l1item lbl="(2)">Repair or replace...</l1item> > > <l1item lbl="(3)">Do this task...</l1item> > > <l1item lbl="(4)">Do a check...</l1item> > > <l1item lbl="(5)">Replace the sealant...</l1item> > > <l1item lbl="(6)">Do a check of...</l1item> > > <list2> > > <l2item lbl="(a)">Replace the water...</l2item> > > </list2> > > </list1> > > </pretopic> > > </task> > > > > Here is my current stylesheet: > > > > <?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:template match="/root"> > > <task> > > <xsl:for-each-group select="*" > group-starting-with="item[@level='2']"> > > <xsl:apply-templates select="." mode="group"/> > > </xsl:for-each-group> > > </task> > > </xsl:template> > > > > <xsl:template match="item[@level='2']" mode="group"> > > <pretopic lbl="{@number}"> > > <title>{.}</title> > > <xsl:for-each-group select="current-group() except ." > group-starting-with="item[@level='3'][@number='(1)']"> > > <xsl:choose> > > <xsl:when test="self::item[@number='(1)']"> > > <list1> > > <xsl:apply-templates select="." mode="group"/> > > </list1> > > </xsl:when> > > <xsl:otherwise> > > <xsl:apply-templates select="." mode="group"/> > > </xsl:otherwise> > > </xsl:choose> > > </xsl:for-each-group> > > </pretopic> > > </xsl:template> > > > > <xsl:template match="item[@level='3']" mode="group"> > > <l1item lbl="{@number}">{.}</l1item> > > <xsl:for-each-group select="current-group() except ." > group-starting-with="item[@level='4'][@number='(a)']"> > > <xsl:choose> > > <xsl:when test="self::item[@number='(a)']"> > > <list2> > > <xsl:apply-templates select="." mode="group"/> > > </list2> > > </xsl:when> > > <xsl:otherwise> > > <xsl:apply-templates select="." mode="group"/> > > </xsl:otherwise> > > </xsl:choose> > > </xsl:for-each-group> > > </xsl:template> > > > > <xsl:template match="item[@level='4']" mode="group"> > > <l2item lbl="{@number}">{.}</l2item> > > </xsl:template> > > > > <xsl:template match="*" mode="group"> > > <xsl:copy-of select="current-group()"/> > > </xsl:template> > > > > </xsl:stylesheet> > > > > This example is a modified version of Mikebs XHTML version on page 340 of > his book. Any help would be appreciated. Thank you. > > > > Rick > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/782854> (by > email <>) > -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- To avoid situations in which you might make mistakes may be the biggest mistake of all ------------------------------------ Quality means doing it right when no one is looking. ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play ------------------------------------- To achieve the impossible dream, try going to sleep. ------------------------------------- Facts do not cease to exist because they are ignored. ------------------------------------- Typing monkeys will write all Shakespeare's works in 200yrs.Will they write all patents, too? :) ------------------------------------- Sanity is madness put to good use. ------------------------------------- I finally figured out the only reason to be alive is to enjoy it.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Grouping help, Martin Honnen martin | Thread | Re: [xsl] Grouping help, rick@xxxxxxxxxxxxxx |
Re: [xsl] Grouping help, Martin Honnen martin | Date | Re: [xsl] Grouping help, rick@xxxxxxxxxxxxxx |
Month |