following-sibling::node()[1][not(self::NL)] : following sibling « XSLT stylesheet « XML

XML
1. CSS Style
2. SVG
3. XML Schema
4. XQuery
5. XSLT stylesheet
Java
XML Tutorial
Java Tutorial
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
XML » XSLT stylesheet » following sibling 
following-sibling::node()[1][not(self::NL)]


File: Data.xml

<?xml version="1.0"?>
<PLAY>
  <TITLE>Nothing</TITLE>

  <FM>
    <P>
      A
    </P>
    <P>
      T
    </P>
  </FM>

  <PERSONAE>
    <TITLE>D</TITLE>

    <PERSONA>D</PERSONA>

    <PGROUP>
      <PERSONA>C</PERSONA>
      <PERSONA>B</PERSONA>
      <GRPDESCR>f</GRPDESCR>
    </PGROUP>

    <PERSONA>F</PERSONA>
    <PERSONA>H</PERSONA>
    <PERSONA>B</PERSONA>

    <PGROUP>
      <PERSONA>MARGARET</PERSONA>
      <PERSONA>URSULA</PERSONA>
      <GRPDESCR>gentlewomen attending on Hero.</GRPDESCR>
    </PGROUP>

    <PERSONA>Messengers, Watch, Attendants, &amp;c.</PERSONA>
  </PERSONAE>

</PLAY>

File: Transform.xslt

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

  <xsl:template match="SCENE">
    <xsl:variable name="flat">
      <NL />
      <xsl:apply-templates mode="phase1" />
    </xsl:variable>
    <xsl:apply-templates
      select="$flat/NL[following-sibling::node()]" mode="phase2" />
  </xsl:template>

  <xsl:template match="SPEECH" mode="phase1">
    <speaker>
      <xsl:value-of select="SPEAKER" />
    </speaker>
    <xsl:copy-of select="node() except SPEAKER" />
  </xsl:template>

  <xsl:template match="NL" mode="phase2">
    <line>
      <xsl:apply-templates
        select="following-sibling::node()[1][not(self::NL)]" mode="phase2" />
    </line>
  </xsl:template>

  <xsl:template match="node()" mode="phase2">
    <xsl:copy-of select="." />
    <xsl:apply-templates
      select="following-sibling::node()[1][not(self::NL)]" mode="phase2" />
  </xsl:template>
</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?>
  Nothing

  
    
      A
    
    
      T
    
  

  
    D

    D

    
      C
      B
      f
    

    F
    H
    B

    
      MARGARET
      URSULA
      gentlewomen attending on Hero.
    

    Messengers, Watch, Attendants, &amp;c.
  

 
Related examples in the same category
1. following-sibling demo
2. following-sibling
3. select="following-sibling::*[1]/contact/name/firstName"
4. select="following-sibling::notification[count(preceding-sibling::employeeName[1] | current()) = 1]"
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.