Quackit Logo
FREE Hosting!
With every domain you register with ZappyHost you get FREE hosting.
Create free Flash websites

XPath Number Operators

Print Version

XPath also includes a range of operators you can take advantage of when using number values within your expressions.

Number Operators

Here's a list of number operators you can use in your XPath expressions:

OperatorDescription
+Used for addition.
-Used for subtraction.
*Used for multiplication.
divUsed for division.
modReturns the modulus of two numbers. (The modulus is the remainder after you divide the two numbers).

Number Functions

Here's a list of functions you can use with numbers in your XPath expressions:

FunctionDescription
ceiling()Returns the smallest integer that is larger than the value provided.
floor()Returns the largest integer that is smaller than the value provided.
round()Rounds the value provided to the nearest integer.
sum()Returns the sum of the two numbers provided.

Usage Example

The Source XML File

We'll use the following XML file, which contains a list of vegetables and their associated nutritional value:

<?xml version="1.0"?>
<food_list>
  <food_item type="vegetable">
    <name>Agar</name>
    <carbs_per_serving>81</carbs_per_serving>
    <fiber_per_serving>8</fiber_per_serving>
    <fat_per_serving>0.5</fat_per_serving>
    <kj_per_serving>1280</kj_per_serving>
  </food_item>
  <food_item type="vegetable">
    <name>Asparagus</name>
    <carbs_per_serving>1</carbs_per_serving>
    <fiber_per_serving>1</fiber_per_serving>
    <fat_per_serving>0</fat_per_serving>
    <kj_per_serving>40</kj_per_serving>
  </food_item>
  <food_item type="vegetable">
    <name>Cabbage</name>
    <carbs_per_serving>0</carbs_per_serving>
    <fiber_per_serving>1</fiber_per_serving>
    <fat_per_serving>0</fat_per_serving>
    <kj_per_serving>14</kj_per_serving>
  </food_item>
  <food_item type="vegetable">
    <name>Potato</name>
    <carbs_per_serving>21.5</carbs_per_serving>
    <fiber_per_serving>2</fiber_per_serving>
    <fat_per_serving>1</fat_per_serving>
    <kj_per_serving>460</kj_per_serving>
  </food_item>
  <food_item type="vegetable">
    <name>Pumpkin</name>
    <carbs_per_serving>6</carbs_per_serving>
    <fiber_per_serving>1</fiber_per_serving>
    <fat_per_serving>0.5</fat_per_serving>
    <kj_per_serving>150</kj_per_serving>
  </food_item>
  <food_item type="vegetable">
    <name>Yam</name>
    <carbs_per_serving>30.5</carbs_per_serving>
    <fiber_per_serving>2</fiber_per_serving>
    <fat_per_serving>0.5</fat_per_serving>
    <kj_per_serving>550</kj_per_serving>
  </food_item>
  <food_item type="vegetable">
    <name>Zucchini</name>
    <carbs_per_serving>1.5</carbs_per_serving>
    <fiber_per_serving>1.5</fiber_per_serving>
    <fat_per_serving>0.5</fat_per_serving>
    <kj_per_serving>55</kj_per_serving>
  </food_item>
</food_list>

The Requirement

This time, for each record, we'll display the carbohydrate value ("carbs"). We will also display a column that multiplies the number of carbs by 3 (representing 3 meals per day). Like this:

XPath number operator example

The Solution

We could modify the code from the previous lesson so that only the top 5 records are selected. We could achieve this using the XPath <= operator (along with the position() function), as follows:

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

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

<xsl:template match="food_list">
  <table border="1" style="background-color:#cccc00">
    <tr>
      <th>Food Item</th>
      <th>Carbs Per Serving</th>
      <th>Carbs Per Day (3 serves per day)</th>
    </tr>
    <xsl:for-each select="food_item">
      <tr>
        <td><xsl:value-of select="name"/></td>
        <td><xsl:value-of select="carbs_per_serving"/></td>
        <td><xsl:value-of select="carbs_per_serving * 3"/></td>
      </tr>
    </xsl:for-each>
  </table>
</xsl:template>

</xsl:stylesheet>

Enjoy this website?

  1. Add this page to your Favorites
  2. Link to this page (copy/paste into your own website or blog):
  3. Help support Quackit by making a donation

Oh, and thank you for supporting Quackit!

Need Website Content?
Get unique, quality digital content for your website.
  • 270+ Website Templates
  • 800+ Flash Templates
  • 25,000+ Images, Logos
  • 30,000+ e-Books
  • 15,000+ Scripts
  • 27,000+ Animated GIFs
  • 21,000+ Ringtones
  • ...and much more!
Get your content now!
$1.99 .info domain names!
© Copyright 2000 - 2010 Quackit.com