ivelin 2002/07/04 14:19:07
Added: src/webapp/samples/webserviceproxy README.txt sitemap.xmap
src/webapp/samples/webserviceproxy/stylesheets
newWizard2html.xsl
Log:
no message
Revision Changes Path
1.3 +0 -0 xml-cocoon2/src/webapp/samples/webserviceproxy/README.txt
1.3 +0 -0
xml-cocoon2/src/webapp/samples/webserviceproxy/sitemap.xmap
1.1
xml-cocoon2/src/webapp/samples/webserviceproxy/stylesheets/newWizard2html.xsl
Index: newWizard2html.xsl
===================================================================
<?xml version="1.0" encoding="UTF-8"?>
<!--
Cocoon WebServiceProxyGenerator
Feedback Wizard processing and displaying stylesheet.
This stylesheet merges an XMLForm document into
a pre-final HTML document. It includes other presentational
parts of a page orthogonal to the xmlform.
author: Ivelin Ivanov, [EMAIL PROTECTED], June 2002
-->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xf="http://xml.apache.org/cocoon/xmlform/2002"
exclude-result-prefixes="xalan"
>
<xsl:template match="document">
<html>
<head>
<title>Embedding One Web Site into another with
Cocoon WebServiceProxyGenerator Demo </title>
<style type="text/css">
<![CDATA[
H1{font-family : sans-serif,Arial,Tahoma;color :
white;background-color : #009900;}
BODY{font-family : sans-serif,Arial,Tahoma;color :
black;background-color : #AAFFAA;}
B{color : white;background-color : #5090a0;}
HR{color : #0086b2;}
input { background-color: #FFFFFF; color: #000099; border: 1px
solid #0000FF; }
table { background-color: #DDDDFF; color: #000099; font-size:
x-small; border: 2px solid brown;}
select { background-color: #FFFFFF; color: #000099 }
.error { color: #FF0000; }
.invalid { color: #FF0000; border: 2px solid #FF0000; }
.info { color: #0000FF; border: 1px solid #0000FF; }
.repeat { background-color: #AAAACC; border: 0px inset
#999999;border: 1px inset #999999; width: 100%; }
.group { background-color: #AAAACC; border: 0px inset
#999999;border: 0px inset #999999; width: 100%; }
.sub-table { background-color: #AAAACC; border: 1px inset black;
}
.button { background-color: green; color: white; border: 5px
solid #AAFFAA; width: 90px; }
.plaintable { background-color: #AAAACC; border: 1px inset
black;border: 1px inset black; width: 100%; }
]]>
</style>
</head>
<body>
<table border="3">
<tr>
<td colspan="2" align="center">
<br/>
Embedding One Web Site into Another
<br/><br/>
made easy with Cocoon
<br/><br/>
</td>
</tr>
<tr>
<td width="20%" valign="top">
Navigation bar of the containing web site
<ul>
<li>
Remote Web Site
</li>
<li>
Local Content
</li>
<li>
All look like ONE.
</li>
</ul>
</td>
<td>
This is area for an embedded web site.
<br/>
<xsl:apply-templates />
</td>
</tr>
<tr>
<td colspan="2">
<p>
Remote Web Site Integration is an easy task with Cocoon.
This demo shows how the WebServiceProxyGenerator
sitemap component,
combined with the XMLForm framework and XSLT, allows
vendors to share interactive content with little effort.
</p>
<p>
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.
</p>
<p>
This demo embeds the Cocoon Feedback Wizard
application, which produces an XML
view containing both static data and interactive forms.
Having a client independent content format, allows this
view to be
pulled to the embedding web site (this demo) and styled
with XSLT
in the Look & Feel of the site.
</p>
<p>
<i>
Ok, styling presentation is easy to understand, but how
is a form submitted to the original site?
</i>
<br/>
Since the form markup in the XML content of an embedded
page uses relative URL
address for the target, once 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>
<i>
Hm, but the Feedback Wizard example maintains a session
while going through
multiple pages. So, how is the containing site
propagating the end user session to the
to the embedded site?
</i>
<br/>
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 does not require authentication,
then everything is transparent
to the developer of the containing web site. Otherwise
the WebServiceProxyGenerator
has to be extended to override the procedure for
initating session with the remote site.
</p>
<p>
<i>What transport protocols are supported?</i>
<br/>
HTTP 1.0, HTTP 1.1, HTTPS.
</p>
<p>
Have more questions? Look at the code, it is really
simple.
If you need advise, search through the Cocoon mailing
lists archives.
If you can't find the answer, email your question to
the Cocoon mailing lists.
Finally, if you need to contact me, send email to
Ivelin Ivanov, [EMAIL PROTECTED]
</p>
<p>
If you like this component, please help with
documentation.
Write an FAQ, HOW-TO or User Guide.
</p>
<p>
</p>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="xf:form">
<xf:form method="post">
<xsl:copy-of select="@*" />
<br/><br/>
<i><u>... and This is a Personalized HTML Form:</u></i>
<br/><br/>
<table align="center" border="0" class="sub-table">
<tr>
<td align="center" colspan="3">
<h1>
<xsl:value-of select="xf:caption"/>
<hr/>
</h1>
</td>
</tr>
<xsl:if test="count(error/xf:violation) > 0">
<tr>
<td align="left" colspan="3"
class="{error/xf:violation[1]/@class}">
<p>
* There are
[<b><xsl:value-of
select="count(error/xf:violation)"/></b>]
errors. Please fix these errors and submit the form again.
</p>
<p>
<xsl:variable name="localViolations" select=".//xf:*[
child::xf:violation ]"/>
<xsl:for-each
select="error/xf:violation">
<xsl:variable name="eref" select="./@ref"/>
<xsl:if test="count ($localViolations[ @ref=$eref ])
= 0">
*
<xsl:value-of select="." />
<br/>
</xsl:if>
</xsl:for-each>
</p>
<p/>
</td>
</tr>
</xsl:if>
<xsl:for-each select="*[name() != 'xf:submit']">
<xsl:choose>
<xsl:when test="name() = 'error'"/>
<xsl:when test="xf:*">
<xsl:apply-templates select="."/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<tr>
<td align="center" colspan="3">
<xsl:for-each select="*[name() = 'xf:submit']">
<xsl:copy-of select="." />
<xsl:text> </xsl:text>
</xsl:for-each>
</td>
</tr>
</table>
</xf:form>
</xsl:template>
<xsl:template match="xf:repeat">
<tr width="100%">
<td colspan="3" width="100%">
Repeat elements:
<table class="repeat">
<xsl:apply-templates select="*"/>
</table>
</td>
</tr>
</xsl:template>
<xsl:template match="xf:group">
<tr width="100%">
<td width="100%" colspan="2">
Group element:
<table class="group" border="0">
<xsl:apply-templates select="*"/>
</table>
</td>
</tr>
</xsl:template>
<xsl:template match="xf:[EMAIL PROTECTED]">
<div align="center">
<hr width="30%"/>
<br/>
<font size="-1">
<code>
[*]
<xsl:value-of select="xf:caption" /> :
<xsl:copy-of select="." />
</code>
</font>
<br/>
</div>
</xsl:template>
<xsl:template match="xf:*">
<tr>
<td align="left">
<xsl:value-of select="xf:caption" />
</td>
<td align="left">
<table class="plaintable">
<tr>
<td align="left">
<xsl:copy-of select="." />
</td>
<xsl:if test="xf:violation">
<td align="left" class="{xf:violation[1]/@class}" width="100%">
<xsl:for-each select="xf:violation">
* <xsl:value-of select="." />
<br/>
</xsl:for-each>
</td>
</xsl:if>
</tr>
</table>
</td>
</tr>
</xsl:template>
<xsl:template match="*">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]