top of page

Conditional Logic using XSLT

 

Example for IF clause in XSLT

 

XML Input File 

 

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

<GolfCountryClub>

  <GolfCourse NumberOfHoles="18">

    <Name>Bird's Nest Course</Name>

    <Yardage>7125</Yardage>

    <Par>72</Par>

    <Handicap>74.6</Handicap>

    <Slope>138</Slope>

  </GolfCourse>

  <GolfCourse NumberOfHoles="18">

    <Name>Eagle's Nest Course</Name>

    <Yardage>7198</Yardage>

    <Par>72</Par>

    <Handicap>73.5</Handicap>

    <Slope>136</Slope>

  </GolfCourse>

  <Member handicap="20">

    <RegularMember>

      <FirstName>Keith</FirstName>

      <LastName>Chong</LastName>

      <MembershipExpiry>2010-10-31</MembershipExpiry>

    </RegularMember>

  </Member>

  <Member handicap="0">

    <ExclusiveMember>

      <FirstName>James</FirstName>

      <MiddleName>Lion</MiddleName>

      <LastName>Chan</LastName>

      <ValetParkingID>124</ValetParkingID>

      <LockerNumber>10</LockerNumber>

    </ExclusiveMember>

  </Member>

  <Member handicap="25">

    <RestrictedMember>

      <FirstName>Allan</FirstName>

      <LastName>Chong</LastName>

      <MembershipExpiry>2010-10-31</MembershipExpiry>

      <LimitedPlay>Weekend Only</LimitedPlay>

    </RestrictedMember>

  </Member>

  <Member handicap="10">

    <RegularMember>

      <FirstName>Murray</FirstName>

      <MiddleName>Izzun</MiddleName>

      <LastName>Beaton</LastName>

      <MembershipExpiry>2010-09-30</MembershipExpiry>

    </RegularMember>

  </Member>

  <Employee>

    <FirstName>Craig</FirstName>

    <LastName>Salter</LastName>

    <EmployeeNumber>12463</EmployeeNumber>

  </Employee>

  <Employee>

    <FirstName>Ernest</FirstName>

    <LastName>Mah</LastName>

    <EmployeeNumber>15234</EmployeeNumber>

  </Employee>

  <ProShop>

    <GolfClub>

      <ManufacturerName>Tailor Built</ManufacturerName>

      <Quantity>20</Quantity>

      <ClubKind>Driver</ClubKind>

      <Loft>10.5 Degrees</Loft>

      <Shaft>Stiff</Shaft>

    </GolfClub>

    <GolfClub>

      <ManufacturerName>Clever Plains</ManufacturerName>

      <Quantity>5</Quantity>

      <ClubKind>Wedge</ClubKind>

      <Loft>60 Degrees</Loft>

      <Shaft>Regular</Shaft>

    </GolfClub>

    <BoxOfBalls>

      <ManufacturerName>A-Subject</ManufacturerName>

      <Quantity>20</Quantity>

      <ProductDetails>Pos. A High Spin/12</ProductDetails>

    </BoxOfBalls>

  </ProShop>

</GolfCountryClub>

 

XSLT File

 

<?xml version="1.0"?> 

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

<xsl:template match="/">

<xsl:for-each select="/GolfCountryClub/GolfCourse ">

<xsl:if test="@NumberOfHoles = '18'">

<xsl:text> Name of Hole 18 is </xsl:text>

<xsl:value-of select="Name"/>

<br/>

<xsl:text>Yardage of Hole 18 is </xsl:text>

<xsl:value-of select="Yardage"/>

</xsl:if>

</xsl:for-each>

</xsl:template>

</xsl:stylesheet>

 

Output

 

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

Name of Hole 18 is Bird's Nest Course

Yardage of Hole 18 is 7125

Name of Hole 18 is Eagle's Nest Course

Yardage of Hole 18 is 7198

 

Using XSLT Choose When

 

Input XML

 

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

<Items>

    <Item available="no">

    <Name>iPhone6</Name>

    <Serial>123</Serial>

    <Color>Black</Color>

    <Price>700</Price>

    </Item>

    <Item available="no">

        <Name>iPhone6</Name>

        <Serial>124</Serial>

        <Color>Black</Color>

        <Price>700</Price>

    </Item>

    <Item available="yes">

        <Name>iPhone5s</Name>

        <Serial>124</Serial>

        <Color>Black</Color>

        <Price>600</Price>

    </Item>

    <Item available="yes">

        <Name>iPhone5</Name>

        <Serial>124</Serial>

        <Color>White</Color>

        <Price>450</Price>

    </Item>

</Items>

 

XSLT File

 

 

<?xml version="1.0"?> 

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

<xsl:template match="/Items/Item">

        <xsl:choose>

                <xsl:when test="@available='yes'">

                        <xsl:value-of select="Name"/> 

                        <xsl:value-of select="Color"/>

                        <xsl:text> is Available for price </xsl:text> 

                        <xsl:value-of select="Price"/>

                </xsl:when>

                <xsl:when test="@available='no'">

                        <xsl:value-of select="Name"/> 

                        <xsl:value-of select="Color"/>

                        <xsl:text> is Not Available for price </xsl:text> 

                        <xsl:value-of select="Price"/>

                </xsl:when>

                <xsl:otherwise>

                        <xsl:value-of select="Name"/> 

                        <xsl:value-of select="Color"/>

                        <xsl:text> is Applicable for price </xsl:text> 

                        <xsl:value-of select="Price"/>

                </xsl:otherwise>

        </xsl:choose>

</xsl:template>

</xsl:stylesheet>

 

Output File

 

 

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

iPhone6Black is Not Available for price 700

iPhone6Black is Not Available for price 700

iPhone5sBlack is Available for price 600

iPhone5White is Available for price 450

 

 

 

bottom of page