Table 3-2. General comparisons
Table 3-3. Value comparisons
Table 3-4. Node comparisons
Example 3-1. Conditional expression
Query
for $prod in (doc("catalog.xml")/catalog/product)return if ($prod/@dept = "ACC") then <accessoryNum>{data($prod/number)}</accessoryNum> else <otherNum>{data($prod/number)}</otherNum>
Results
<otherNum>557</otherNum><accessoryNum>563</accessoryNum><accessoryNum>443</accessoryNum><otherNum>784</otherNum>
Example 3-2. Conditional expression returning multiple expressions
Query
for $prod in (doc("catalog.xml")/catalog/product)return if ($prod/@dept = "ACC") then (<accessoryNum>{data($prod/number)}</accessoryNum>, <accessoryName>{data($prod/name)}</accessoryName>) else <otherNum>{data($prod/number)}</otherNum>
Results
<otherNum>557</otherNum><accessoryNum>563</accessoryNum><accessoryName>Floppy Sun Hat</accessoryName><accessoryNum>443</accessoryNum><accessoryName>Deluxe Travel Bag</accessoryName><otherNum>784</otherNum>
Example 3-3. Nested conditional expressions
Query
for $prod in (doc("catalog.xml")/catalog/product)return if ($prod/@dept = "ACC") then <accessory>{data($prod/number)}</accessory> else if ($prod/@dept = "WMN") then <womens>{data($prod/number)}</womens> else if ($prod/@dept = "MEN") then <mens>{data($prod/number)}</mens> else <other>{data($prod/number)}</other>
Results
<womens>557</womens><accessory>563</accessory><accessory>443</accessory><mens>784</mens>
Example 3-4. Switch expression similar to nested conditional expressions
Query
xquery version "3.0";for $prod in (doc("catalog.xml")/catalog/product)return switch($prod/@dept) case "ACC" return <accessory>{data($prod/number)}</accessory> case "WMN" return <womens>{data($prod/number)}</womens> case "MEN" return <mens>{data($prod/number)}</mens> default return <other>{data($prod/number)}</other>
Results
<womens>557</womens><accessory>563</accessory><accessory>443</accessory><mens>784</mens>
Table 3-5. Examples of the not
function