Subject: Re: [xsl] adding hierarchy From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Tue, 11 Mar 2008 17:53:39 -0400 |
<xsl:template match="div[@type='section']"> <xsl:for-each-group select="*" group-adjacent="boolean(self::item)"> <xsl:choose> <xsl:when test="current-grouping-key()"> <!-- we pass this test when we're a set of item elements --> <xsl:call-template name="make-list"> <xsl:with-param name="items" select="current-group()"/> <-- passing in all the items to make a list, starting with level 1 --> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="current-group()"/> </xsl:otherwise> </xsl:choose> </xsl:for-each-group> </xsl:template>
<xsl:template name="make-list"> <xsl:param name="items" select="()"/> <xsl:param name="level" select="1"/> <list> <xsl:for-each-group select="$items" group-adjacent="@level > $level"> <!-- grouping items into bunches of contiguous items at this level and at greater levels --> <xsl:choose> <xsl:when test="current-grouping-key()"> <!-- we pass this test when we're at greater levels, so we need to make a list --> <xsl:call-template name="make-list"> <xsl:with-param name="items" select="current-group()"/> <xsl:with-param name="level" select="$level + 1"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- items at this level will be handled normally --> <xsl:apply-templates select="current-group()"/> </xsl:otherwise> </xsl:choose> </xsl:for-each-group> </list> </xsl:template>
Cheers, Wendell
I want to wrap all ListItem1, ListItem2, ListItem3 elements in appropriate <list></list> to show the level of the lists. So when finished, I can count the number of ancestor::list to determine the level of the items. I've tried using samples in the FAQ but I only get part way. Time to ask for help.
starting with
<?xml version="1.0" encoding="UTF-8"?> <scripture> <div type="book" osisID="Matthew"> <div type="section" scope="Mat.1.1-Mat.1.17"> <title> <seg>Makholo a dzinza ya Yezu Kirixtu.</seg> </title> <p> <milestone osisID="Mat.1" n="1"/> <milestone osisID="Mat.1.1" n="1"/> <seg>Yezu Kirixtu abaliwa ku mimba ya Dhavidhi, dzinza ya baba Abharamu.</seg> </p> <ListItem1> <milestone osisID="Mat.1.2" n="2"/> <seg>Abharamu abala Izaki;</seg> </ListItem1> <ListItem2> <seg>Izaki abala Djakobu;</seg> </ListItem2> <ListItem3> <seg>This isn't in the document but it would be allowed </seg> </ListItem3> <ListItem3> <seg>more allowed</seg> </ListItem3> <ListItem2> <seg>Djakobu abala Djuda na abale ace.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.3" n="3"/> <seg>Djuda na nkazi wace Tamari abala Faresi na Zara; </seg> </ListItem2> <ListItem2> <seg>Faresi abala Esiromu;</seg> </ListItem2> <ListItem2> <seg>Esiromu abala Aramu.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.4" n="4"/> <seg>Aramu abala Aminadabu;</seg> </ListItem2> <ListItem2> <seg>Aminadabu abala Nasoni;</seg> </ListItem2> <ListItem2> <seg>Nasoni abala Salamoni.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.5" n="5"/> <seg>Salamoni na nkazi wace Rakabi abala Bozi;</seg> </ListItem2> <ListItem2> <seg>Bozi na nkazi wace Ruti abala Obedi;</seg> </ListItem2> <ListItem2> <seg>Obedi abala Djesi;</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.6" n="6"/> <seg>Djesi abala mambo Dhavidhi;</seg> </ListItem2> <ListItem1> <seg>Dhavidhi abala Salomoni na nkazi akhali wa Uriya; </seg> </ListItem1> <ListItem2> <milestone osisID="Mat.1.7" n="7"/> <seg>Salomoni abala Reboamu;</seg> </ListItem2> <ListItem2> <seg>Reboamu abala Abiya;</seg> </ListItem2> <ListItem2> <seg>Abiya abala Asa.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.8" n="8"/> <seg>Asa Abala Djozafati;</seg> </ListItem2> <ListItem2> <seg>Djozafati abala Djoramu;</seg> </ListItem2> <ListItem2> <seg>Djoramu abala Uziya.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.9" n="9"/> <seg>Uziya abala Djotamu;</seg> </ListItem2> <ListItem2> <seg>Djotamu abala Akasi;</seg> </ListItem2> <ListItem2> <seg>Akasi abala Ezekiya.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.10" n="10"/> <seg>Ezekiya abala Manasi;</seg> </ListItem2> <ListItem2> <seg>Manasi abala Amoni;</seg> </ListItem2> <ListItem2> <seg>Amoni abala Djosiya.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.11" n="11"/> <seg>Djosiya abala Djekoniya na abale ace, pa midzidzi ikhadatapatwa mbumba ya madjudeu kwenda ku dziko ya Babilonya.</seg> </ListItem2> <ListItem1> <milestone osisID="Mat.1.12" n="12"/> </ListItem1> <ListItem2> <seg>Djekoniya abala Salatiyeri;</seg> </ListItem2> <ListItem2> <seg>Salatiyeri abala Zolobabeli.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.13" n="13"/> <seg>Zolobabeli abala Abiyudi;</seg> </ListItem2> <ListItem2> <seg>Abiyudi abala Eliakimu;</seg> </ListItem2> <ListItem2> <seg>Eliakimu abala Azori.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.14" n="14"/> <seg>Azori abala Sadoki;</seg> </ListItem2> <ListItem2> <seg>Sadoki abala Akimu;</seg> </ListItem2> <ListItem2> <seg>Akimu abala Eliyudi.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.15" n="15"/> <seg>Eliyudi abala Elizari;</seg> </ListItem2> <ListItem2> <seg>Elizari abala Matani;</seg> </ListItem2> <ListItem2> <seg>Matani abala Djakobu.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.16" n="16"/> <seg>Djakobu abala Zuze, mamuna ace Mariya na baba wa Yezu wa kunfuya; abala Yezu, anadziwika dzina ya Kirixtu.</seg> </ListItem2> <p> <milestone osisID="Mat.1.17" n="17"/> <seg>Na tenepa, asagumanika makholo khumi na manai a dzinza ya madjudeu, tomera kuna Abharamu mpaka kuna Dhavidhi; tomera kuna Dhavidhi mpaka kubuluka kwawo pa kutapatwa ku Babilonya, kusagumanika khumi na manai a makholo; na kubulukira ku Babilonya mpaka kufikira pa kubalwa kwa Misiya, kusagumanika pontho makholo khumi na manai.</seg> </p> </div> </div> </scripture>
desired output with <list></list> added I identified these with <!-- added --> You do not need to add the comment.
<?xml version="1.0" encoding="UTF-8"?> <scripture> <div type="book" osisID="Matthew"> <div type="section" scope="Mat.1.1-Mat.1.17"> <title> <seg>Makholo a dzinza ya Yezu Kirixtu.</seg> </title> <p> <milestone osisID="Mat.1" n="1"/> <milestone osisID="Mat.1.1" n="1"/> <seg>Yezu Kirixtu abaliwa ku mimba ya Dhavidhi, dzinza ya baba Abharamu.</seg> </p> <list><!-- added --> <ListItem1> <milestone osisID="Mat.1.2" n="2"/> <seg>Abharamu abala Izaki;</seg> </ListItem1> <list><!-- added --> <ListItem2> <seg>Izaki abala Djakobu;</seg> </ListItem2> <list><!-- added --> <ListItem3> <seg>This isn't in the document but it would be allowed</seg> </ListItem3> <ListItem3> <seg>more allowed</seg> </ListItem3> </list><!-- added --> <ListItem2> <seg>Djakobu abala Djuda na abale ace.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.3" n="3"/> <seg>Djuda na nkazi wace Tamari abala Faresi na Zara;</seg> </ListItem2> <ListItem2> <seg>Faresi abala Esiromu;</seg> </ListItem2> <ListItem2> <seg>Esiromu abala Aramu.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.4" n="4"/> <seg>Aramu abala Aminadabu;</seg> </ListItem2> <ListItem2> <seg>Aminadabu abala Nasoni;</seg> </ListItem2> <ListItem2> <seg>Nasoni abala Salamoni.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.5" n="5"/> <seg>Salamoni na nkazi wace Rakabi abala Bozi; </seg> </ListItem2> <ListItem2> <seg>Bozi na nkazi wace Ruti abala Obedi;</seg> </ListItem2> <ListItem2> <seg>Obedi abala Djesi;</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.6" n="6"/> <seg>Djesi abala mambo Dhavidhi;</seg> </ListItem2> </list><!-- added --> <ListItem1> <seg>Dhavidhi abala Salomoni na nkazi akhali wa Uriya; </seg> </ListItem1> <list><!-- added --> <ListItem2> <milestone osisID="Mat.1.7" n="7"/> <seg>Salomoni abala Reboamu;</seg> </ListItem2> <ListItem2> <seg>Reboamu abala Abiya;</seg> </ListItem2> <ListItem2> <seg>Abiya abala Asa.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.8" n="8"/> <seg>Asa Abala Djozafati;</seg> </ListItem2> <ListItem2> <seg>Djozafati abala Djoramu;</seg> </ListItem2> <ListItem2> <seg>Djoramu abala Uziya.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.9" n="9"/> <seg>Uziya abala Djotamu;</seg> </ListItem2> <ListItem2> <seg>Djotamu abala Akasi;</seg> </ListItem2> <ListItem2> <seg>Akasi abala Ezekiya.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.10" n="10"/> <seg>Ezekiya abala Manasi;</seg> </ListItem2> <ListItem2> <seg>Manasi abala Amoni;</seg> </ListItem2> <ListItem2> <seg>Amoni abala Djosiya.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.11" n="11"/> <seg>Djosiya abala Djekoniya na abale ace, pa midzidzi ikhadatapatwa mbumba ya madjudeu kwenda ku dziko ya Babilonya. </seg> </ListItem2> </list><!-- added --> <ListItem1> <milestone osisID="Mat.1.12" n="12"/> </ListItem1> <list><!-- added --> <ListItem2> <seg>Djekoniya abala Salatiyeri;</seg> </ListItem2> <ListItem2> <seg>Salatiyeri abala Zolobabeli.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.13" n="13"/> <seg>Zolobabeli abala Abiyudi;</seg> </ListItem2> <ListItem2> <seg>Abiyudi abala Eliakimu;</seg> </ListItem2> <ListItem2> <seg>Eliakimu abala Azori.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.14" n="14"/> <seg>Azori abala Sadoki;</seg> </ListItem2> <ListItem2> <seg>Sadoki abala Akimu;</seg> </ListItem2> <ListItem2> <seg>Akimu abala Eliyudi.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.15" n="15"/> <seg>Eliyudi abala Elizari;</seg> </ListItem2> <ListItem2> <seg>Elizari abala Matani;</seg> </ListItem2> <ListItem2> <seg>Matani abala Djakobu.</seg> </ListItem2> <ListItem2> <milestone osisID="Mat.1.16" n="16"/> <seg>Djakobu abala Zuze, mamuna ace Mariya na baba wa Yezu wa kunfuya; abala Yezu, anadziwika dzina ya Kirixtu.</seg> </ListItem2> </list><!-- added --> </list><!-- added --> <p> <milestone osisID="Mat.1.17" n="17"/> <seg>Na tenepa, asagumanika makholo khumi na manai a dzinza ya madjudeu, tomera kuna Abharamu mpaka kuna Dhavidhi; tomera kuna Dhavidhi mpaka kubuluka kwawo pa kutapatwa ku Babilonya, kusagumanika khumi na manai a makholo; na kubulukira ku Babilonya mpaka kufikira pa kubalwa kwa Misiya, kusagumanika pontho makholo khumi na manai.</seg> </p> </div> </div> </scripture>
After I get this to work I will change all the <ListItemX> to just <item>.
Jim Albright 704 843-0582 JAARS, Speeding Bible Translation Wycliffe, Partners in Bible Translation
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] adding hierarchy, Wendell Piez | Thread | [xsl] adding hierarchy, Jim_Albright |
Re: [xsl] Processing on both a docu, Mark Peters | Date | RE: [xsl] Processing on both a docu, Bjorndahl, Brad |
Month |