<call>

Function invocation processor

Core v2.2.0

Overview

The processor invokes functions defined with , passing parameters and receiving return values. This enables code reuse, modular configurations, and abstraction of complex logic into reusable components.

Usage Examples

Example 1: Simple function call

example-1.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<!-- Define function -->
<function name="fetchUser">
  <def var="userId"><call-param name="userId"/></def>
  
  <http url="https://api.example.com/user/${userId}"/>
</function>

<!-- Call function -->
<def var="userData">
  <call name="fetchUser">
    <call-param name="userId">123</call-param>
  </call>
</def>
</config>

Example 2: Function with multiple parameters

example-2.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<function name="buildUrl">
  <def var="base"><call-param name="baseUrl"/></def>
  <def var="path"><call-param name="path"/></def>
  <def var="query"><call-param name="query"/></def>
  
  <template>${base}${path}?${query}</template>
</function>

<call name="buildUrl">
  <call-param name="baseUrl">https://api.example.com</call-param>
  <call-param name="path">/users</call-param>
  <call-param name="query">limit=10&offset=0</call-param>
</call>
</config>

Example 3: Reusable scraping function

example-3.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://org.webharvest/schema/2.1/core">
<function name="scrapePage">
  <def var="url"><call-param name="url"/></def>
  
  <def var="title">
    <xpath expression="//h1/text()">
      <html-to-xml>
        <http url="${url}"/>
      </html-to-xml>
    </xpath>
  </def>
  
  ${title}
</function>

<!-- Use function multiple times -->
<loop item="pageUrl">
  <tokenize>${urlList}</tokenize>
  
  <def var="pageTitle">
    <call name="scrapePage">
      <call-param name="url">${pageUrl}</call-param>
    </call>
  </def>
</loop>
</config>

Important Notes

Related Processors