joerg       2003/07/05 09:31:57

  Modified:    src/documentation/xdocs/userdocs/generators
                        wsproxy-generator.xml book.xml generators.xml
  Log:
  WSProxyGenerator is now optional
  
  formatted (the really excellent) wsproxy-generator.xml
  
  Revision  Changes    Path
  1.3       +219 -202  
cocoon-2.1/src/documentation/xdocs/userdocs/generators/wsproxy-generator.xml
  
  Index: wsproxy-generator.xml
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/documentation/xdocs/userdocs/generators/wsproxy-generator.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- wsproxy-generator.xml     19 May 2003 10:30:26 -0000      1.2
  +++ wsproxy-generator.xml     5 Jul 2003 16:31:56 -0000       1.3
  @@ -1,255 +1,266 @@
   <?xml version="1.0" encoding="UTF-8"?>
  -<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" 
"../../dtd/document-v10.dtd">
  +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" 
"document-v10.dtd">
   <document>
     <header>
       <title>Portal Syndication with Web Services and Cocoon</title>
  +    <version>1.0</version>
  +    <type>Technical document</type>
       <authors>
         <person name="Ivelin Ivanov" email="[EMAIL PROTECTED]"/>
       </authors>
  +    <abstract>This document describes the Web Service ProxyGenerator of 
Cocoon.</abstract>
     </header>
     <body>
       <s1 title="What Is Web Syndication?">
  -      <p>
  -Web Site Syndication has gained popularity as more and more web sites cross 
