xsl-list
[Top] [All Lists]

following-sibling problem

2004-10-27 05:55:41
This is driving me crazy.

Source:

                        <bullets>
                                <bullet level="0" marker-type="inherited">
                                        <content>Heading</content>
                                </bullet>
                                <bullet level="1" marker-type="inherited">
                                        <content>Bullet 1a</content>
                                </bullet>
                                <bullet level="1" marker-type="inherited">
                                        <content>Bullet 1b</content>
                                </bullet>
                                <bullet level="2" marker-type="inherited">
                                        <content>Bullet 2a - “a 
quote’’</content>
                                </bullet>
                                <bullet level="2" marker-type="inherited" 
id="bullet-1">
                                        <content>Bullet 2b</content>
                                </bullet>
                        </bullets>

Templates:

<xsl:template match="key:bullet[(_at_)level='0']" mode="normal">
  <h2><xsl:value-of select="."/></h2>
  <ul>
<xsl:apply-templates select="following-sibling::key:bullet[(_at_)level='1']"/>
  </ul>
</xsl:template>

<xsl:template match="key:bullet[(_at_)level='1']">
  <li class="level1">
    <xsl:value-of select="."/>
    <xsl:if test="following-sibling::key:bullet[(_at_)level='2']">
      <ul>
<xsl:apply-templates select="following-sibling::key:bullet[(_at_)level='2']"/>
      </ul>
    </xsl:if>
  </li>
</xsl:template>

<xsl:template match="key:bullet[(_at_)level='2']">
  <li class="level2">
    <xsl:value-of select="."/>
  </li>
</xsl:template>


Output:

        <h2>Heading</h2>
        <ul>
          <li class="level1">Bullet 1a<ul>
              <li class="level2">Bullet 2a - “a quote’’</li>
              <li class="level2">Bullet 2b</li>
            </ul>
          </li>
          <li class="level1">Bullet 1b<ul>
              <li class="level2">Bullet 2a - “a quote’’</li>
              <li class="level2">Bullet 2b</li>
            </ul>
          </li>
        </ul>

What I want:

        <h2>Heading</h2>
        <ul>
          <li class="level1">Bullet 1a</li>
          <li class="level1">Bullet 1b<ul>
              <li class="level2">Bullet 2a - “a quote’’</li>
              <li class="level2">Bullet 2b</li>
            </ul>
          </li>
        </ul>

In other words, I only want the template for level 2 applied when there is a following-sibling immediately following a level 1 bullet.

Bruce


<Prev in Thread] Current Thread [Next in Thread>