<xq-param>

XQuery parameter definition

Core v2.2.0

Overview

The processor defines parameters for XQuery expressions, enabling dynamic data binding and type-safe parameter passing. Must be used as a child element of .

Usage Examples

Example 1: Basic parameter binding

example-1.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<xquery>
  <xq-expression>
    <![CDATA[
      declare variable $minPrice as xs:double external;
      //product[price > $minPrice]
    ]]>
  </xq-expression>
  <xq-param name="minPrice" type="xs:double">100.0</xq-param>
</xquery>
</config>

Example 2: Multiple parameters with different types

example-2.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<xquery>
  <xq-expression>
    <![CDATA[
      declare variable $category as xs:string external;
      declare variable $maxPrice as xs:double external;
      declare variable $includeOutOfStock as xs:boolean external;
      
      for $p in //product
      where $p/category = $category
        and $p/price <= $maxPrice
        and ($includeOutOfStock or $p/stock > 0)
      return $p
    ]]>
  </xq-expression>
  <xq-param name="category" type="xs:string">electronics</xq-param>
  <xq-param name="maxPrice" type="xs:double">500.0</xq-param>
  <xq-param name="includeOutOfStock" type="xs:boolean">false</xq-param>
</xquery>
</config>

Example 3: Dynamic parameters from variables

example-3.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<def var="searchTerm">laptop</def>
<def var="priceRange">1500</def>

<xquery>
  <xq-expression>
    <![CDATA[
      declare variable $search as xs:string external;
      declare variable $maxPrice as xs:double external;
      
      <results>
        {
          for $p in //product
          where contains(lower-case($p/name), lower-case($search))
            and $p/price <= $maxPrice
          order by $p/price ascending
          return $p
        }
      </results>
    ]]>
  </xq-expression>
  <xq-param name="search" type="xs:string">${searchTerm}</xq-param>
  <xq-param name="maxPrice" type="xs:double">${priceRange}</xq-param>
</xquery>
</config>

Example 4: XML node parameters (Bug #61 fix)

example-4.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<def var="userProfile">
  <html-to-xml>
    <http url="https://api.example.com/user/123"/>
  </html-to-xml>
</def>

<xquery>
  <xq-expression>
    <![CDATA[
      declare variable $profile as node() external;
      
      <userSummary>
        <name>{$profile//name/text()}</name>
        <email>{$profile//email/text()}</email>
        <preferences>
          {
            for $pref in $profile//preference
            return <pref>{$pref/@name}</pref>
          }
        </preferences>
      </userSummary>
    ]]>
  </xq-expression>
  <xq-param name="profile" type="node()">
    <get-var name="userProfile"/>
  </xq-param>
</xquery>
</config>

Parameters

Important Notes

Related Processors