XSLT2.0で便利になった機能(10) every,some式を使う

every,some式は、言ってみれば「一発屋」ではないかと思います.例えば非常に簡単ですが、次のような例を考えてみましょう.
 
<xsl:variable name="price" as="xs:integer+" select="(1000,980,900,800,790,700)"/>
 
このときすべてのpriceの要素が1000以下であることをチェックするのには、every式をつかえば
 
<xsl:if test="every $p in $price satisfies $p le 1000">
 
で済みます.でもこの例ではあまりありがたみがあまり感じられません.次のような例ではどうでしょう.
 
<data>
    <product name="a" price="1000"/>
    <product name="b" price="980"/>
    <product name="c" price="900"/>
    <product name="d" price="800"/>
    <product name="e" price="790"/>
    <product name="f" price="700"/>
</data>
 
という入力があって、product/@priceがすべて1000以下であることをチェックしなければならないとします.product要素の数が固定でないとすれば、XSLT1.0では再帰を使って調べなければならないでしょう.(また再帰のテンプレート作るのか!といやになります)every式を使えば
 
<xsl:if test="every $p in product/@price satisfies xs:integer($p) le 1000">
 
の「一発」で済みます.この場合every式はtrue()を返してくれます.
everyがsatisfiesで記述された条件をすべて満たすのをチェックするのに対して、someはいずれかの要素が条件を満たせば、true()を返してくれます.
 
<xsl:if test="some $p in product/@price satisfies xs:integer($p) ge 1000">
 
上記のデータの場合、このsome式はtrue()を返してくれます
さて、everyやsomeはどのようなときに活躍するのでしょうか?やはりXMLデータベースのクェリーでしょうか?