| Subject: Building a hierarchy based on siblings From: Ryan Graham <Ryan.Graham@xxxxxxxxxxxxx> Date: Thu, 10 Jun 2004 18:34:38 -0700 | 
Hi all,
I am having some trouble getting the correct template matches written to
build a hierarchy.
I have similar to the following input XML:
<sect1>
	<para>First Paragraph</para>
	<para>* First list item</para>
	<para>* Second list item</para>
	<para>* Third list item <emphasis>emphasized text</emphasis></para>
	<para>Second Paragraph</para>
	<para>Third paragraph</para>
	<!-- Start new list-->
	<para>* First list item #2</para>
	<para>* Second list item #2</para>
	<para>Another paragraph</para>
</sect1>
I would like to put all para nodes that begin with "* " into a list
structure and cut off the first two characters when processed, to get the
following output:
<para>First Paragraph</para>
<itemizedlist>
	<listitem>
		<para>First list item</para>
	</listitem>
	<listitem>	
		<para>Second list item</para>
	</listitem>
	<listitem>
		<para>Third list item <emphasis>emphasized
text</emphasis></para>
	<listitem>
</itemizedlist>
<para>Second Paragraph</para>
<para>Third paragraph</para>
<itemizedlist>
	<listitem>
		<para>First list item #2</para>
	</listitem>
	<listitem>	
		<para>Second list item #2</para>
	</listitem>
</itemizedlist>
<para>Another paragraph</para>
I was using this to get the <listitems> built:
<xsl:template match="para">
  <xsl:choose>
    <xsl:when test="substring(node()[1], 0, 3) = '* '>
      <itemizedlist>
	  <listitem>
	  <xsl:value-of select="substring(node()[1], 3)"/>
	  <xsl:apply-templates select="node()[position() > 1]"/>
	  </listitem>
	</itemizedlist>
    </xsl:when>
    <xsl:otherwise>
      <para>
	  <xsl:apply-templates/>
	</para>
    </xsl:otherwise>
</xsl:template>
But with this match, every <para> that starts with "* " becomes its own
itemizedlist with one listitem.  Is there an efficient way to do this using
a recursive template, without creating duplicate output?
I appreciate any and all suggestions!
Thanks,
Ryan
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| RE: [xsl] Very Basic Generic Filter, M. David Peterson | Thread | RE: [xsl] Building a hierarchy base, M. David Peterson | 
| RE: [xsl] Very Basic Generic Filter, M. David Peterson | Date | xsl:variable and key, Sameer N | 
| Month |