XML/XSLT stylesheet/following

Материал из Web эксперт
Перейти к: навигация, поиск

preceding and following

   <source lang="xml">

File: Data.xml <story>

 <chapter>
   <title>Chapter 1</title>
   <para>para 1</para>
 </chapter>
 <chapter>
   <title>Chapter 2</title>
   <para>item 1</para>
   <test />
   <para>item 2</para>
   <sect>
     <title>Chapter 2, Section 1</title>
     <para>item 3</para>
     <test />
     <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="test">
   Previous chapter: (
   <xsl:value-of select="preceding::chapter[1]/title" />
   ) Next chapter: (
   <xsl:value-of select="following::chapter/title" />
   )
   <xsl:apply-templates />
 </xsl:template>
 <xsl:template match="@*|node()">
   <xsl:copy>
     <xsl:apply-templates select="@*|node()" />
   </xsl:copy>
 </xsl:template>

</xsl:stylesheet> Output: <story>

 <chapter>
   <title>Chapter 1</title>
   <para>para 1</para>
 </chapter>
 <chapter>
   <title>Chapter 2</title>
   <para>item 1</para>
   
   Previous chapter: (
   Chapter 1
   ) Next chapter: (
   Chapter 3
   )
   
   <para>item 2</para>
   <sect>
     <title>Chapter 2, Section 1</title>
     <para>item 3</para>
     
   Previous chapter: (
   Chapter 1
   ) Next chapter: (
   Chapter 3
   )
   
     <para>para 2</para>
   </sect>
 </chapter>
 <chapter>
   <title>Chapter 3</title>
   <para>para A</para>
 </chapter>

</story>

</source>