Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Preceding-sibling and following-sibling

File: Data.xml <story>   <chapter>     <title>Chapter 1</title>     <para>para 1</para>   </chapter>   <chapter>     <title>Chapter 2</title>     <para>item 1</para>     <para>item 2</para>     <sect>       <title>Chapter 2, Section 1</title>       <para>item 3</para>       <para>para 2</para>     </sect>   </chapter>   <chapter>     <title>Chapter 3</title>     <para>para A</para>   </chapter> </story> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"   version="1.0">   <xsl:output method="xml" omit-xml-declaration="yes" indent="no" />   <xsl:template match="chapter">     <chapter>       Previous chapter: (       <xsl:value-of select="preceding-sibling::chapter[1]/title" />       ) Next chapter: (       <xsl:value-of select="following-sibling::chapter/title" />       )       <xsl:text>   </xsl:text>       <xsl:apply-templates />     </chapter>   </xsl:template>    </xsl:stylesheet> Output:   <chapter>       Previous chapter: (              ) Next chapter: (       Chapter 2       )               Chapter 1     para 1   </chapter>   <chapter>       Previous chapter: (       Chapter 1       ) Next chapter: (       Chapter 3       )               Chapter 2     item 1     item 2            Chapter 2, Section 1       item 3       para 2        </chapter>   <chapter>       Previous chapter: (       Chapter 2       ) Next chapter: (              )               Chapter 3     para A   </chapter>