Use boolean operator in if statement : if « 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 » if 
Use boolean operator in if statement


File: Data.xml

<?xml version="1.0"?>
<booklist>
  <book category="S">
    <title>title 1</title>
    <author>author 1</author>
  </book>
  <book category="FC">
    <title>author 1</title>
    <author>author 1</author>
  </book>
  <book category="FC">
    <title>title 3</title>
    <author>author 1</author>
  </book>
  <book category="CS">
    <title>title 4</title>
    <author>author 1</author>
    <author>author 2</author>
    <author>author 3</author>
    <author>author 4</author>
  </book>
</booklist>

File: Transform.xslt

<?xml version="1.0"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">
  <xsl:template match="/">
    <html>
      <body>
        <xsl:variable name="all-books" select="//book" />
        <xsl:for-each select="$all-books">
          <h1>
            <xsl:value-of select="title" />
          </h1>
          <p>
            <i>by</i>
            <xsl:value-of select="author[1]" />
            <xsl:if test="count(author)!=1">
              and others
            </xsl:if>
          </p>
          <xsl:variable name="others" select="$all-books[./@category=current()/@category and not(. is current())]" />
          <xsl:if test="$others">
            <p>Other books in this category:</p>
            <ul>
              <xsl:for-each select="$others">
                <li>
                  <xsl:value-of select="title" />
                </li>
              </xsl:for-each>
            </ul>
          </xsl:if>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>

</xsl:transform>

Output:
<html>
   <body>
      <h1>title 1</h1>
      <p><i>by</i>author 1
      </p>
      <h1>author 1</h1>
      <p><i>by</i>author 1
      </p>
      <p>Other books in this category:</p>
      <ul>
         <li>title 3</li>
      </ul>
      <h1>title 3</h1>
      <p><i>by</i>author 1
      </p>
      <p>Other books in this category:</p>
      <ul>
         <li>author 1</li>
      </ul>
      <h1>title 4</h1>
      <p><i>by</i>author 1
                       and others
                     
      </p>
   </body>
</html>

 
Related examples in the same category
1. An example of if-then-else logic in XSLT 1.0
2. Compare value of attribute with if statement
3. if statement with and operator
4. if statement in for-each loop
5. if statement and value compare
6. Branching
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.