Select one from the target value list : select « XSLT stylesheet « XML






Select one from the target value list


File: Data.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<SCENE REF="4.3">
  <SPEECH>
    <SPEAKER>A</SPEAKER>
    I
    <NL />
  </SPEECH>

  <SPEECH>
    <SPEAKER>B</SPEAKER>
    O
    <NL />
  </SPEECH>
</SCENE>


File: Transform.xslt

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:variable name="backcolor" select="'#FFFFCC'" />

  <xsl:template match="SCENE|PROLOGUE|EPILOGUE">
    <HTML>
      <HEAD>
        <TITLE>
          <xsl:value-of select="TITLE" />
        </TITLE>
      </HEAD>
      <BODY BGCOLOR='{$backcolor}'>
        <xsl:apply-templates />
      </BODY>
    </HTML>
  </xsl:template>

  <xsl:template match="SPEECH">
    <TABLE>
      <TR>
        <TD WIDTH="160" VALIGN="TOP">
          <xsl:apply-templates select="SPEAKER" />
        </TD>
        <TD VALIGN="TOP">
          <xsl:apply-templates select="STAGEDIR|LINE" />
        </TD>
      </TR>
    </TABLE>
  </xsl:template>

  <xsl:template match="TITLE">
    <H1>
      <CENTER>
        <xsl:apply-templates />
      </CENTER>
    </H1>
    <HR />
  </xsl:template>

  <xsl:template match="SPEAKER">
    <B>
      <xsl:apply-templates />
      <xsl:if test="not(position()=last())">
        <BR />
      </xsl:if>
    </B>
  </xsl:template>

  <xsl:template match="SCENE/STAGEDIR">
    <CENTER>
      <H3>
        <xsl:apply-templates />
      </H3>
    </CENTER>
  </xsl:template>

  <xsl:template match="SPEECH/STAGEDIR">
    <P>
      <I>
        <xsl:apply-templates />
      </I>
    </P>
  </xsl:template>

  <xsl:template match="LINE/STAGEDIR">
    [
    <I>
      <xsl:apply-templates />
    </I>
    ]
  </xsl:template>

  <xsl:template match="SCENE/SUBHEAD">
    <CENTER>
      <H3>
        <xsl:apply-templates />
      </H3>
    </CENTER>
  </xsl:template>

  <xsl:template match="SPEECH/SUBHEAD">
    <P>
      <B>
        <xsl:apply-templates />
      </B>
    </P>
  </xsl:template>

  <xsl:template match="LINE">
    <xsl:apply-templates />
    <BR />
  </xsl:template>

</xsl:stylesheet>

Output:

<HTML>
   <HEAD>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <TITLE></TITLE>
   </HEAD>
   <BODY BGCOLOR="#FFFFCC">
        
      <TABLE>
         <TR>
            <TD WIDTH="160" VALIGN="TOP"><B>A</B></TD>
            <TD VALIGN="TOP"></TD>
         </TR>
      </TABLE>
      
        
      <TABLE>
         <TR>
            <TD WIDTH="160" VALIGN="TOP"><B>B</B></TD>
            <TD VALIGN="TOP"></TD>
         </TR>
      </TABLE>
      
   </BODY>
</HTML>

 








Related examples in the same category

1.Parent and attribute
2.select="../@attribute"
3.child
4.Get value from tag with {}
5.Node selection by level
6.Select Node by index
7.Select attribute value and output to a list
8.context position and context size
9.select with if then else
10.select="document('')/*/book:category[@code=current()/@category]/@desc"
11.select distinct values
12.select="@*" (at)
13.Select one tag from a list of tags
14.select="employees/employee[2]/following::contact/name/firstName"
15.select="employees/employee[2]/preceding::contact/name/firstName"
16.select="employee[@dept='programming']"
17.select="employees/head:header/namespace::head"
18.value-of select="person[position()=3]/name"