O'Reilly logo

XSLT, 2nd Edition by Doug Tidwell

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

[2.0] Quantified Expressions—some and every

XPath 2.0 provides the some and every operators to perform a test against a sequence. The some operator returns true if the test is true for at least one item in the sequence, while every returns false if the test is false for at least one item in the sequence. Here is an example of the two operators:

<?xml version="1.0"?>
<!-- some-every.xsl -->
<xsl:stylesheet version="2.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xsl:output method="text"/>
 
  <xsl:variable name="English-months" as="xs:string*"
    select="('January', 'February', 'March', 'April',
             'May', 'June', 'July', 'August', 
             'September', 'October', 'November', 
             'December')"/>

  <xsl:template match="/">
    <xsl:text>&#xA;An example of the XPath 2.0 every and </xsl:text>
    <xsl:text>some operators:&#xA;&#xA;</xsl:text>
    <xsl:text>  If ANY month name has a string-length() </xsl:text>
    <xsl:text>&#xA;    greater than 4, print 'Yes,' otherwise</xsl:text>
    <xsl:text>&#xA;    print 'No'&#xA;&#xA;         </xsl:text>

    <xsl:value-of 
      select="if (some $m in $English-months satisfies 
              (string-length($m) &gt; 4)) then 'Yes' else 'No'"/>

    <xsl:text>&#xA;</xsl:text>
    <xsl:text>&#xA;&#xA;  If EVERY month name has a string-</xsl:text>
    <xsl:text>length() &#xA;    greater than 4, print 'Yes,' </xsl:text>
    <xsl:text>otherwise&#xA;    print 'No'&#xA;&#xA;         </xsl:text>

    <xsl:value-of 
      select="if (every $m in $English-months satisfies 
 (string-length($m) &gt; 4)) then 'Yes' else 'No'"/> ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required