Cocoon Demonstration (XSLT)
Gerry de Koning

Setting up Cocoon

I cannot cover all the details of setting up Cocoon and a servlet-capable web server, such as Tomcat. Here are some hints which may help you do this for the first time.

  1. Install Tomcat from Apache.
  2. Install Cocoon from Apache.
  3. Create a directory for your web-app (these demos). For this example, I will assume it is "C:\cocoon\demo"
  4. Install the demo files used in this demonstration in this directory.
  5. Edit the Tomcat "server.xml" configuration file to include the following web-app (near the bottom of the file):
    An extract from server.xml
             <Context path="/demo-cocoon"
    	                  docBase="C:/demo/cocoon"
    			  debug="0"
    			  reloadable="true" >
    	 </Context>
    
  6. Edit the "tomcat.bat" or "tomcat.sh" file in Tomcat's bin directory so that the classes necessary for Cocoon are in the classpath.
    tomcat.bat
    ...
    set JAVA_HOME=C:\jdk1.3
    set TOMCAT_HOME=C:\Apache\tomcat\jakarta-tomcat-3.2.1
    ...
    :setClasspath
    set CP=%TOMCAT_HOME%\classes
    
    rem Cocoon classes and libraries
    set COCOON_HOME=c:\Apache\cocoon\cocoon-1.8.2
    set CP=%CP%;%COCOON_HOME%\lib\xerces_1_2.jar
    set CP=%CP%;%COCOON_HOME%\lib\xalan_1_2_D02.jar
    set CP=%CP%;%COCOON_HOME%\lib\fop_0_15_0.jar
    set CP=%CP%;%COCOON_HOME%\lib\turbine-pool.jar
    set CP=%CP%;%COCOON_HOME%\lib\w3c.jar
    set CP=%CP%;%COCOON_HOME%\bin\cocoon.jar
    ...
    
  7. Create a directory within your web-app home called "WEB-INF".
  8. In the WEB-INF directory create a web.xml by copying the web.xml from the Tomcat web-apps examples directory and modifying it to include the following lines:
    web.xml
    ...
    <web-app>
        <servlet>
        	<servlet-name>
        		org.apache.cocoon.Cocoon
        	</servlet-name>
        	<servlet-class>
        		org.apache.cocoon.Cocoon
        	</servlet-class>
        	<init-param>
        		<param-name>
        			properties
        		</param-name>
        		<param-value>
        			WEB-INF/cocoon.properties
        		</param-value>
        	</init-param>
        </servlet>
        <servlet-mapping>
        	<servlet-name>
        		org.apache.cocoon.Cocoon
        	</servlet-name>
        	<url-pattern>
        		*.xml
        	</url-pattern>
        </servlet-mapping>
    ...
    
  9. Copy the cocoon.properties file from the Cocoon install directory to the new WEB-INF directory
  10. Start Tomcat
  11. Start your browser and enter the URL of the demo web-app.

These instructions are far from complete. There is more good information about using Cocoon in Brett McLaughlin's book, "Java and XML." You should also read the documentation you receive with Tomcat and Cocoon. However, be warned: the setup procedure is not simple for the uninitiated. Be prepared to spend some time reading and experimenting.

The XML file

The file, "resources.xml," which will be used for this demo is wrapped in the follwing XML wrapper file.

index.xml
<?xml version="1.0" ?>
<!DOCTYPE page [
<!ENTITY content SYSTEM "resources.xml" >
]>

<?cocoon-process type="xslt" ?>
<?xml-stylesheet href="resources.xsl" type="text/xsl" ?>

<page>
&content;
</page>

And here is the data file.

resources.xml
<?xml version="1.0" encoding="utf-8" ?>

<resource-collection title="XML Resources">

<section id="lists" title="Resource Collections">

<resource
   name="XML Coverpages"
   href="http://xml.coverpages.org/">
   <description>
   The XML Coverpages is a very comprehensive and
   well-organized introduction to resources for
   XML and related technologies.  Robin Cover, the
   editor, has been covering XML and SGML for long
   time.  This site is sponsored by OASIS, the
   XML industry consortium.
   </description>
   </resource>

<resource 
   name="XML.org" 
   href="http://www.xml.org/">
   <description>
   An industry consortium, OASIS, provides this 
   portal.  It carries news and offers a good
   XML resources section.  It also has a registry
   for XML-based mark-up languages used by many
   industries.  Before creating your own document
   types, check them out.
   </description>
   </resource>

<resource
   name="XML.com"
   href="http://www.xml.com/">
   <description>
   O'Reilly, the publishers, provide this site with
   news, articles, tutorials, resources by business type, and
   links to tools.
   </description>
   </resource>
   
<resource
   name="W3C"
   href="http://www.w3c.org/xml/">
   <description>
   The ultimate home base for XML is the W3C (World
   Wide Web Consortium).  Look here for news, standards,
   white papers and more.  This site will be of interest
   to anyone following the evolution of XML standards.
   </description>
   </resource>

