descendant demo : descendant « XSLT stylesheet « XML






descendant demo



File: Data.xml

<chapter>
  <para>para1</para>
  <figure>
    <title>title 1</title>
    <graphic fileref="pic1.jpg" />
  </figure>
  <para>para2</para>
  <sect1>
    <para>para3</para>
    <figure>
      <title>"He Lights"</title>
      <graphic fileref="pic2.jpg" />
    </figure>
    <para>line 1</para>
    <sect2>
      <para>line 2</para>
      <figure>
        <title>title 2</title>
        <graphic fileref="pic1.jpg" />
      </figure>
    </sect2>
  </sect1>
</chapter>

File: Transform.xslt

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:output method="html" />

  <xsl:template match="chapter">
    <html>
      <body>
        <b>Pictures:</b>
        <br />
        <xsl:for-each select="descendant::figure">
          <a href="#{generate-id(graphic)}">
            <xsl:value-of select="title" />
          </a>
          <br />
        </xsl:for-each>

        <xsl:apply-templates />
      </body>
    </html>
  </xsl:template>


  <xsl:template match="para">
    <p>
      <xsl:apply-templates />
    </p>
  </xsl:template>


  <xsl:template match="graphic">
    <center>
      <a name="{generate-id(.)}">
        <img src="{@fileref}" />
      </a>
      <b>
        <xsl:value-of select="../title" />
      </b>
    </center>
  </xsl:template>

  <xsl:template match="figure/title" />


</xsl:stylesheet>


Output:

<html>
   <body><b>Pictures:</b><br><a href="#d2e11">title 1</a><br><a href="#d2e27">"He Lights"</a><br><a href="#d2e43">title 2</a><br>
        
      <p>para1</p>
        
          
          
      <center><a name="d2e11"><img src="pic1.jpg"></a><b>title 1</b></center>
        
        
      <p>para2</p>
        
          
      <p>para3</p>
          
            
            
      <center><a name="d2e27"><img src="pic2.jpg"></a><b>"He Lights"</b></center>
          
          
      <p>line 1</p>
          
            
      <p>line 2</p>
            
              
              
      <center><a name="d2e43"><img src="pic1.jpg"></a><b>title 2</b></center>
            
          
        
      
   </body>
</html>

 








Related examples in the same category

1.descendant::tag name
2.select="descendant::title[last()]"
3.select="descendant::figure/title[last()]"
4.value-of select="descendant::lastName"