XQuery parameter definition
Core v2.2.0
The
processor defines parameters for XQuery expressions, enabling
dynamic data binding and type-safe parameter passing. Must be used as a child element of
.
<?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>
<?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>
<?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>
<?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>
element