論理式、比較式、およびセット式

フィルター パターンには論理式、比較式、セット式を含めることができます。 次の表に一覧した短縮形は、この XSLT (XSL Transformations) の実装で提供されている代替のシンボルを表しています。 このドキュメントではこれらの演算子について説明します。

演算子 説明

and

論理積

or

論理和

not()

否定

=

等価比較

!=

等しくない

< *

より小

<= *

より小または等しい

> *

より大

<= *

より大または等しい

|

集合演算、2 つのノード セットの和集合を返す

* 拡張 XPath 演算子

W3C (World Wide Web Consortium) 構文の演算子キーワードでは、バージョン 2.5 で使用されたドル記号 ($) ではなく、空白と他の区切り記号を使用します。 W3C 構文で、$xxx$ の形式の二項キーワードは wsxxxws と表現できます。ここで、ws はトークン終了文字で、空白か一重引用符 (')、または二重引用符文字 (") です。 not() などの単項演算子は関数表記を使用します。 Microsoft の実装では両方の構文をサポートしますが、将来の互換性から W3C 構文の使用が推奨されます。

論理演算子と比較演算子の優先順位 (最優先度から順に) を次の表に示します。

優先順位 演算子 説明

1

( )

グループ化

2

[ ]

フィルター

3

/

//

Path 演算

4

< または &lt;

<= または &lt;=

> または &gt;

>= または &gt;=

比較

5

=

!=

比較

6

|

和集合

7

not()

ブール型演算子 not

8

And

ブール型演算子 and

9

Or

ブール型演算子 or

演算子を XSLT スタイル シートなどの XML ドキュメントで使用する際には、< および > トークンは、それぞれ &lt; および &gt; に置き換える必要があります。 たとえば、次の XSLT 命令は、<price> 要素の数値が 10 より小か等しい <book> 要素に対して XSLT テンプレート規則を適用します。

<xsl:apply-templates select="book[price &lt;= 10]"/>

XPath 式を DOM で使用する場合は < および > 演算子を置き換える必要はありません。 たとえば、次の JScript ステートメントは、<price> 要素の数値が 10 より小か等しいすべての <book> 要素を選択します。

var cheap_books = dom.selectNodes("book[price <= 10]");

論理式は、特定の値のすべてのノードまたは特定の範囲のすべてのノードに一致します。 次は、False を返す論理式の一例です。

1 &gt;= 2

演算子では大文字と小文字が区別されます。

論理積と論理和

論理演算子 and および or は、それぞれ論理積演算と論理和演算を実行します。 これらの演算子はグループ化を行うかっこと組み合わせて、複雑な論理式を組み立てるために使用することができます。

説明

author[degree and award]

少なくとも 1 つの <degree> 要素を含み、少なくとも 1 つの <award> 要素を含む、すべての <author> 要素。

author[(degree or award) and publication]

少なくとも 1 つの <degree> 要素または <award> 要素を含み、少なくとも 1 つの <publication> 要素を含む、すべての <author> 要素。

ブール型演算子 not

論理演算子 not はフィルター パターン内の式の値を否定します。

説明

author[degree and not(publication)]

少なくとも 1 つの <degree> 要素を含むが、<publication> 要素を含まない、すべての <author> 要素。

author[not(degree or award) and publication]

少なくとも 1 つの <publication> 要素を含むが、<degree> 要素または <award> 要素を含まない、すべての <author> 要素。

XML ファイル (test.xml)

XSLT ファイル (test.xsl)

次の XSLT スタイルシートは属性を持たないすべての <x> 要素を選択します。

出力

上記の XML ファイルに変換を適用すると以下の結果が得られます。