[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: adding hierarchy
Jim,
This solution applies to input where, as I described, the ListItem
elements have all been normalized into simple item elements, with
@level attributes indicating their nesting level (as positive integers):
<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>
Note this is recursive: it'll keep going until it runs out of list levels.
I haven't presented the other templates that actually map input to
output. Try it with the standard shallow-copy identity template and
you should see it work.
Please ask for any explanations needed.
Cheers,
Wendell
At 04:14 PM 3/11/2008, you wrote:
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 |
- adding hierarchy
- Jim_Albright - 11 Mar 2008 20:15:29 -0000
- Message not available
- Message not available
- Wendell Piez - 11 Mar 2008 21:55:09 -0000 <=
- <Possible follow-ups>
- Jim_Albright - 11 Mar 2008 20:40:01 -0000
|
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
|
Atom 0.3 |
|
|