reference each other, not only by a single hyperlink, but also by embedding parts of 
their content. The idea was pioneered by Netscape with their Rich Site Summary (RSS) 
(<link 
href="http://www.oasis-open.org/cover/rss.html";>http://www.oasis-open.org/cover/rss.html</link>)
 XML format. RSS was developed in early 1999 to populate Netscape's My Netscape portal 
with external newsfeeds ("channels"). Since then RSS has taken on a life of its own 
and now thousands of Web sites use RSS as a "what's new" mechanism to drive traffic 
their way.      
  +      <p>Web Site Syndication has gained popularity as more and more web sites 
cross reference each
  +        other, not only by a single hyperlink, but also by embedding parts of their 
content. The
  +        idea was pioneered by Netscape with their Rich Site Summary (RSS)
  +        (<link 
href="http://www.oasis-open.org/cover/rss.html";>http://www.oasis-open.org/cover/rss.html</link>)
  +        XML format. RSS was developed in early 1999 to populate Netscape's My 
Netscape portal with
  +        external newsfeeds ("channels"). Since then RSS has taken on a life of its 
own and now
  +        thousands of Web sites use RSS as a "what's new" mechanism to drive traffic 
their way.
  +      </p>
  +      <p>The current RSS 1.0 standard is an application of Resource Description 
Framework (RDF)
  +        (<link 
href="http://www.w3.org/TR/rdf-schema/";>http://www.w3.org/TR/rdf-schema/</link>). RDF
  +        is a framework for describing and interchanging metadata. The RDF framework 
is extensible
  +        and allows adding new types of entities. It also gives meaning to resources 
to enable
  +        automated processing of Web resources.
  +      </p>
  +      <p>RSS is unarguably an example of an organically grown and widely accepted 
standard. For long
  +        it was not endorsed by any of the popular standards committees. Even so it 
quickly became
  +        popular and found a large number of creative uses. Lately though it has 
reached its limits.
  +        There is a demand for more advanced portal syndication which RSS cannot 
satisfy.
         </p>
  -
  -      <p>
  -The current RSS 1.0 standard is an application of Resource Description Framework 
(RDF) (<link 
href="http://www.w3.org/TR/rdf-schema/";>http://www.w3.org/TR/rdf-schema/</link>). RDF 
is a framework for describing and interchanging metadata. The RDF framework is 
extensible and allows adding new types of entities. It also gives meaning to resources 
to enable automated processing of Web resources.
  -</p>
  -
  -      <p>
  -RSS is unarguably an example of an organically grown and widely accepted standard. 
For long it was not endorsed by any of the popular standards committees. Even so it 
quickly became popular and found a large number of creative uses. Lately though it has 
reached its limits. There is a demand for more advanced portal syndication which RSS 
cannot satisfy.
  -</p>
  -
       </s1>
   
  -
  -    <s1 title="Going beyond RSS with Web services ">
  -      <p>
  -Latest generation web portals demand more than simply posting cross linked news 
stories from RSS. Embedding and personalizing rich content and behavior from remote 
portals is becoming necessity. Limited success has been achieved through complex and 
sophisticated backend integration via proprietary or Web Services compliant protocols. 
Recognizing the growing demand, influential organizations have attempted to develop 
new languages such as:
  -</p>
  -
  -<s2 title="Web Services Experience Language (WSXL)">
  -      <p>
  -      (<link 
href="http://www.webservices.org/index.php/article/articleview/345/";>http://www.webservices.org/index.php/article/articleview/345/</link>)
  -      </p>
  -      <p>
  -        <em>
  -        "WSXL is a Web services centric component model for interactive Web 
applications. WSXL   is designed to achieve two main goals: enable businesses to 
distribute Web applications   through       multiple revenue channels, and enable new 
services or applications to be created by   leveraging       existing applications 
across the Web."       
  -        </em>
  -      </p>
  -</s2>
  -
  -<s2 title="Web Services Inspection Language (WSIL)">
  -      <p>
  -      (<link 
href="http://www.webservices.org/index.php/article/articleview/85/";>http://www.webservices.org/index.php/article/articleview/85/</link>)
  -      </p>
  -      <p>
  -        <em>
  -       "The specification allows a Web services provider to publish a WS-Inspection 
(WSIL) document which lists the services on offer and their corresponding WSDL (Web 
services description language) files. The convention is that the WSIL document should 
be called "inspection.wsil" and be located at a common entry point to the web site. 
This paves the way for future Web services "crawlers" to locate and parse WSIL 
documents for Web service search engines."        
  -        </em>
  -      </p>
  -</s2>
  -
  -
  -<s2 title="Web Services for Remote Portals (WSRP)">
  -      <p>
  -      (<link 
href="http://www.oasis-open.org/committees/wsrp/";>http://www.oasis-open.org/committees/wsrp/</link>)
  +    <s1 title="Going beyond RSS with Web Services">
  +      <p>Latest generation web portals demand more than simply posting cross linked 
news stories
  +        from RSS. Embedding and personalizing rich content and behavior from remote 
portals is
  +        becoming necessity. Limited success has been achieved through complex and 
sophisticated
  +        backend integration via proprietary or Web Services compliant protocols. 
Recognizing the
  +        growing demand, influential organizations have attempted to develop new 
languages such as:
  +      </p>
  +
  +      <s2 title="Web Services Experience Language (WSXL)">
  +        <p>
  +          (<link 
href="http://www.webservices.org/index.php/article/articleview/345/";>http://www.webservices.org/index.php/article/articleview/345/</link>)
  +        </p>
  +        <p>
  +          <em>"WSXL is a Web services centric component model for interactive Web 
applications. WSXL
  +            is designed to achieve two main goals: enable businesses to distribute 
Web applications
  +            through multiple revenue channels and enable new services or 
applications to be created
  +            by leveraging existing applications across the Web."
  +          </em>
  +        </p>
  +      </s2>
  +
  +      <s2 title="Web Services Inspection Language (WSIL)">
  +        <p>
  +          (<link 
href="http://www.webservices.org/index.php/article/articleview/85/";>http://www.webservices.org/index.php/article/articleview/85/</link>)
  +        </p>
  +        <p>
  +          <em>"The specification allows a Web services provider to publish a 
WS-Inspection (WSIL)
  +            document which lists the services on offer and their corresponding WSDL 
(Web services
  +            description language) files. The convention is that the WSIL document 
should be called
  +            "inspection.wsil" and be located at a common entry point to the web 
site. This paves the
  +            way for future Web services "crawlers" to locate and parse WSIL 
documents for Web
  +            service search engines."        
  +          </em>
  +        </p>
  +      </s2>
  +
  +      <s2 title="Web Services for Remote Portals (WSRP)">
  +        <p>
  +          (<link 
href="http://www.oasis-open.org/committees/wsrp/";>http://www.oasis-open.org/committees/wsrp/</link>)
  +        </p>
  +        <p>
  +          <em>"Defining an XML and Web services standard that will allow the 
plug-n-play of visual,
  +            user-facing Web services with portals or other intermediary Web 
applications"
  +          </em>
  +        </p>
  +      </s2>
  +
  +      <s2 title="Web Services for Interactive Applications">
  +        <p>
  +          (<link 
href="http://www.oasis-open.org/committees/wsia/";>http://www.oasis-open.org/committees/wsia/</link>)
  +        </p>
  +        <p>
  +          <em>"Create an XML and web services centric framework for interactive web 
applications.
  +            The designs must achieve two main goals: enable businesses to 
distribute web
  +            applications through multiple revenue channels, and enable new services 
or applications
  +            to be created by leveraging existing applications across the Web."
  +          </em>
  +        </p>
  +      </s2>
  +
  +      <p>While these efforts are certainly worthwhile and promising, it will most 
likely take years
  +        before they pass the filters of real life use before they can claim 
widespread adoption. All
  +        of them ask for a thick infrastructure layer to support implementations. 
While possible, it
  +        is unlikely that mainstream deployment will be achieved instantly.
  +      </p>
  +      <p>Not all is lost though. Fortunately, there is way to satisfy a large 
portion of the
  +        syndication requirements by applying already established technologies and 
tools. We will
  +        illustrate the architecture of a possible solution using an open source 
framework for XML
  +        Publishing - Apache Cocoon.
         </p>
  -      <p>
  -        <em>
  -      "Defining an XML and Web services standard that will allow the plug-n-play of 
visual, user-facing Web services with portals or other intermediary Web applications"  
       
  -        </em>
  -      </p>
  -</s2>
  -
  -
  -<s2 title="Web Services for Interactive Applications ">
  -      <p>
  -      (<link 
href="http://www.oasis-open.org/committees/wsia/";>http://www.oasis-open.org/committees/wsia/</link>)
  -      </p>
  -      <p>
  -        <em>
  -      "Create an XML and web services centric framework for interactive web 
applications. The designs must achieve two main goals: enable businesses to distribute 
web applications through multiple revenue channels, and enable new services or 
applications to be created by leveraging existing applications across the Web. "       
  -        </em>
  -      </p>
  -</s2>
  -
  -
  -      <p>
  -While these efforts are certainly worthwhile and promising, it will most likely 
take years before they pass the filters of real life use before they can claim 
widespread adoption. All of them ask for a thick infrastructure layer to support 
implementations. While possible, it is unlikely that mainstream deployment will be 
achieved instantly.
  -</p>
  -
  -      <p>
  -Not all is lost though. Fortunately, there is way to satisfy a large portion of the 
syndication requirements by applying already established technologies and tools. We 
will illustrate the architecture of a possible solution using an open source framework 
for XML Publishing - Apache Cocoon.
  -</p>
  -
  -</s1>
  -
  -
  -<s1 title="Apache Cocoon">
  -
  +    </s1>
   
  +    <s1 title="Apache Cocoon">
         <p>
  -      (<link 
href="http://cocoon.apache.org/index.html";>http://cocoon.apache.org/index.html</link>)
  +        (<link 
href="http://cocoon.apache.org/index.html";>http://cocoon.apache.org/index.html</link>)
         </p>
         <p>
  -        <em>
  -      "Apache Cocoon is an XML publishing framework that raises the usage of XML 
and XSLT technologies for server applications to a new level. Designed for performance 
and scalability around pipelined SAX processing, Cocoon offers a flexible environment 
based on a separation of concerns between content, logic, and style. To top this all 
off, Cocoon's centralized configuration system and sophisticated caching help you to 
create, deploy, and maintain rock-solid XML server applications"    
  +        <em>"Apache Cocoon is an XML publishing framework that raises the usage of 
XML and XSLT
  +          technologies for server applications to a new level. Designed for 
performance and
  +          scalability around pipelined SAX processing, Cocoon offers a flexible 
environment based
  +          on a separation of concerns between content, logic and style. To top this 
all off,
  +          Cocoon's centralized configuration system and sophisticated caching help 
you to create,
  +          deploy and maintain rock-solid XML server applications".
           </em>
         </p>
  -
  -      <p>
  -First, let's describe a typical use case scenario: User logs in to a familiar 
portal and happily surfs about. At some point the user clicks on a link which leads to 
a strange page. It has the portal logo, even shows the same login id but still looks 
very different and unfriendly... After some time and frustration the user gets used to 
switching back and forth between the two faces of the portal... while looking for 
another provider which offers both services in a coherent graphical interface.
  +      <p>First, let's describe a typical use case scenario: User logs in to a 
familiar portal and
  +        happily surfs about. At some point the user clicks on a link which leads to 
a strange page.
  +        It has the portal logo, even shows the same login id but still looks very 
different and
  +        unfriendly ... After some time and frustration the user gets used to 
switching back and
  +        forth between the two faces of the portal ... while looking for another 
provider which
  +        offers both services in a coherent graphical interface.
  +      </p>
  +      <p>For those who have never had similar experience, we will give a popular 
example. Yahoo! Autos
  +        (<link 
href="http://autos.yahoo.com/finance.html?refsrc=autos/insurance";>http://autos.yahoo.com/finance.html?refsrc=autos/insurance</link>)
  +        offers an easy to use interactive catalog of cars. However when it comes to 
insuring an
  +        automobile, applying for a loan or buying a car, the web site hyperlinks to 
a co-branded
  +        page of another company. For example Lending Tree
  +        (<link 
href="https://www.lendingtree.com/newauto/secure/ctl_borrower.asp?page=loan_selection&amp;verb=continue&amp;O_loan_type=LOAN_TYPE_AUTO&amp;bp=yahooautos&amp;source=40050&amp;alliance=true&amp;SITEID=&amp;templxlname=&amp;templxssn1=&amp;templxssn2=&amp;templxssn3=";>https://www.lendingtree.com/newauto/.....</link>
 )
  +        will show Yahoo! Autos logo at the top of the screen, however the rest of 
the page looks
  +        very different than any other Yahoo! page. All the personalization spoils 
that a Yahoo! user
  +        enjoys are lost as soon as the application for a loan begins. Not only the 
colors and layout
  +        are different. A login session with Yahoo! does not carry over to Lending 
Tree. On top of
  +        that a pop-up window appears when switching between the two sites, which 
reads "You are
  +        about to view pages over a secure connection ...". When added up these 
"negligible"
  +        inadequacies, lead to an overall poor experience, which is certainly not 
the original
  +        intent of the Yahoo! content producers.
  +      </p>
  +      <p>Now as we have an idea of how things are not supposed to work, we will 
show that
  +        outsourcing interactive components to a third party site, while preserving 
the look &amp;
  +        feel of the original portal is still possible when done right. As we 
mentioned Cocoon offers
  +        a solution. Since Cocoon is a very sophisticated framework, an indepth 
analysis of its
  +        features is beyond the scope of this text to cover.
         </p>
  -      
  -      <p>
  -For those who have never had similar experience, we will give a popular example. 
Yahoo! Autos (<link 
href="http://autos.yahoo.com/finance.html?refsrc=autos/insurance";>http://autos.yahoo.com/finance.html?refsrc=autos/insurance</link>)
 
  -offers an easy to use interactive catalog of cars. However when it comes to 
insuring an automobile, applying for a loan or buying a car, the web site hyperlinks 
to a co-branded page of another company. For example Lending Tree 
  -(<link 
href="https://www.lendingtree.com/newauto/secure/ctl_borrower.asp?page=loan_selection&amp;verb=continue&amp;O_loan_type=LOAN_TYPE_AUTO&amp;bp=yahooautos&amp;source=40050&amp;alliance=true&amp;SITEID=&amp;templxlname=&amp;templxssn1=&amp;templxssn2=&amp;templxssn3=";>https://www.lendingtree.com/newauto/.....</link>
 )
  - will show Yahoo! Autos logo at the top of the screen, however the rest of the page 
looks very different than any other Yahoo! page. All the personalization spoils that a 
Yahoo! user enjoys are lost as soon as the application for a loan begins. Not only the 
colors and layout are different. A login session with Yahoo! does not carry over to 
Lending Tree. On top of that a pop-up window appears when switching between the two 
sites, which reads "You are about to view pages over a secure connection...". When 
added up these "negligible" inadequacies, lead to an overall poor experience, which is 
certainly not the original intent of the Yahoo! content producers.
  -</p>
  -
  -      <p>
  -Now as we have an idea of how things are not supposed to work, we will show that 
outsourcing interactive components to a third party site, while preserving the look 
&amp; feel of the original portal is still possible when done right. As we mentioned 
Cocoon offers a solution. Since Cocoon is a very sophisticated framework, an indepth 
analysis of its features is beyond the scope of this text to cover. 
  -</p>
       </s1>
  -    
  -    
  -    <s1 title="Web Services Proxy to the rescue">
  -      <p>
  -The latest version of Cocoon is 2.1, and it has a new Web Service Proxy component. 
It is this component which we shall focus on for the reminder of the text. To follow 
the rest of the article, it will be useful (but not essential) to have a basic 
knowledge of Cocoon 2.
  -</p>
  -      <p>
  -Combined with the <link 
href="../../howto/xmlform-wizard/howto-xmlform-wizard.html">XMLForm</link> component 
of Cocoon 2 and XSLT, the Web Service Proxy component allows vendors to share 
interactive content with little effort. The Web Service Proxy takes advantage of the 
fact that a Cocoon web application produces XML content which is later translated into 
multiple presentation formats, like HTML or WML. Once the proxy is plugged in the 
Cocoon sitemap, it transparently pipes browser requests to a remote web application 
and returns the response back to the sitemap for local styling. Receiving a client 
independent XML format, allows the local site to pull content and style it with XSLT 
with the desired Look &amp; Feel.
  -</p>
   
  -      <p>
  -        <strong>
  -          Q. Ok, styling presentation is easy to understand, but how is a form 
submitted to the original site? 
  -        </strong>
  -      </p>
  -      
  -      <p>
  -      The XMLForm component is the answer. It uses W3C XForms included in the XML 
content which allows the end user to directly interact with the remote server through 
the embedding site. The form markup in the XML content of an embedded page uses 
relative URL address for the target action, when the end user submits, the form data 
is sent to the containing site, which captures the form data and the relative URL. The 
Web Service Proxy then takes this information and re-submits it to the original site. 
It then reads the XML response and makes it available to the sitemap for styling again.
  +    <s1 title="Web Services Proxy to the rescue">
  +      <p>The latest version of Cocoon is 2.1 and it has a new Web Service Proxy 
component. It is
  +        this component which we shall focus on for the reminder of the text. To 
follow the rest of
  +        the article, it will be useful (but not essential) to have a basic 
knowledge of Cocoon 2.
  +      </p>
  +      <p>Combined with the <link 
href="../../howto/xmlform-wizard/howto-xmlform-wizard.html">XMLForm</link>
  +        component of Cocoon 2 and XSLT, the Web Service Proxy component allows 
vendors to share
  +        interactive content with little effort. The Web Service Proxy takes 
advantage of the fact
  +        that a Cocoon web application produces XML content, which is later 
translated into multiple
  +        presentation formats, like HTML or WML. Once the proxy is plugged in the 
Cocoon sitemap, it
  +        transparently pipes browser requests to a remote web application and 
returns the response
  +        back to the sitemap for local styling. Receiving a client independent XML 
format, allows the
  +        local site to pull content and style it with XSLT with the desired Look 
&amp; Feel.
         </p>
  -
  -
         <p>
           <strong>
  -          Q. Hmm... a typical web application maintains a user session while 
navigating. How is the containing site propagating the end user session to the 
embedded site? 
  +          Q. Ok, styling presentation is easy to understand, but how is a form 
submitted to the original site?
           </strong>
         </p>
  -      
  -      <p>
  -The answer is simple. The Web Service Proxy simply hooks to the end user session, 
and automatically starts its own session with the remote site. If the remote site 
requires authentication, then the developer of the local web site has to pass the user 
credentials as parameters to the WebServiceProxyGenerator.
  +      <p>The XMLForm component is the answer. It uses W3C XForms included in the 
XML content which
  +        allows the end user to directly interact with the remote server through the 
embedding site.
  +        The form markup in the XML content of an embedded page uses relative URL 
address for the
  +        target action, when the end user submits, the form data is sent to the 
containing site,
  +        which captures the form data and the relative URL. The Web Service Proxy 
then takes this
  +        information and re-submits it to the original site. It then reads the XML 
response and makes
  +        it available to the sitemap for styling again.
         </p>
  -
         <p>
  -        <strong>
  -          Q. What transport protocols are supported? 
  +        <strong>Q. Hmm ... a typical web application maintains a user session while 
navigating.
  +          How is the containing site propagating the end user session to the 
embedded site?
           </strong>
         </p>
  -      
  -      <p>
  -HTTP 1.0, HTTP 1.1, HTTPS.
  +      <p>The answer is simple. The Web Service Proxy simply hooks to the end user 
session and
  +        automatically starts its own session with the remote site. If the remote 
site requires
  +        authentication, then the developer of the local web site has to pass the 
user credentials
  +        as parameters to the WebServiceProxyGenerator.
         </p>
  -
         <p>
  -Below we will illustrate the architecture of the solution with some example code 
and figures.
  +        <strong>Q. What transport protocols are supported?</strong>
  +      </p>
  +      <p>HTTP 1.0, HTTP 1.1, HTTPS.</p>
  +      <p>Below we will illustrate the architecture of the solution with some 
example code and
  +        figures.
         </p>
  -
         <figure src="images/wsproxy_Proxies.png" alt="Figure 1 - Traditional Http 
Proxy vs Cocoon Web Service Proxy"/>
         <p>
  -        <em>
  -Figure 1 - Architecture of the Web Service Proxy Solution. As opposed to a 
traditional proxy server, the Web Services Proxy captures user input and allows the 
web site to remain coherent even when the functionality for some of its components is 
delivered remotely.       
  +        <em>Figure 1 - Architecture of the Web Service Proxy Solution. As opposed 
to a traditional
  +          proxy server, the Web Services Proxy captures user input and allows the 
web site to remain
  +          coherent even when the functionality for some of its components is 
delivered remotely.
           </em>
         </p>
  -
  -
  -      
         <figure src="images/wsproxy_CompositePage.png" alt="Figure 2 - Illustration 
of the data flow for a composite page"/>
         <p>
  -        <em>
  -Figure 2 - Illustration of the data flow for a composite page. Some of the content 
is locally constructed, the rest is obtained remotely. Finally the same styling is 
applied and the user facing page appears consistent.       
  +        <em>Figure 2 - Illustration of the data flow for a composite page. Some of 
the content is
  +          locally constructed, the rest is obtained remotely. Finally the same 
styling is applied
  +          and the user facing page appears consistent.
           </em>
         </p>
  -      
  -      
  -      <p>
  -      Now we will show a snippet of the sitemap which employs the Web Service 
Proxy. Notice its brevity! The Web Service Proxy completely handles the content and 
navigation logic between the two portals. Only stylesheets are additionally required 
to translate the remotely retrieved documents into a user friendly format.
  +      <p>Now we will show a snippet of the sitemap which employs the Web Service 
Proxy. Notice its
  +        brevity! The Web Service Proxy completely handles the content and 
navigation logic between
  +        the two portals. Only stylesheets are additionally required to translate 
the remotely
  +        retrieved documents into a user friendly format.
         </p>
  -
  -
         <source><![CDATA[
     <?xml version="1.0"?>
     <map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0";>
   
  -    <!-- =========================== Components ==================   -->
  +    <!-- =========================== Components ================== -->
       <map:components>
         <map:generators default="file">
  -        <map:generator name="wsproxy"
  -          src="org.apache.cocoon.generation.WebServiceProxyGenerator"
  -          logger="webapp.wsproxy"/>
  +        <map:generator name="wsproxy" logger="sitemap.generator.wsproxy"
  +          src="org.apache.cocoon.generation.WebServiceProxyGenerator"/>
         </map:generators>
       </map:components>
   
  -  ....
  -
  -    <!-- =========================== Pipelines ======================       -->
  +    <!-- =========================== Pipelines =================== -->
       <map:pipelines>
         <map:pipeline>
  -
           <!-- Interactive Web Application Syndication  -->
           <map:match pattern="*">
  -          <map:generate type="wsproxy"
  -            src="http://{header:host}/cocoon/samples/xmlform/wizard?cocoon-view=xml";
  -            label="xml"/>
  -          <map:transform src="stylesheets/newWizard2html.xsl" />
  +          <map:generate type="wsproxy" label="xml"
  +            
src="http://{request:serverName}:{request:serverPort}{request:contextPath}/samples/xmlform/wizard?cocoon-view=xml"/>
  +          <map:transform src="stylesheets/newWizard2html.xsl"/>
             <map:transform 
src="context://samples/stylesheets/xmlform/xmlform2html.xsl"/>
             <map:serialize type="html"/>
           </map:match>
         </map:pipeline>
       </map:pipelines>
     </map:sitemap>
  -  <!-- end of file -->
  - 
  -]]></source>
  -
  +   ]]></source>
   
  -      
  -      <figure src="images/wsproxy_Sequence.png" alt="Figure 3 - sequence diagram "/>
  +      <figure src="images/wsproxy_Sequence.png" alt="Figure 3 - sequence diagram"/>
         <p>
  -        <em>
  -Figure 3 - Above is a sequence diagram outlining the interaction between the key 
participants in a syndication session.     
  +        <em>Figure 3 - Above is a sequence diagram outlining the interaction 
between the key
  +          participants in a syndication session.
           </em>
         </p>
  -      
  -      
         <figure src="images/wsproxy_Screenshot1.png" alt="screen shot 1"/>
         <p>
  -        <em>
  -Figure 4 - Sample screenshot from a remotely enabled application as it appears 
standalone.     
  +        <em>Figure 4 - Sample screenshot from a remotely enabled application as it 
appears
  +          standalone.
           </em>
         </p>
  -      
  -      
  -      <figure src="images/wsproxy_Screenshot2.png" alt="screen shot 2" />
  +      <figure src="images/wsproxy_Screenshot2.png" alt="screen shot 2"/>
         <p>
  -        <em>
  -Figure 5 - Sample screenshot from the same application, embedded in another web 
application.   
  +        <em>Figure 5 - Sample screenshot from the same application embedded in 
another web
  +          application.
           </em>
         </p>
  -      
   
  -      <p>
  -The content of the original XML page behind these two screenshot follows:
  -      </p>
  -      
  -      
  +      <p>The content of the original XML page behind these two screenshot 
follows:</p>
         <source><![CDATA[
  -
  - <?xml version="1.0"?>
  +  <?xml version="1.0"?>
     <document xmlns:xf="http://apache.org/cocoon/xmlform/1.0";>
       <xf:form id="form-feedback" view="userIdentity" action="wizard" method="GET">
         <xf:caption>Personal Information</xf:caption>
  @@ -260,9 +271,7 @@
           <xf:caption>First Name</xf:caption>
           <xf:violations class="error"/>
         </xf:textbox>
  -
  -      ....
  -
  +      ...
         <xf:selectMany ref="role" selectUIType="listbox">
           <xf:caption>Professional roles</xf:caption>
           <xf:item>
  @@ -273,7 +282,7 @@
             <xf:caption>Hacker</xf:caption>
             <xf:value>Hacker</xf:value>
           </xf:item>
  -        ....
  +        ...
         </xf:selectMany>
         ...
         <!-- hidden model attribute -->
  @@ -289,31 +298,39 @@
       <xf:output ref="count" id="show_count" form="form-feedback" class="info">
         <xf:caption>Visits Count</xf:caption>
       </xf:output>
  -
     </document>
  +   ]]></source>
   
  - 
  -]]></source>
  -      
  -
  -      <p>
  -The listing above contains markup in the XMLForm namespace. It is a presentation 
independent way to specify input controls. Being XForms compliant it is easy to learn 
and use. The XSLT stylesheets used to convert the XML above are very simple and will 
not be listed here. They can found in the Cocoon 2.1 distribution.
  -</p>
  -
  +      <p>The listing above contains markup in the XMLForm namespace. It is a 
presentation
  +        independent way to specify input controls. Being XForms compliant it is 
easy to learn and
  +        use. The XSLT stylesheets used to convert the XML above are very simple and 
will not be
  +        listed here. They can found in the Cocoon 2.1 distribution.
  +      </p>
       </s1>
  +
       <s1 title="Conclusion">
  -      <p>
  -The Web Service Proxy component is tightly integrated with the Cocoon framework and 
is particularly convenient to use in combination with XMLForm to enable syndication of 
Web site functionality. With the presented sample, we only scratched the service of 
the possible applications. It is easy to see though for a creative mind how it can be 
extended in multiple directions. Although the solution we offered is conveniently 
applied with Cocoon, the concepts are generally applicable outside the framework as 
well. Exposing a Web Application functionality via XML is not just a "neat" feature 
any more. It opens the gates to a constellation of opportunities, not possible with 
the classical Model-2 approach where the business logic is directly tied to a 
graphical output like HTML.
  -    </p>
  -    <s2 title="Have more questions? ">
  -      <p>
  -        Look at the online demo available in the Cocoon distribution via: 
  -<code>http://localhost:8080/cocoon/samples/webserviceproxy/</code>
  -      </p>
  -      <p>
  -        Then study the source code and if you still have questions, join the cocoon 
users email list and ask. If you have ideas for improvement then you are more than 
welcome to discuss it on the cocoon development email list and eventually submit a 
patch through the Apache bug tracking system.
  -      </p>
  -    </s2>
  -  </s1>
  +      <p>The Web Service Proxy component is tightly integrated with the Cocoon 
framework and is
  +        particularly convenient to use in combination with XMLForm to enable 
syndication of website
  +        functionality. With the presented sample, we only scratched the service of 
the possible
  +        applications. It is easy to see though for a creative mind how it can be 
extended in
  +        multiple directions. Although the solution we offered is conveniently 
applied with Cocoon,
  +        the concepts are generally applicable outside the framework as well. 
Exposing a Web
  +        Application functionality via XML is not just a "neat" feature any more. It 
opens the gates
  +        to a constellation of opportunities, not possible with the classical 
Model-2 approach where
  +        the business logic is directly tied to a graphical output like HTML.
  +      </p>
  +
  +      <s2 title="Have more questions?">
  +        <p>Look at the online demo available in the Cocoon distribution in the 
samples:
  +          <code>http://{host}:{port}/{contextPath}/samples/proxy/</code>.
  +        </p>
  +        <p>Then study the source code and if you still have questions, join the 
cocoon users email
  +          list and ask. If you have ideas for improvement then you are more than 
welcome to discuss
  +          it on the cocoon development email list and eventually submit a patch 
through the Apache
  +          bug tracking system.
  +        </p>
  +      </s2>
  +    </s1>
     </body>
   </document>
  +
  
  
  
  1.4       +2 -2      cocoon-2.1/src/documentation/xdocs/userdocs/generators/book.xml
  
  Index: book.xml
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/documentation/xdocs/userdocs/generators/book.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- book.xml  3 Jul 2003 08:45:22 -0000       1.3
  +++ book.xml  5 Jul 2003 16:31:56 -0000       1.4
  @@ -20,7 +20,6 @@
       <menu-item label="Server Pages Generator" href="serverpages-generator.html"/>
       <menu-item label="Status Generator" href="status-generator.html"/>
       <menu-item label="Stream Generator" href="stream-generator.html"/>
  -    <menu-item label="Web Service Proxy Generator" href="wsproxy-generator.html"/>
       <menu-item label="XPath Directory Generator" 
href="xpathdirectory-generator.html"/>
     </menu>
     <menu label="Optional">
  @@ -32,7 +31,8 @@
       <menu-item label="Script Generator" href="script-generator.html"/>
       <menu-item label="Search Generator" href="search-generator.html"/>
       <menu-item label="Velocity Generator" href="velocity-generator.html"/>
  -    <menu-item label="XML:DB Generator" href="xmldb-generator.html"/>
  +    <menu-item label="Web Service Proxy Generator" href="wsproxy-generator.html"/>
       <menu-item label="XML:DB Collection Generator" 
href="xmldbcollection-generator.html"/>
  +    <menu-item label="XML:DB Generator" href="xmldb-generator.html"/>
     </menu>
   </book>
  
  
  
  1.4       +55 -52    
cocoon-2.1/src/documentation/xdocs/userdocs/generators/generators.xml
  
  Index: generators.xml
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/documentation/xdocs/userdocs/generators/generators.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- generators.xml    3 Jul 2003 08:45:22 -0000       1.3
  +++ generators.xml    5 Jul 2003 16:31:56 -0000       1.4
  @@ -1,55 +1,58 @@
   <?xml version="1.0" encoding="UTF-8"?>
  -<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" 
"../../dtd/document-v10.dtd">
  -
  +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.0//EN" 
"document-v10.dtd">
   <document>
  -     <header>
  -             <title>Generators in Cocoon</title>
  -             <version>0.9</version>
  -             <type>Technical document</type>
  -             <authors>
  -                     <person name="Carsten Ziegeler" email="[EMAIL PROTECTED]"/>
  -              </authors>
  -              <abstract>This document describes all of the available generators of 
Cocoon.</abstract>
  -     </header>
  -     <body>
  -             <s1 title="Goal">
  -                     <p>This document lists all of the available generators of 
Apache Cocoon and
  -                     describes their purpose.</p>
  -              </s1>
  -              <s1 title="Overview">
  -  <p>A generator is the starting point of an xml pipeline. It generates XML content 
as SAX events and initializes pipeline processing. Every pipeline match containing a 
generator must be terminated by a serializer.
  -  </p>
  -  <p>
  -In the sitemap file, each generator has a unique name which is mapped to a java 
class. One generator name must be declared as the default generator. Each generator 
may have additional configuration information specified in child elements.
  -  </p>
  -  <p>
  -For conceptual information on generators see the user's guide document <link 
href="../concepts/sitemap.html">The Sitemap</link>.
  -  </p>
  -              </s1>
  -              <s1 title="The Generators in Apache Cocoon">
  -                     <ul>
  -                             <li><link href="directory-generator.html">Directory 
Generator</link></li>
  -                             <li><link href="file-generator.html">File 
Generator</link> (The default generator)</li>
  -                             <li><link href="extractor-generator.html">Fragment 
Extractor Generator</link> (optional: Batik block)</li>
  -                             <li><link href="html-generator.html">HTML 
Generator</link> (optional: HTML block)</li>
  -                             <li><link href="imagedirectory-generator.html">Image 
Directory Generator</link></li>
  -                             <li><link href="jsp-generator.html">JSP 
Generator</link> (optional: JSP block)</li>
  -                             <li><link href="linkstatus-generator.html">LinkStatus 
Generator</link></li>
  -                <li>MP3 Directory Generator (no documentation exists)</li>
  -                             <li><link href="error-generator.html">Notifying 
Generator</link></li>
  -                             <li><link href="php-generator.html">Php 
Generator</link> (optional: PHP block)</li>
  -                             <li><link href="profile-generator.html">Profile 
Generator</link> (optional: Profiler block)</li>
  -                             <li><link href="request-generator.html">Request 
Generator</link></li>
  -                             <li><link href="script-generator.html">Script 
Generator</link> (optional: BSF block)</li>
  -                             <li><link href="search-generator.html">Search 
Generator</link> (optional: Lucene block)</li>
  -                             <li><link href="serverpages-generator.html">Server 
Pages Generator</link></li>
  -                             <li><link href="status-generator.html">Status 
Generator</link></li>
  -                             <li><link href="stream-generator.html">Stream 
Generator</link></li>
  -                             <li><link href="velocity-generator.html">Velocity 
Generator</link> (optional: Velocity block)</li>
  -                             <li><link href="xmldbcollection-generator.html">XML:DB 
Collection Generator</link> (optional: XMLDB block)</li>
  -                             <li><link href="xmldb-generator.html">XML:DB 
Generator</link> (optional: XMLDB block)</li>
  -                <li><link href="xpathdirectory-generator.html">XPath Directory 
Generator</link></li>
  -                     </ul>
  -             </s1>
  -     </body>
  +  <header>
  +    <title>Generators in Cocoon</title>
  +    <version>0.9</version>
  +    <type>Technical document</type>
  +    <authors>
  +      <person name="Carsten Ziegeler" email="[EMAIL PROTECTED]"/>
  +    </authors>
  +    <abstract>This document describes all of the available generators of 
Cocoon.</abstract>
  +  </header>
  +  <body>
  +    <s1 title="Goal">
  +     <p>This document lists all of the available generators of Apache Cocoon and 
describes their
  +       purpose.</p>
  +    </s1>
  +    <s1 title="Overview">
  +      <p>A generator is the starting point of an xml pipeline. It generates XML 
content as SAX
  +        events and initializes pipeline processing. Every pipeline match containing 
a generator
  +        must be terminated by a serializer.
  +      </p>
  +      <p>In the sitemap file, each generator has a unique name which is mapped to a 
Java class. One
  +        generator name must be declared as the default generator. Each generator 
may have additional
  +        configuration information specified in child elements.
  +      </p>
  +      <p>For conceptual information on generators see the user's guide document
  +        <link href="../concepts/sitemap.html">The Sitemap</link>.
  +      </p>
  +    </s1>
  +    <s1 title="The Generators in Apache Cocoon">
  +      <ul>
  +        <li><link href="directory-generator.html">Directory Generator</link></li>
  +        <li><link href="file-generator.html">File Generator</link> (The default 
generator)</li>
  +        <li><link href="extractor-generator.html">Fragment Extractor 
Generator</link> (optional: Batik block)</li>
  +        <li><link href="html-generator.html">HTML Generator</link> (optional: HTML 
block)</li>
  +        <li><link href="imagedirectory-generator.html">Image Directory 
Generator</link></li>
  +        <li><link href="jsp-generator.html">JSP Generator</link> (optional: JSP 
block)</li>
  +        <li><link href="linkstatus-generator.html">LinkStatus Generator</link></li>
  +        <li>MP3 Directory Generator (no documentation exists)</li>
  +        <li><link href="error-generator.html">Notifying Generator</link></li>
  +        <li><link href="php-generator.html">Php Generator</link> (optional: PHP 
block)</li>
  +        <li><link href="profile-generator.html">Profile Generator</link> (optional: 
Profiler block)</li>
  +        <li><link href="request-generator.html">Request Generator</link></li>
  +        <li><link href="script-generator.html">Script Generator</link> (optional: 
BSF block)</li>
  +        <li><link href="search-generator.html">Search Generator</link> (optional: 
Lucene block)</li>
  +        <li><link href="serverpages-generator.html">Server Pages 
Generator</link></li>
  +        <li><link href="status-generator.html">Status Generator</link></li>
  +        <li><link href="stream-generator.html">Stream Generator</link></li>
  +        <li><link href="velocity-generator.html">Velocity Generator</link> 
(optional: Velocity block)</li>
  +        <li><link href="wsproxy-generator.html">Web Service Proxy Generator</link> 
(optional: Proxy block)</li>
  +        <li><link href="xmldbcollection-generator.html">XML:DB Collection 
Generator</link> (optional: XMLDB block)</li>
  +        <li><link href="xmldb-generator.html">XML:DB Generator</link> (optional: 
XMLDB block)</li>
  +        <li><link href="xpathdirectory-generator.html">XPath Directory 
Generator</link></li>
  +      </ul>
  +    </s1>
  +  </body>
   </document>
  
  
  

Reply via email to