<resource
   name="The One-stop XML Resource Center"
   href="http://members.ozemail.com.au/~sakthi/Common/xml.html">
   <description>
   An extensive list of XML links.
   </description>
   </resource>

</section>

<section id="standards" title="Standards">
<description>
These standards are the ultimate references for XML technologies.
They can be difficult to read and understand.  A good text or
classroom course can help you read these documents and understand
the finer points of each technology.
</description>

<resource
   name="Tim Bray's Annotated XML"
   href="http://www.xml.com/axml/axml.html">
   <description>
   At some point, most XML developers need to refer to the 
   <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
   official XML 1.0 Specification</a>. It is not easy to read.
   Tim Bray, one of its authors, has provided a wonderful
   annotated version of the XML Specification.  It contains
   the exact, unaltered text of the W3C XML 1.0 specification,
   but adds links to notes covering usage, history, 
   technical details, and other commentary.
   </description>
   </resource>

<resource
   name="XML Schemas"
   href="http://www.w3c.org/XML/Schema">
   <description>
   When creating an XML-compliant markup-language, a designer
   can either use a Document Type Definition (DTD) or an
   XML Schema to define the legal content: elements, 
   attributes and ordering.  The DTD, based on an approach
   used in SGML,  was described in XML 1.0. The W3C XML Schema 
   Recommendation (that's what they call their official standards) 
   specifies another way to specify what content is valid.
   Schemas are XML files and so can be created and parsed by
   XML tools.  If you can read XML, you can figure out the
   syntax of XML Schema files.  Many people expect XML Schemas
   to become more common, and DTDs less common, especially for
   encoding data in XML files.
   </description>
   </resource>

<resource
   name="XLink, XPointer and XBase"
   href="http://www.w3.org/XML/Linking">
   <description>
   When XML was first released, there was no way to specify
   a location or range within an XML document, nor was there
   a way to specify linkages between documents, similar to
   HTML's hyperlinks.  This has now been solved by this
   trio of standards covering XML linking.
   </description>
   </resource>

<resource
   name="XML Namespaces"
   href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">
   <description>
   As XML becomes widely used, people will create documents
   which use element tags from more than one XML-based
   mark-up language.  This creates the possibility of 
   conflicts of element names.  This standard defines how
   namespaces should be used to make sure that every
   element in every XML language is unique.
   </description>
   </resource>

<resource
   name="Stylesheets"
   href="http://www.w3c.org/Style/">
   <description>
   Stylesheets describe how to transform or render a 
   document.  This page is the home base for all
   W3C style activities, including Cascading
   Style Sheets (CSS), XML Stylesheets, and DSSSL.
   </description>
   </resource>

<resource
   name="XSL Transformations"
   href="http://www.w3.org/TR/xslt.html">
   <description>
   This is the standard which describes the XSLT language.
   It covers all the elements, attributes and selection
   patterns and the functions which can be used in
   selection patterns.  Like the other standards, it is
   not easy reading, but it is a very useful reference.
   </description>
   </resource>

<resource
   name="XSL Formatting Objections"
   href="http://www.w3.org/TR/2000/CR-xsl-20001121/">
   <description>
   This is the XSL standard which covers XSL formatting
   objects.  Technically, it includes XSLT by reference,
   but you will be looking here when you need a 
   reference for XSL:FO.
   </description>
   </resource>

<resource
   name="Simple API for XML"
   href="http://www.megginson.com/SAX/index.html">
   <description>
   The SAX standard did not come from W3C, but rather
   from an urgent need felt by XML programmers.
   Dave Megginson led the effort and the SAX home
   pages are still on his site.  Find SAX 
   references here for Java, Python, COM, Perl and C++.
   </description>
   </resource>

<resource
   name="Document Object Model"
   href="http://www.w3.org/DOM/DOMTR">
   <description>
   The Document Object Model (DOM) from W3C is an
   object-oriented view of an XML or HTML document.
   The standard defines the model and language
   bindings for Java and ECMAScript (Javascript).
   </description>
   </resource>

</section>

<section id="players" title="Consortia, Vendors and Publishers">

<resource
   name="XML at W3C"
   href="http://www.w3c.org/XML/">
   <description>
   XML was created at the World Wide Web Consortium (W3C). This
   site is the home base for standards and news about the 
   evolution of the standards.  It is not the easiest place
   to begin when learning about XML.  It is, however, an
   essential site for authoritative reference information.
   </description>
   </resource>

<resource
   name="OASIS"
   href="http://www.oasis-open.org/">
   <description>
   OASIS, the Organization for the Advancement of Structured
   Information Standards, is a large industry consortium
   which is promoting and coordinating the use of XML in many
   industries.  This site covers news and provides links to
   technical information about their projects and other XML
   resources.
   </description>
   </resource>


<resource
   name="XML at Apache"
   href="http://xml.apache.org/">
   <description>
   Apache, an Open-Source Software Foundation, is very active
   in developing tools for XML.  Based on initial work done by
   Sun and IBM, they provide the following tools:
   <ul><li><strong>Xerces</strong>, an XML parser which provides
           both SAX and DOM APIs. (Java, C++, Perl)</li>
       <li><strong>Crimson</strong>, another Java XML parser</li>
       <li><strong>Xalan</strong>, an XSL Tranformation processor
           (Java, C++)</li>
       <li><strong>FOP</strong>, an XSL Formatting processor (Java)</li>
       <li><strong>Cocoon</strong>, an XML document processing servlet</li>
       <li><strong>SOAP</strong>, a Java toolkit to simplify creating 
            SOAP clients and servers</li>
   </ul>
   Apache XML tools work well with their Tomcat and Apache web servers.
   </description>
   </resource>

<resource
   name="XML at IBM"
   href="http://www.ibm.com/developer/xml/">
   <description>
   IBM is committed to XML. This site, the XML Zone, is where
   developers can go for good quality tutorials,
   feature articles, tools, product information sample code,
   case studies and other resources.
   </description>
   </resource>

<resource
   name="XML at Lotus"
   href="http://www.lotus.com/developers/devbase.nsf/homedata/xml">
   <description>
   Lotus provides many resources for developers who are using XML with
   the Domino Notes web servers.
   </description>
   </resource>

<resource
   name="XML at Microsoft"
   href="http://www.microsoft.com/xml/">
   <description>
   XML is an essential part of Microsoft's .NET products.  In addition
   to the Microsoft XML parser, MSXML, this site contains many tutorials,
   technical articles, code examples, and links to standards, product
   information and other reference material.
   </description>
   </resource>

<resource
   name="XML at Oracle"
   href="http://technet.oracle.com/tech/xml/">
   <description>
   Oracle provides a full suite of XML software development kits for
   Java, C, C++ and PL/SQL.  As usual, there are links to whitepapers,
   products and more.
   </description>
   </resource>

<resource
   name="XML at Sun"
   href="http://www.sun.com/xml/">
   <description>
   This Sun site covers XML news, tutorials, FAQs, and much more.
   It also lists all the Sun products using XML.
   The other Sun XML Site, 
   <a href="http://java.sun.com/xml/">Java APIs for XML</a>, is the
   site for Java XML developers.  It presents the core Java APIs for 
   programming XML applications.
   </description>
   </resource>

</section>

<section id="apps" title="Applications of XML">

<resource
   name="SOAP: The Standard"
   href="http://www.w3.org/TR/SOAP/">
   <description>
   SOAP stands for Simple Object Access Protocol.  SOAP is a
   lightweight protocol for exchanging data among programs on
   a network.  It is used for the interactions between client
   programs and servers using the web's HTTP, email or other
   transport mechanisms.  The W3C SOAP site is the home for
   the official standards and related news.
   </description>
   </resource>

<resource
   name="SOAP: Soapware.org"
   href="http://www.soapware.org/">
   <description>
   Dave Winer of UserLand has been involved in developing the
   SOAP standards since the beginning.  This site is the
   place developers should begin looking for specifications,
   implementations, news, tutorials, articles and more.
   </description>
   </resource>

<resource
   name="SOAP: Aaron Skonnard's article about SOAP"
   href="http://www.microsoft.com/mind/0100/soap/soap.asp">
   <description>
   This detailed tutorial introduction to SOAP
   is a bit dated (January 2000; SOAP 0.9), but still an
   excellent place to start. Skonnard starts with the reasons
   why you need SOAP, moves on to look at the protocol itself,
   shows a sample SOAP client and, finally, points to additional 
   resources.
   </description>
   </resource>

<resource
   name="SOAP: Microsoft's SOAP site"
   href="http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000523">
   <description>
   Microsoft has been involved in developing the SOAP standard
   from the beginning and has incorporated it into BizTalk Server.
   This site covers news, tutorials, Microsoft's toolkits for SOAP
   and more.
   </description>
   </resource>

<resource
   name="SOAP: Apache's SOAP Documentation"
   href="http://xml.apache.org/soap/docs/index.html">
   <description>
   The Apache SOAP documentation documents their toolkits for
   building SOAP clients and servers.  It lists the current
   limitations of these toolkits.  You will also find links to
   a number of excellent SOAP sites.
   </description>
   </resource>

<resource
   name="SOAP: Web services and CORBA"
   href="http://www-106.ibm.com/developerworks/webservices/library/ws-arc3">
   <description>
   This article by Dan Grisolfi of IBM discusses SOAP and 
   compares it with CORBA and DCOM.  In addition to showing the
   similarities and differences between SOAP and the others, he
   predicts, with reasons, that SOAP will succeed where the others
   have failed.
   </description>
   </resource>

<resource
   name="SVG: W3C's Scalable Vector Graphics"
   href="http://www.w3c.org/Graphics/SVG/">
   <description>
   W3C's Graphics working group is completing the SVG standard
   for describing graphics and pictures in XML files.
   </description>
   </resource>

<resource
   name="BizTalk.org"
   href="http://www.biztalk.org/resources/resources.asp">
   <description>
   BizTalk is a Microsoft-developed protocol for conducting
   commerce among businesses.  It uses SOAP and XML.  This
   site contains technical documentation, links to product
   information, and more.
   </description>
   </resource>

<resource
   name="BizTalk at Microsoft"
   href="http://www.microsoft.com/biztalk/">
   <description>
   BizTalk Server is Microsoft's product for implementing
   the BizTalk framework.  This site gives product information,
   news, developer tips, case studies and more.
   </description>
   </resource>

<resource
   name="ebXML"
   href="http://www.ebxml.org/">
   <description>
   ebXML is a new set of standards for conducting business
   electronically among companies around the world.  It was
   developed by a large consortium of industry groups,
   standards bodies, businesses and the United Nations body
   charged with facilitating world trade.  It is based on
   extensive experience with EDI.  But it is much more lightweight
   and simple to use than EDI.  ebXML is supported by many
   high-tech and traditional industry groups. This site is 
   the home base for standards, news, an FAQ and more.
   </description>
   </resource>

<resource
   name="ebXML:  David Mertz: Understanding ebXML"
   href="http://www-106.ibm.com/developerworks/xml/library/x-ebxml/index.html">
   <description>
   This article is an introduction to ebXML.  After describing 
   what ebXML is, Mertz goes on to discuss how business process
   models are described and shared so that Company A can 
   publish its business services, Company B can discover them,
   and they can automatically set up a way to do electronic
   business with each other.  The article concludes with a list
   of ebXML resources.
   </description>
   </resource>

<resource
   name="OFX: Open Financial Exchange"
   href="http://www.ofx.net/ofx/default.asp">
   <description>
   OFX is a set of XML-based standards for communicating
   financial information to, from and among financial 
   institutions such as banks and brokerage houses.  These
   are the standards used by Quicken to get your bank
   account information online.  
   </description>
   </resource>

<resource
   name="NewsML Home"
   href="http://www.iptc.org/NMLIntro.htm">
   <description>
   There is a need today to manage news stories and not
   lose track of the associated pictures, video and audio.
   Sometimes the story is made available in several 
   languages at once.  NewsML was developed by the
   International Press Telecommunications Council to 
   meet the needs of wire services, publishers and other
   news organizations.  This XML-based language is used
   for news items and their management.
   </description>
   </resource>

<resource
   name="XML for News Organizations"
   href="http://www.xmlnews.org/">
   <description>
   This site covers news, specifications, software and other
   resources for using XML in news organizations.  Besides
   NewsML they cover ICE, NITF, PRISM and RSS.  They have
   a link to the excellent <a href="http://newsshowcase.rtrlondon.co.uk/">
   NewsML page</a> at Reuters, who are committed to using it.
   </description>
   </resource>

</section>

<section id="examples" title="Comdex Examples">

<description>
On July 10, 2001, Gerry de Koning delivered a one-day tutorial
at Comdex Canada 2001 in Toronto.  These are the materials used
for examples and demonstrations.  
</description>

<resource
   name="ZIP file of all Comdex Tutorial Examples"
   href="comdex-xml.zip">
   <description>
   This file contains all the files used in demonstrations during
   the tutorial, except one or two which are copyright and readily
   available from websites listed in this resource guide.  These
   files are also available as a <a href="comdex-xml.tar">UNIX tar</a>
   file.
   </description>
   </resource>

<resource
   name="weather.xml - a sample XML file"
   href="weather.html">
   <description>
   This is a sample file of some weather information. It
   is used for several demos in this course.
   </description>
   </resource>

<resource
   name="report.xml - a sample XML file"
   href="report.html">
   <description>
   This is a very simple XML file which represents a report.
   The file contains a preface (1 sentence) and a chapter (2 paragraphs
   including a recommendation).
   </description>
   </resource>

<resource
   name="resources.xml - a sample XML file"
   href="resources.html">
   <description>
   This XML file contains the raw data used to create this web page
   of resources.
   </description>
   </resource>

<resource
   name="SAX Demo (Java)"
   href="SAXDemo.html">
   <description>
   This demonstration program reads an XML file, and displays the
   sequence of events passed to the application by the SAX parser.
   </description>
   </resource>

<resource
   name="DOM Demo (Java)"
   href="DOMDemo.html">
   <description>
   This demonstration program reads the sample file "weather.xml" and
   modifies it by adding a Fahrenheit equivalent to every Celsius
   temperature.  The resulting XML document is written to a file.
   </description>
   </resource>

<resource
   name="XSLT Demo (Cocoon)"
   href="XSLTDemo.html">
   <description>
   This page describes the files used to get Cocoon to serve up
   the "resources.xml" data file as an HTML page.
   </description>
   </resource>

<resource
   name="XSLFO Demo (Cocoon)"
   href="XSLFODemo.html">
   <description>
   This demo consists of three XML files: a wrapper file, a data
   file, and an XSL stylesheet.  These work together to create a 
   PDF output file from the data.  This demonstration shows how
   XML can be used to separate data from document design.
   </description>
   </resource>


</section>

</resource-collection>

The XSL file

This XML file will be processed by Cocoon using the following XSLT file, "resources.xsl."

resources.xsl
<?xml version="1.0" ?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0">

<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="/*/resource-collection/@title" /></title>
</head>

<body bgcolor="#FFFFFF">
<div align="center">
<font size="+1" face="verdana,arial,helvetica,sans-serif" color="blue">
<xsl:value-of select="/*/resource-collection/@title" />
</font></div><xsl:text>
</xsl:text>
<p align="center">
<font face="verdana,arial,helvetica,sans-serif">
<xsl:text> | </xsl:text>
<xsl:for-each select=".//section">
<xsl:element name="a">
    <xsl:attribute name="href">#<xsl:value-of select="@id"/>
    </xsl:attribute>
    <xsl:value-of select="@title" />
    </xsl:element><xsl:text> | </xsl:text>
</xsl:for-each>
</font></p>
<xsl:apply-templates /></body>
</html>
</xsl:template>

<xsl:template match="resource-list">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="section">
<xsl:element name="a">
    <xsl:attribute name="name"><xsl:value-of select="@id"/>
    </xsl:attribute>
    </xsl:element>
<table border="0" width="100%"><tr><td>
<table border="0" cellspacing="0" width="100%">
<tr><td bgcolor="blue" width="3%"><font color="blue">
<xsl:text> . </xsl:text></font></td>
<td bgcolor="blue" width="97%">
<font color="white" face="verdana,arial,helvetica,sans-serif"><b>
<xsl:value-of select="@title" />
</b></font>
</td></tr></table></td></tr>
<xsl:apply-templates /></table>
</xsl:template>


<xsl:template match="resource">
<tr><td>
<p><font face="verdana,arial,helvetica,sans-serif"><b>
<xsl:element name="a">
  <xsl:attribute name="href"><xsl:value-of select="@href" /></xsl:attribute>
  <xsl:value-of select="@name" />
  </xsl:element>
</b></font></p></td></tr>
<xsl:apply-templates />
</xsl:template>

<xsl:template match="resource/description">
<tr><td><blockquote><xsl:call-template name="identity"/>
</blockquote></td></tr>
</xsl:template>

<xsl:template match="section/description">
<tr><td><p><xsl:call-template name="identity" />
</p><p><br /></p>
</td></tr>
</xsl:template>

<xsl:template name="identity" match="@*|node()">
   <xsl:copy>
   <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>
</xsl:template>

</xsl:stylesheet>

The Result

If you have Cocoon running, you will be able to point your browser at the "index.xml" file and get an XML resources page back. The raw HTML which Cocoon creates is listed here.

resources.xsl
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><title>XML Resources</title></head><body bgcolor="#FFFFFF"><div align="center"><font color="blue" face="verdana,arial,helvetica,sans-serif" size="+1">XML Resources</font></div>
<p align="center"><font face="verdana,arial,helvetica,sans-serif"> | <a href="#lists">Resource Collections</a> | <a href="#standards">Standards</a> | <a href="#players">Consortia, Vendors and Publishers</a> | <a href="#apps">Applications of XML</a> | <a href="#examples">Comdex Examples</a> | </font></p><?xml-stylesheet href="resources.xsl" type="text/xsl" ?><page>


<resource-collection title="XML Resources">

<a name="lists"></a><table border="0" width="100%"><tr><td><table border="0" cellspacing="0" width="100%"><tr><td bgcolor="blue" width="3%"><font color="blue"> . </font></td><td bgcolor="blue" width="97%"><font color="white" face="verdana,arial,helvetica,sans-serif"><b>Resource Collections</b></font></td></tr></table></td></tr>

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://xml.coverpages.org/">XML Coverpages</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   The XML Coverpages is a very comprehensive and
   well-organized introduction to resources for
   XML and related technologies.  Robin Cover, the
   editor, has been covering XML and SGML for long
   time.  This site is sponsored by OASIS, the
   XML industry consortium.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.xml.org/">XML.org</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   An industry consortium, OASIS, provides this 
   portal.  It carries news and offers a good
   XML resources section.  It also has a registry
   for XML-based mark-up languages used by many
   industries.  Before creating your own document
   types, check them out.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.xml.com/">XML.com</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   O'Reilly, the publishers, provide this site with
   news, articles, tutorials, resources by business type, and
   links to tools.
   </description></blockquote></td></tr>
   
   
<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3c.org/xml/">W3C</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   The ultimate home base for XML is the W3C (World
   Wide Web Consortium).  Look here for news, standards,
   white papers and more.  This site will be of interest
   to anyone following the evolution of XML standards.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://members.ozemail.com.au/~sakthi/Common/xml.html">The One-stop XML Resource Center</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   An extensive list of XML links.
   </description></blockquote></td></tr>
   

