Here are two simple pipelines that use p:http-request

Hi Folks,

I succeeded in using p:http-request. The hardest part wasn't using p:http-request, it was ensuring that I downloaded all the jar files that Calabash needs for p:http-request. After showing you my two simple pipelines I'll show you what jar files you need and where to get them.


Here's a simple pipeline file that uses p:http-request to get an RSS feed:
---------------------------------------------------------------
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
                xmlns:c="http://www.w3.org/ns/xproc-step">
    <p:input port="source">
        <p:inline>
            <c:request method="GET"
                       href="http://rss.cnn.com/rss/cnn_topstories.rss" />
        </p:inline>
    </p:input>
    <p:output port="result">
    </p:output>
    
    <p:http-request />

</p:declare-step>
---------------------------------------------------------------


Here is a pipeline that gets the RSS feed and then styles the feed:
---------------------------------------------------------------
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
                xmlns:c="http://www.w3.org/ns/xproc-step">
    <p:input port="source">
        <p:inline>
            <c:request method="GET"
                       href="http://rss.cnn.com/rss/cnn_topstories.rss" />
        </p:inline>
    </p:input>
    <p:output port="result">
    </p:output>
    
    <p:http-request />

    <p:xslt>
        <p:input port="source"/>
        <p:input port="stylesheet">
            <p:document href="RSS.xsl"/>
        </p:input>
        <p:input port="parameters">
            <p:empty/>
        </p:input>
    </p:xslt>

</p:declare-step>
---------------------------------------------------------------

Notice RSS.xsl. Here is a stylesheet for RSS feeds:

http://www.dotnetjunkies.ddj.com/Tutorial/9FB56D07-4052-458C-B247-37C9E4B6D719.dcik

I made a few tweaks to it, to get it to properly display the CNN RSS feed.


In order for the above pipelines to work, you need to make sure that you've downloaded all the jar files that Calabash needs. Here's how I describe it in my XProc tutorial's README.txt file:

[In my tutorial's folder] There is a lib folder. It has five subfolders:

   calabash

   saxon

   apache-commons-http-client

   apache-commons-codec

   apache-commons-logging

You need to download the XProc processor, Calabash, and install its
.jar file in the calabash folder. You can obtain Calabash here:

   http://xmlcalabash.com/download/

Calabash uses SAXON, so you need to download SAXON-SA and install its
.jar files in the saxon folder. You can obtain SAXON-SA here:

   http://www.saxonica.com/

For interacting with web services (using the p:http-request step) you
need to obtain the Apache Commons HTTP Client:

   http://hc.apache.org/downloads.cgi (download Commons HttpClient 3.1)

And you need to obtain the Apache Commons Codec:

   http://commons.apache.org/downloads/download_codec.cgi

And you need to obtain the Apache Commons Logging:

   http://commons.apache.org/downloads/download_logging.cgi
    

Here's what the folders should contain after you've downloaded and
installed the .jar files:

   lib
      calabash
         calabash.jar
      saxon
          saxon9.jar
          saxon9-dom4j.jar
          saxon9-dom4j.jar
          saxon9-jdom.jar
          saxon9-s9api.jar
          saxon9sa.jar
          saxon9sa-jaxp.jar
          saxon9sa-qc.jar
          saxon9-sql.jar
          saxon9-xom.jar
          saxon9-xpath.jar
          saxon9-xqj.jar
      apache-commons-http-client
          commons-httpclient-3.1.jar
      apache-commons-codec
          commons-codec-1.3.jar
      apache-commons-logging
          commons-logging-1.1.1.jar
          commons-logging-1.1.1-javadoc.jar
          commons-logging-1.1.1-javadoc.jar
          commons-logging-adapters-1.1.1.jar
          commons-logging-api-1.1.1.jar
          commons-logging-tests.jar

Be sure your CLASSPATH points to each of these jar files.

/Roger

Received on Saturday, 25 April 2009 18:07:23 UTC