</table>

<a name="standards"></a><table border="0" width="100%"><tr><td><table border="0" cellspacing="0" width="100%"><tr><td bgcolor="blue" width="3%"><font color="blue"> . </font></td><td bgcolor="blue" width="97%"><font color="white" face="verdana,arial,helvetica,sans-serif"><b>Standards</b></font></td></tr></table></td></tr>
<tr><td><p><description>
These standards are the ultimate references for XML technologies.
They can be difficult to read and understand.  A good text or
classroom course can help you read these documents and understand
the finer points of each technology.
</description></p><p><br></p></td></tr>

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.xml.com/axml/axml.html">Tim Bray's Annotated XML</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   At some point, most XML developers need to refer to the 
   <a href="http://www.w3.org/TR/2000/REC-xml-20001006">
   official XML 1.0 Specification</a>. It is not easy to read.
   Tim Bray, one of its authors, has provided a wonderful
   annotated version of the XML Specification.  It contains
   the exact, unaltered text of the W3C XML 1.0 specification,
   but adds links to notes covering usage, history, 
   technical details, and other commentary.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3c.org/XML/Schema">XML Schemas</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   When creating an XML-compliant markup-language, a designer
   can either use a Document Type Definition (DTD) or an
   XML Schema to define the legal content: elements, 
   attributes and ordering.  The DTD, based on an approach
   used in SGML,  was described in XML 1.0. The W3C XML Schema 
   Recommendation (that's what they call their official standards) 
   specifies another way to specify what content is valid.
   Schemas are XML files and so can be created and parsed by
   XML tools.  If you can read XML, you can figure out the
   syntax of XML Schema files.  Many people expect XML Schemas
   to become more common, and DTDs less common, especially for
   encoding data in XML files.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3.org/XML/Linking">XLink, XPointer and XBase</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   When XML was first released, there was no way to specify
   a location or range within an XML document, nor was there
   a way to specify linkages between documents, similar to
   HTML's hyperlinks.  This has now been solved by this
   trio of standards covering XML linking.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">XML Namespaces</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   As XML becomes widely used, people will create documents
   which use element tags from more than one XML-based
   mark-up language.  This creates the possibility of 
   conflicts of element names.  This standard defines how
   namespaces should be used to make sure that every
   element in every XML language is unique.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3c.org/Style/">Stylesheets</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   Stylesheets describe how to transform or render a 
   document.  This page is the home base for all
   W3C style activities, including Cascading
   Style Sheets (CSS), XML Stylesheets, and DSSSL.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3.org/TR/xslt.html">XSL Transformations</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This is the standard which describes the XSLT language.
   It covers all the elements, attributes and selection
   patterns and the functions which can be used in
   selection patterns.  Like the other standards, it is
   not easy reading, but it is a very useful reference.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3.org/TR/2000/CR-xsl-20001121/">XSL Formatting Objections</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This is the XSL standard which covers XSL formatting
   objects.  Technically, it includes XSLT by reference,
   but you will be looking here when you need a 
   reference for XSL:FO.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.megginson.com/SAX/index.html">Simple API for XML</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   The SAX standard did not come from W3C, but rather
   from an urgent need felt by XML programmers.
   Dave Megginson led the effort and the SAX home
   pages are still on his site.  Find SAX 
   references here for Java, Python, COM, Perl and C++.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3.org/DOM/DOMTR">Document Object Model</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   The Document Object Model (DOM) from W3C is an
   object-oriented view of an XML or HTML document.
   The standard defines the model and language
   bindings for Java and ECMAScript (Javascript).
   </description></blockquote></td></tr>
   

</table>

<a name="players"></a><table border="0" width="100%"><tr><td><table border="0" cellspacing="0" width="100%"><tr><td bgcolor="blue" width="3%"><font color="blue"> . </font></td><td bgcolor="blue" width="97%"><font color="white" face="verdana,arial,helvetica,sans-serif"><b>Consortia, Vendors and Publishers</b></font></td></tr></table></td></tr>

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3c.org/XML/">XML at W3C</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   XML was created at the World Wide Web Consortium (W3C). This
   site is the home base for standards and news about the 
   evolution of the standards.  It is not the easiest place
   to begin when learning about XML.  It is, however, an
   essential site for authoritative reference information.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.oasis-open.org/">OASIS</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   OASIS, the Organization for the Advancement of Structured
   Information Standards, is a large industry consortium
   which is promoting and coordinating the use of XML in many
   industries.  This site covers news and provides links to
   technical information about their projects and other XML
   resources.
   </description></blockquote></td></tr>
   


<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://xml.apache.org/">XML at Apache</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   Apache, an Open-Source Software Foundation, is very active
   in developing tools for XML.  Based on initial work done by
   Sun and IBM, they provide the following tools:
   <ul><li><strong>Xerces</strong>, an XML parser which provides
           both SAX and DOM APIs. (Java, C++, Perl)
       <li><strong>Crimson</strong>, another Java XML parser
       <li><strong>Xalan</strong>, an XSL Tranformation processor
           (Java, C++)
       <li><strong>FOP</strong>, an XSL Formatting processor (Java)
       <li><strong>Cocoon</strong>, an XML document processing servlet
       <li><strong>SOAP</strong>, a Java toolkit to simplify creating 
            SOAP clients and servers
   </ul>
   Apache XML tools work well with their Tomcat and Apache web servers.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.ibm.com/developer/xml/">XML at IBM</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   IBM is committed to XML. This site, the XML Zone, is where
   developers can go for good quality tutorials,
   feature articles, tools, product information sample code,
   case studies and other resources.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.lotus.com/developers/devbase.nsf/homedata/xml">XML at Lotus</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   Lotus provides many resources for developers who are using XML with
   the Domino Notes web servers.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.microsoft.com/xml/">XML at Microsoft</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   XML is an essential part of Microsoft's .NET products.  In addition
   to the Microsoft XML parser, MSXML, this site contains many tutorials,
   technical articles, code examples, and links to standards, product
   information and other reference material.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://technet.oracle.com/tech/xml/">XML at Oracle</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   Oracle provides a full suite of XML software development kits for
   Java, C, C++ and PL/SQL.  As usual, there are links to whitepapers,
   products and more.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.sun.com/xml/">XML at Sun</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This Sun site covers XML news, tutorials, FAQs, and much more.
   It also lists all the Sun products using XML.
   The other Sun XML Site, 
   <a href="http://java.sun.com/xml/">Java APIs for XML</a>, is the
   site for Java XML developers.  It presents the core Java APIs for 
   programming XML applications.
   </description></blockquote></td></tr>
   

</table>

<a name="apps"></a><table border="0" width="100%"><tr><td><table border="0" cellspacing="0" width="100%"><tr><td bgcolor="blue" width="3%"><font color="blue"> . </font></td><td bgcolor="blue" width="97%"><font color="white" face="verdana,arial,helvetica,sans-serif"><b>Applications of XML</b></font></td></tr></table></td></tr>

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3.org/TR/SOAP/">SOAP: The Standard</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   SOAP stands for Simple Object Access Protocol.  SOAP is a
   lightweight protocol for exchanging data among programs on
   a network.  It is used for the interactions between client
   programs and servers using the web's HTTP, email or other
   transport mechanisms.  The W3C SOAP site is the home for
   the official standards and related news.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.soapware.org/">SOAP: Soapware.org</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   Dave Winer of UserLand has been involved in developing the
   SOAP standards since the beginning.  This site is the
   place developers should begin looking for specifications,
   implementations, news, tutorials, articles and more.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.microsoft.com/mind/0100/soap/soap.asp">SOAP: Aaron Skonnard's article about SOAP</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This detailed tutorial introduction to SOAP
   is a bit dated (January 2000; SOAP 0.9), but still an
   excellent place to start. Skonnard starts with the reasons
   why you need SOAP, moves on to look at the protocol itself,
   shows a sample SOAP client and, finally, points to additional 
   resources.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000523">SOAP: Microsoft's SOAP site</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   Microsoft has been involved in developing the SOAP standard
   from the beginning and has incorporated it into BizTalk Server.
   This site covers news, tutorials, Microsoft's toolkits for SOAP
   and more.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://xml.apache.org/soap/docs/index.html">SOAP: Apache's SOAP Documentation</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   The Apache SOAP documentation documents their toolkits for
   building SOAP clients and servers.  It lists the current
   limitations of these toolkits.  You will also find links to
   a number of excellent SOAP sites.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www-106.ibm.com/developerworks/webservices/library/ws-arc3">SOAP: Web services and CORBA</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This article by Dan Grisolfi of IBM discusses SOAP and 
   compares it with CORBA and DCOM.  In addition to showing the
   similarities and differences between SOAP and the others, he
   predicts, with reasons, that SOAP will succeed where the others
   have failed.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.w3c.org/Graphics/SVG/">SVG: W3C's Scalable Vector Graphics</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   W3C's Graphics working group is completing the SVG standard
   for describing graphics and pictures in XML files.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.biztalk.org/resources/resources.asp">BizTalk.org</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   BizTalk is a Microsoft-developed protocol for conducting
   commerce among businesses.  It uses SOAP and XML.  This
   site contains technical documentation, links to product
   information, and more.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.microsoft.com/biztalk/">BizTalk at Microsoft</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   BizTalk Server is Microsoft's product for implementing
   the BizTalk framework.  This site gives product information,
   news, developer tips, case studies and more.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.ebxml.org/">ebXML</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   ebXML is a new set of standards for conducting business
   electronically among companies around the world.  It was
   developed by a large consortium of industry groups,
   standards bodies, businesses and the United Nations body
   charged with facilitating world trade.  It is based on
   extensive experience with EDI.  But it is much more lightweight
   and simple to use than EDI.  ebXML is supported by many
   high-tech and traditional industry groups. This site is 
   the home base for standards, news, an FAQ and more.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www-106.ibm.com/developerworks/xml/library/x-ebxml/index.html">ebXML:  David Mertz: Understanding ebXML</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This article is an introduction to ebXML.  After describing 
   what ebXML is, Mertz goes on to discuss how business process
   models are described and shared so that Company A can 
   publish its business services, Company B can discover them,
   and they can automatically set up a way to do electronic
   business with each other.  The article concludes with a list
   of ebXML resources.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.ofx.net/ofx/default.asp">OFX: Open Financial Exchange</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   OFX is a set of XML-based standards for communicating
   financial information to, from and among financial 
   institutions such as banks and brokerage houses.  These
   are the standards used by Quicken to get your bank
   account information online.  
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.iptc.org/NMLIntro.htm">NewsML Home</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   There is a need today to manage news stories and not
   lose track of the associated pictures, video and audio.
   Sometimes the story is made available in several 
   languages at once.  NewsML was developed by the
   International Press Telecommunications Council to 
   meet the needs of wire services, publishers and other
   news organizations.  This XML-based language is used
   for news items and their management.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="http://www.xmlnews.org/">XML for News Organizations</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This site covers news, specifications, software and other
   resources for using XML in news organizations.  Besides
   NewsML they cover ICE, NITF, PRISM and RSS.  They have
   a link to the excellent <a href="http://newsshowcase.rtrlondon.co.uk/">
   NewsML page</a> at Reuters, who are committed to using it.
   </description></blockquote></td></tr>
   

</table>

<a name="examples"></a><table border="0" width="100%"><tr><td><table border="0" cellspacing="0" width="100%"><tr><td bgcolor="blue" width="3%"><font color="blue"> . </font></td><td bgcolor="blue" width="97%"><font color="white" face="verdana,arial,helvetica,sans-serif"><b>Comdex Examples</b></font></td></tr></table></td></tr>

<tr><td><p><description>
On July 10, 2001, Gerry de Koning delivered a one-day tutorial
at Comdex Canada 2001 in Toronto.  These are the materials used
for examples and demonstrations.  
</description></p><p><br></p></td></tr>

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="comdex-xml.zip">ZIP file of all Comdex Tutorial Examples</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This file contains all the files used in demonstrations during
   the tutorial, except one or two which are copyright and readily
   available from websites listed in this resource guide.  These
   files are also available as a <a href="comdex-xml.tar">UNIX tar</a>
   file.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="weather.html">weather.xml - a sample XML file</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This is a sample file of some weather information. It
   is used for several demos in this course.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="report.html">report.xml - a sample XML file</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This is a very simple XML file which represents a report.
   The file contains a preface (1 sentence) and a chapter (2 paragraphs
   including a recommendation).
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="resources.html">resources.xml - a sample XML file</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This XML file contains the raw data used to create this web page
   of resources.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="SAXDemo.html">SAX Demo (Java)</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This demonstration program reads an XML file, and displays the
   sequence of events passed to the application by the SAX parser.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="DOMDemo.html">DOM Demo (Java)</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This demonstration program reads the sample file "weather.xml" and
   modifies it by adding a Fahrenheit equivalent to every Celsius
   temperature.  The resulting XML document is written to a file.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="cocoon-xslt.html">XSLT Demo (Cocoon)</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This page describes the files used to get Cocoon to serve up
   the "resources.xml" data file as an HTML page.
   </description></blockquote></td></tr>
   

<tr><td><p><font face="verdana,arial,helvetica,sans-serif"><b><a href="cocoon-fo.html">XSLFO Demo (Cocoon)</a></b></font></p></td></tr>
   <tr><td><blockquote><description>
   This demo consists of three XML files: a wrapper file, a data
   file, and an XSL stylesheet.  These work together to create a 
   PDF output file from the data.  This demonstration shows how
   XML can be used to separate data from document design.
   </description></blockquote></td></tr>
   


</table>

</resource-collection>

</page></body></html>
<!-- This page was served in 1182 milliseconds by Cocoon 1.8.2 -->