<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE seminar SYSTEM "seminar.dtd" >
<seminar>
  <topic>
    <title>The What, Why, and How of XML</title>
    <slide>
      <heading>An Introduction to XML for
Technical Users</heading>
      <heading>
        <space/>
      </heading>
      <heading>Anthony B. Coates</heading>
      <heading>Equity Systems Pty Ltd</heading>
      <heading>A subsidiary of Reuters Plc.</heading>
      <heading>
        <space/>
      </heading>
      <heading>Copyright <copyright/> MM Reuters Plc.</heading>
      <heading>tony.coates@reuters.com</heading>
      <heading>2000/03/21</heading>
    </slide>
    <table-of-contents/>
  </topic>
  <topic>
    <title>What is XML?</title>
    <slide/>
    <slide>
      <item>XML is the acronym for <emphasise>eXtensible Markup Language</emphasise>
      </item>
      <item>XML is a textual encoding
system for creating
structured documents that can
be understood by computers</item>
      <item>XML is a Recommendation of
the <refer href="http://www.w3.org/">W3C</refer>
      </item>
    </slide>
    <slide>
      <item>Charles Goldfarb at IBM,
recognising that custom
document formats impeded
enterprise data sharing,
developed GML, the <emphasise>Generalised Markup Language</emphasise>
      </item>
      <item>GML evolved into SGML, the <emphasise>Standard Generalised Markup
Language</emphasise>, which remained largely
unknown and unused outside of
the publishing industry</item>
      <item>SGML has so much functionality
that it is difficult to write
parsers which read it</item>
      <item>Few users need more than a
fraction of the features</item>
    </slide>
    <slide>
      <item>When HTML was created at
<refer href="http://www.cern.ch/">CERN</refer>,
they had the foresight to use
SGML as the basis</item>
      <item>HTML documents, in principle,
are SGML documents which
conform to one of the HTML
DTDs</item>
      <item>DTDs (Document Type
Definitions) are the SGML way
to describe the allowable tag
structure (syntax) for a
particular type of document</item>
      <item>HTML authors are often
oblivious of the HTML DTDs,
as the browser makers ignored
them and added their own tags</item>
      <item>Led to the <emphasise>balkanisation</emphasise> of HTML</item>
    </slide>
    <slide>
      <item>However, HTML made everyone
familiar with SGML
angle-bracket tags: </item>
      <sample>&lt;html&gt;...&lt;/html&gt;</sample>
      <item>HTML browsers tend to be
tolerant of HTML errors,
and this is abused</item>
      <item>Many Web pages have incorrect
HTML which displays OK</item>
      <item>OK for people, but a nightmare
for computers, which need
documents to be simple and
correct</item>
    </slide>
    <slide>
      <item>XML look likes HTML, but you
can choose your own tags and
attributes:</item>
      <insert-sample href="my-document-xml.xml"/>
    </slide>
    <slide>
      <item>XML can encode data, not just
documents for reading</item>
      <insert-sample href="my-data-xml.xml"/>
    </slide>
    <slide>
      <item>XML <emphasise>namespaces</emphasise> avoid problems when
the same tag is used
in different contexts</item>
      <insert-sample href="my-namespace-xml.xml"/>
    </slide>
    <slide>
      <item>XML is a simple and
underwhelming concept</item>
      <item>Avoids major complexities of
SGML and HTML (from computer's
perspective)</item>
      <item>XML is
<refer href="http://www.unicode.org/">Unicode</refer>,
not ASCII, and is 100% <emphasise>case-sensitive</emphasise>
      </item>
      <item>Tags are enclosed in
angle-brackets, and can have
attributes <emphasise>in quotes</emphasise>
      </item>
      <item>Tags can contain other tags
or text or both</item>
      <item>However, such <emphasise>mixed content</emphasise> is best avoided, if possible</item>
    </slide>
    <slide>
      <item>Tags must be closed:
XHTML sample:</item>
      <sample>&lt;p&gt;A paragraph of text.&lt;/p&gt;
&lt;br&gt;&lt;/br&gt;
&lt;br/&gt;</sample>
      <item>XML files <emphasise>must</emphasise> start with an XML identifier:</item>
      <sample>&lt;?xml version="1.0"?&gt;</sample>
    </slide>
    <slide>
      <item>XML files can <emphasise>optionally</emphasise> have an SGML-style Document
Type Description (DTD) which
defines the allowable tag
structure:</item>
      <item>
        <refer href="sample.xml">Sample XML:</refer>
      </item>
      <insert-sample href="sample-xml.xml"/>
    </slide>
    <slide>
      <item>
        <refer href="sample.dtd">Matching DTD:</refer>
      </item>
      <insert-sample href="sample-dtd-1.xml"/>
    </slide>
    <slide>
      <insert-sample href="sample-dtd-2.xml"/>
    </slide>
    <slide>
      <item>More recently, XML files can <emphasise>optionally</emphasise> have a Schema, which defines
not only the tag structure,
but the data type(s) of the
content</item>
      <item>
        <refer href="sample-schema.xml">Sample XML:</refer>
      </item>
      <insert-sample href="sample-schema-xml.xml"/>
    </slide>
    <slide>
      <item>
        <refer href="sample.xsd">Matching Schema</refer> (linebreaks in schema URL are
display purposes only):</item>
      <insert-sample href="sample-xsd-1.xml"/>
    </slide>
    <slide>
      <insert-sample href="sample-xsd-2.xml"/>
    </slide>
    <slide>
      <insert-sample href="sample-xsd-3.xml"/>
    </slide>
    <slide>
      <insert-sample href="sample-xsd-4.xml"/>
    </slide>
  </topic>
  <topic>
    <title>Why Use XML?</title>
    <slide/>
    <slide>
      <item>Lots of information is tied
up in documents with custom
formats</item>
      <item>To use these documents in
automated processes is
difficult, because you need
to create custom parsers for
each document format</item>
      <item>This makes
computer-to-computer
transactions difficult to
implement across and between
enterprises</item>
      <item>Custom formats have software
maintenance requirements which
are a black hole for
recurrent expenditure</item>
    </slide>
    <slide>
      <item>XML is simple and (generally)
human-readable, capable of
representing complex data
structures</item>
      <item>XML is <emphasise>not</emphasise> anonymous binary</item>
      <item>Simpler to parse than other
formats, for example HTML
or SGML</item>
      <item>XML tags must always be
closed, so a computer always
knows when it has reached the
end of an XML file</item>
      <item>Easier to learn and quicker
to implement than <refer href="http://www.corba.org/">CORBA</refer>
or <refer href="http://www.microsoft.com/ntserver/appservice/techdetails/prodarch/dcom_architecture.asp">DCOM</refer>, at some penalty in raw
speed</item>
      <item>Easy to transmit using Web
servers through firewalls and
over an Intranet or the
Internet</item>
    </slide>
    <slide>
      <item>Rapidly being accepted as the
industry standard portable
data format</item>
      <item>Not controlled by any one
vendor, but contributed to by
many</item>
      <item>Microsoft and Sun may
disagree on which OS's and
languages are best, but both
now support XML as the data
format of choice</item>
      <item>Oracle and IBM's DB2
both support XML input and
output, as do a growing number
of databases</item>
      <item>Lots of software support, much
available free of charge</item>
    </slide>
    <slide>
      <item>Custom binary formats use less
bandwidth, but bandwidth gets
cheaper while developers'
salaries do not</item>
      <item>XML saves development time,
and hence money</item>
      <item>The <refer href="http://www.w3.org/">W3C</refer>
and <refer href="http://www.ietf.org/">IETF</refer>
are looking
into how XML can be
transferred more efficiently
using HTTP and TCP/IP</item>
      <item>XML will become a built-in
data type in CORBA</item>
      <item>WML, the <refer href="http://www.wapforum.org/">WAP</refer>
equivalent of HTML, is XML</item>
      <item>WAP transmits XML as
compressed WBXML
(WAP Binary XML)</item>
    </slide>
    <slide>
      <item>HTML 4 is being reformulated
as XHTML</item>
      <item>IE5 and Communicator 4 can
display XHTML (if written
sympathetically)</item>
      <item>Soon, XHTML will be
modularised</item>
      <item>For example, if you need
tables in your XML document,
you will be able to use just
the tables from XHTML, without
the rest</item>
    </slide>
    <slide>
      <item>SVG, the new Web format for
vector graphics, is also XML</item>
      <item>Supports both animation and
interactivity</item>
      <item>XML data can be transformed
on the fly into SVG images</item>
    </slide>
  </topic>
  <topic>
    <title>How Do You Get Into XML?</title>
    <slide/>
  </topic>
  <topic>
    <title>How - XML Viewers</title>
    <slide>
      <item>Get an XML viewer</item>
      <item>Unlike HTML, XML generally
does not contain formatting
information</item>
      <item>A common expectation is that
you can view XML in a browser
like HTML, settings fonts and
colours and layout</item>
    </slide>
    <slide>
      <item>Except for XHTML, raw XML can
only be directly displayed as
a tree of tags</item>
      <item>Apache Xerces-J parser comes
with a simple tree viewer in
Java</item>
      <item>Otherwise XML needs
either extra formatting
information, or to be
converted to a viewable
format</item>
    </slide>
    <slide>
      <item>By default, IE5 uses an
inbuilt XSL stylesheet (see later)
to convert XML to HTML for
display</item>
      <item>Allows tags to be expanded
or collapsed by clicking,
like an outliner</item>
      <item>IE5 and the Mozilla preview
of Communicator 6 allow CSS
(Cascading Style Sheets)
to be applied to XML</item>
      <item>Colours and fonts can be set,
and tags can be treated like
HTML paragraphs, list items,
or other layout</item>
      <item>Useful but limited</item>
      <item>XML structure needs to closely
match desired visual layout</item>
    </slide>
    <slide>
      <item>The CSS script can be
specified in an XML document
using an <keyboard>xml-stylesheet</keyboard> processing instruction:</item>
      <sample>&lt;?xml-stylesheet href="style.css"
                 type="text/css"?&gt;</sample>
    </slide>
  </topic>
  <topic>
    <title>How - XML Editors</title>
    <slide>
      <item>Get an XML editor</item>
      <item>XML editors can generally be
divided into low-end tree
editors and high-end document
processors</item>
      <item>Low-end editors generally
display XML as a tree of tags</item>
      <item>When you click on a tag,
you can see all of its content
and edit it</item>
    </slide>
    <slide>
      <item>High-end editors may also
present a tag tree, but
make the XML look like a
word-processor document</item>
      <item>Visual formatting of tags can
be controlled, and the visually
formatted text can be edited
directly</item>
      <item>Important to be able to
see as much as possible
in one view, as humans
do parallel processing</item>
      <item>Free low-end editors are
good for getting into XML,
but tiresome for everyday use</item>
      <item>Low-end editors suitable when
XML is used for forms</item>
    </slide>
    <slide>
      <item>Microsoft's <refer href="http://msdn.microsoft.com/xml/notepad/intro.asp">XML Notepad</refer> is a good (Windows-only)
low-end editor which
does not require a DTD</item>
      <item>IBM's <refer href="http://www.alphaworks.ibm.com/tech/xeena">Xeena</refer> is a good DTD-driven
low-end editor written in
Java (used for this seminar)</item>
      <item>Arbortext's <refer href="http://www.arbortext.com/Products/ADEPT_Series/adept_series.html">Adept</refer> and SoftQuad's <refer href="http://www.xmetal.com/">XMetal</refer> are good high-end editors,
with SGML backgrounds</item>
      <item>There are too many others to mention,
but equally worth mentioning</item>
    </slide>
  </topic>
  <topic>
    <title>How - XML Parsers</title>
    <slide>
      <item>Get an XML parser - there is a
good choice</item>
      <item>First parsers written in Java
(which supports Unicode), but
C/C++ parsers now available</item>
      <item>Sun's XML parser will be in
future JDKs; likely to be most
widely used Java XML parser</item>
      <item>Apache's <refer href="http://xml.apache.org/">Xerces</refer> parser
(Java or C++, donated by IBM) is a good
server-side choice</item>
    </slide>
    <slide>
      <item>James Clark's C++ <refer href="http://www.jclark.com/xml/">expat</refer> parser is used by Perl,
Python, and PHP.  Will be used
in Communicator 6</item>
      <item>Microsoft has included XML
parsers in IE4 and IE5,
and these are COM components
which other desktop applications
can use</item>
      <item>Oracle XML parser
(Java, C, C++, PL/SQL) should
be popular in Oracle shops,
but not tied to DB</item>
      <item>All of these parsers are free</item>
    </slide>
    <slide>
      <item>Two standard parser APIs</item>
      <item>
        <refer href="http://www.megginson.com/SAX/index.html">SAX</refer> - Simple API for XML</item>
      <item>SAX converts an XML document
into an event stream
(open tag, text, close tag)</item>
      <item>Small memory footprint, good
for large documents, cannot
go backwards</item>
      <item>Essentially a lexical analyser
for XML</item>
    </slide>
    <slide>
      <item>
        <refer href="http://www.w3.org/DOM/">DOM</refer> - Document Object Model</item>
      <item>DOM represents an XML document
as a fully navigable tree
of nodes (tags, attributes,
text)</item>
      <item>Uses more memory than SAX,
but editable</item>
      <item>Supported by both IE and Communicator</item>
      <item>Not XML nor HTML specific,
DOM API can be used by any
application to make structured
data navigable and/or editable</item>
    </slide>
    <slide>
      <item>Parsers only parse,
they do not write applications</item>
      <item>The code required to deal with
complicated XML documents
may still require significant
development time</item>
    </slide>
  </topic>
  <topic>
    <title>How - XSL &amp; XSLT</title>
    <slide>
      <item>
        <emphasise>XSL</emphasise> - eXtensible Stylesheet
Language</item>
      <item>
        <refer href="http://www.w3.org/Style/XSL">XSLT</refer> - scripting language
for XML transformations, <emphasise>written in XML</emphasise>
      </item>
      <item>Converts XML to XML, HTML,
or plain text</item>
      <item>Recognises patterns in XML
document structure, and
replaces them as appropriate</item>
      <item>The default XSL script can be
specified in an XML document
using an <keyboard>xml-stylesheet</keyboard> processing instruction:</item>
      <sample>&lt;?xml-stylesheet href="transform.xsl"
                 type="text/xml"?&gt;</sample>
    </slide>
    <slide>
      <item>Can add, delete, modify,
and sort content of XML
documents</item>
      <item>Can call external scripts
(Java, JavaScript, NetRexx,
and others)</item>
      <item>Available in Java or C++,
some versions compile scripts
for extra speed</item>
    </slide>
    <slide>
      <item>Apache's <refer href="http://xml.apache.org/">Xalan</refer> (was LotusXSL)
in Java and C/C++,
James Clark's XT in Java,
MS implementation in COM,
Oracle implementation in
Java, C/C++, and PL/SQL,
plus others</item>
      <item>Out of date versions in IE4
and IE5, allow XML to be
converted to HTML on the fly
by browser.  Look for updates
when spec is finalised (soon)</item>
      <item>Perl, Python, PHP, and ASP/JSP
are alternatives, but not as
well focussed on
transformation</item>
      <item>Apache's <emphasise>Xalan</emphasise> was used to
produce these slides</item>
    </slide>
    <slide>
      <item>XSL spec includes 'formatting
objects' which provide
desktop publishing functionality,
but not many implementations yet</item>
      <item>Apache FOP for Acrobat,
PassiveTex, TexML</item>
    </slide>
  </topic>
  <topic>
    <title>How - XPath/XPointer/XLink</title>
    <slide>
      <item>XML supports much richer
document linking than HTML</item>
      <item>HTML introduced the
world to hypertext links</item>
      <item>The only HTML linking tag
is <keyboard>&lt;a&gt;</keyboard>
      </item>
      <item>An HTML link connects one
location in a document
to an HTML document or a
named location in an
HTML document</item>
      <item>HTML links are one-way only</item>
    </slide>
    <slide>
      <item>XPath allows location in
a document to be specified
by structure, not just name</item>
      <sample>doc.xml#chapter[3]/section[2]/paragraph[4]</sample>
      <item>Reasonably robust even
as document changes</item>
      <item>XPointer extends XPath
to allow <emphasise>ranges</emphasise> and not just locations
to be specified</item>
    </slide>
    <slide>
      <item>XLinks can function like
normal HTML links, but
any XML tag can be used
as an XLink</item>
      <item>An XLink can link to
multiple locations,
with the user given
the choice</item>
      <item>An XLink does not
have to be a link</item>
      <item>XLinks can specify an
external document (or
section thereof) to
use in its place</item>
    </slide>
    <slide>
      <item>XLink allows <emphasise>out of line</emphasise> links</item>
      <item>Out-of-line links do not
refer directly to another
document, but to an entry
in a link database</item>
      <item>If a location changes,
it only has to be changed
in one place in the link
database</item>
      <item>Fixes a major problem
in keeping HTML-style links
consistent in richly
interconnected sites</item>
      <item>Out-of-line links
also allow many-to-many
hyperlinking</item>
    </slide>
    <slide>
      <item>XPath is heavily used by XSLT</item>
      <item>Stand-alone versions for use
with the DOM are appearing</item>
      <item>XPointer/XLink specifications
have gone through many changes,
so these are not yet
widely implemented</item>
    </slide>
  </topic>
  <topic>
    <title>How - XML in Databases</title>
    <slide>
      <item>XML has a tree structure
which does not fit
directly into relational
database tables</item>
      <item>Tag order is important,
whereas tables can be
re-ordered with impunity</item>
      <item>Nonetheless, Oracle and
IBM (DB2) are providing
software to map XML
into tables, so these
DBs can store/retrieve
XML</item>
      <item>Other relational DB
vendors can be expected
to do the same</item>
      <item>Need special query
support, as the XML
document may be
difficult to query
from the tables</item>
    </slide>
    <slide>
      <item>Object databases
and hierarchical databases
are a better fit for XML</item>
      <item>Software AG's <refer href="http://www.softwareag.com/tamino/">Tamino</refer> is a high-end XML data
server based on a hierarchical
database, and does all
input and output using XML</item>
      <item>XML queries are supported,
and all informational messages
from the DB are in XML</item>
      <item>
        <refer href="http://www.w3.org/TR/xmlquery-req">XML Query</refer> language is
still under development</item>
      <item>Originally based on SQL,
but changing to suit XML
needs more specifically</item>
    </slide>
    <slide>
      <item>When all data is in XML,
applications can be
ignorant of whether they
are using a DB, a file,
or an Internet connection</item>
      <item>More flexibility,
easier to maintain</item>
    </slide>
  </topic>
  <topic>
    <title>How - XML and Objects</title>
    <slide>
      <item>Sun will shortly be
releasing an XML <emphasise>compiler</emphasise>
      </item>
      <item>Given an XML Schema,
creates matching
Java classes to store
documents/data</item>
      <item>Loading, storing,
and conversion to/from XML
can be hidden from
Java application</item>
      <item>Similar should appear
for C++ and others
eventually</item>
      <item>Easier to view and
understand complex
data structures in
one XML document
than in many Java/C++
files</item>
    </slide>
  </topic>
  <topic>
    <title>How - Messaging in XML</title>
    <slide>
      <item>XML can be used to send
portable messages between
computers</item>
      <item>Objects stored in XML
can be used to send
command requests with
parameters, with results
returned as XML objects</item>
      <item>Alternatives, if less
robust, are <emphasise>XML-RPC</emphasise> (Remote Procedure Calls) and <emphasise>SOAP</emphasise> (Simple Object Access
Protocol), which use
XML over HTTP to run
specific applications
on remote computers and
return the results</item>
      <item>Quick to set up, work
through firewalls, useful
for short-term implementations</item>
    </slide>
  </topic>
  <topic>
    <title>How - XML Repositories</title>
    <slide>
      <item>XML can allow business
information to be shared,
but only if all parties
are using the same tag
structure</item>
      <item>Expect to see Schemas
appearing for most
vertical markets</item>
      <item>XML repositories for standard
DTDs and Schemas are being set
up for this purpose</item>
      <item>Major repositories are <refer href="http://www.XML.org/">XML.org</refer> (OASIS),  <refer href="http://www.BizTalk.com/">BizTalk.com</refer> (Microsoft), and <refer href="http://www.schema.net/">schema.net</refer>
      </item>
      <item>Microsoft plans to
use BizTalk to provide
schema content for a
BizTalk Server product</item>
      <item>Schemas for BizTalk
must follow BizTalk-specific
rules</item>
    </slide>
    <slide>
      <item>OASIS is seen as
vendor-neutral</item>
      <item>OASIS hosts UN's <refer href="http://www.ebXML.org/">ebXML</refer> schema for business-to-business
transactions</item>
      <item>ebXML is part of a UN
initiative to globalise
electronic commerce</item>
    </slide>
    <slide>
      <item>Industry schemas may not
necessarily be located
in a repository</item>
      <item>Example is <refer href="http://www.FpML.org/">FpML</refer> for financial reporting</item>
      <item>Beware that some schemas
have restrictive usage
agreements</item>
      <item>Open, industry-wide or
multi-vendor schemas
are likely to be the
safest choices</item>
    </slide>
  </topic>
  <topic>
    <title>XML Tips</title>
    <slide/>
    <slide>
      <item>Keep XML documents as simple
as possible; try not to
mix formatting with data</item>
      <item>The <refer href="../seminar.xml">XML source</refer> for this
seminar is far more readable
than the HTML source</item>
      <item>Avoid mixed content,
if possible, to
simplify processing</item>
      <item>Write documents that
can be usefully parsed
using SAX</item>
      <item>If it works with SAX,
it will work with DOM,
but maybe not vice-versa</item>
    </slide>
    <slide>
      <item>Use existing DTDs/Schemas
wherever possible</item>
      <item>Using just a subset of the
tags is fine</item>
      <item>If you cannot wait for a
standard, or the standard is
too complicated for your
internal needs, use XSLT or
similar to transform your
internal format to the
standard and back again</item>
      <item>Can save your enterprise
from having to change
documents as a standard
evolves</item>
    </slide>
    <slide>
      <item>When generating text files,
for example log files,
use XML unless there is a
reason not to</item>
      <item>The extra effort of adding
tags is minimal</item>
      <item>Large files
or large numbers of files
are easier to reliably
search, index, format, and/or
process when in XML rather
than plain text</item>
    </slide>
  </topic>
  <topic>
    <title>References - XML</title>
    <slide>
      <reference href="http://www.XML.com/">
        <title>XML.com</title>
        <description>A good place to start learning about XML.
The Annotated XML Spec is noteworthy,
but not compulsary reading.</description>
      </reference>
      <reference href="http://www.xmlhack.com/">
        <title>xmlhack.com</title>
        <description>News and articles for XML developers.</description>
      </reference>
      <reference href="http://www.oasis-open.org/cover/sgml-xml.html">
        <title>The XML Cover Pages</title>
        <description>Robin Cover's encyclop<aelig/>dic reference
for XML standards, articles,
and tools.</description>
      </reference>
    </slide>
  </topic>
  <topic>
    <title>References - XML Standards</title>
    <slide>
      <reference href="http://www.w3.org/XML/">
        <title>XML @ W3C</title>
        <description>The W3C's XML site.  This is where
the standards are.  Some of them
can be heavy reading.</description>
      </reference>
      <reference href="http://www.w3.org/TR/REC-xml-names">
        <title>XML Namespaces</title>
      </reference>
      <reference href="http://www.w3.org/TR/xmlschema-0/">
        <title>XML Schemas #0: Primer</title>
      </reference>
      <reference href="http://www.w3.org/TR/xmlschema-1/">
        <title>XML Schemas #1: Structures</title>
      </reference>
      <reference href="http://www.w3.org/TR/xmlschema-2/">
        <title>XML Schemas #2: Datatypes</title>
      </reference>
      <reference href="http://www.w3.org/TR/xhtml1">
        <title>XHTML</title>
        <description>XHTML is the modular XML
replacement for HTML 4.</description>
      </reference>
    </slide>
    <slide>
      <reference href="http://www.megginson.com/SAX/index.html">
        <title>SAX</title>
        <description>Simple API for XML.
Converts XML into a stream
of events.</description>
      </reference>
      <reference href="http://www.w3.org/DOM/">
        <title>DOM @ W3C</title>
        <description>Document Object Model.
Converts XML into a tree of
nodes.</description>
      </reference>
      <reference href="http://www.w3.org/Style/XSL">
        <title>XSL @ W3C</title>
        <description>Extensible Stylesheet
Language.</description>
      </reference>
      <reference href="http://www.w3.org/TR/xslt">
        <title>XSLT Specification</title>
        <description>XSL Transformations.</description>
      </reference>
      <reference href="http://www.w3.org/TR/xsl/">
        <title>XSL Specification</title>
        <description>XSL Formatting Objects.</description>
      </reference>
      <reference href="http://www.w3.org/TR/xpath">
        <title>XPath Specification</title>
        <description>How to specify a location
in an XML document.</description>
      </reference>
    </slide>
    <slide>
      <reference href="http://www.w3.org/Style/CSS">
        <title>CSS @ W3C</title>
        <description>Cascading Style Sheets.</description>
      </reference>
      <reference href="http://www.w3.org/TR/xptr">
        <title>XPointer Specification</title>
        <description>How to specify a location
or range in an XML document.</description>
      </reference>
      <reference href="http://www.w3.org/TR/xlink/">
        <title>XLink Specification</title>
        <description>How to do hyperlinking in XML.</description>
      </reference>
      <reference href="http://www.w3.org/TR/xmlquery-req">
        <title>XML Query Requirements</title>
        <description>The latest progress on the
XML Query specification.</description>
      </reference>
    </slide>
  </topic>
  <topic>
    <title>References - XML Tools</title>
    <slide>
      <reference href="http://www.microsoft.com/windows/ie/default.htm">
        <title>IE5</title>
        <description>Displays XML as a tree by
default, and can display
XML using CSS or XSLT.</description>
      </reference>
      <reference href="http://www.mozilla.org/">
        <title>Mozilla (Communicator 6 preview)</title>
        <description>Can display XML using CSS.</description>
      </reference>
      <reference href="http://xml.apache.org/">
        <title>Apache XML Tools</title>
        <description>Xerces parser, Xalan XSLT,
FOP XSL Formatting Objects,
and Cocoon servlet for
transforming server-side XML
to client-side HTML or XML.
Xerces and Xalan available either
as Java or C++.</description>
      </reference>
      <reference href="http://www.jclark.com/xml/">
        <title>James Clark's XML Resources</title>
        <description>XP parser (Java), expat parser (C++), XT (XSLT in Java), and XML test cases.  Self-funded, James Clark produces some of the best
XML &amp; SGML software available today, and makes it available for free.</description>
      </reference>
      <reference href="http://java.sun.com/xml/">
        <title>Java Technology &amp; XML @ Sun</title>
        <description>JAXP (Java API for XML Parsing) is Sun's new standard API
for pluggable Java XML parsers, based on SAX and DOM.</description>
      </reference>
      <reference href="http://www.ibm.com/developer/xml/">
        <title>XML @ IBM developerWorks</title>
        <description>News, articles, and software.</description>
      </reference>
      <reference href="http://www.alphaWorks.ibm.com/">
        <title>IBM alphaWorks</title>
        <description>IBM's alphaWorks has an
amazing range of XML (and
other) tools to try for free;
some of them very useful.</description>
      </reference>
    </slide>
    <slide>
      <reference href="http://msdn.microsoft.com/xml/default.asp">
        <title>XML &amp; XSL @ Microsoft</title>
        <description>Check out Microsoft's XML parser and XSLT engine here.</description>
      </reference>
      <reference href="http://technet.oracle.com/tech/xml/">
        <title>Oracle XML Developer's Kit</title>
        <description>Oracle XML parser and XSLT engine.
Java, C/C++, and PL/SQL.</description>
      </reference>
    </slide>
    <slide>
      <reference href="http://www.softwareag.com/tamino/">
        <title>Tamino</title>
        <description>XML server based on a
hierarchical database.
Everything going in or out
is XML.</description>
      </reference>
      <reference href="http://www.bluestone.com/SaISAPI.dll/SaServletEngine.class/products/dynamic.jsp?pid=60">
        <title>Bluestone XML Suite</title>
        <description>Well-known XML server.</description>
      </reference>
      <reference href="http://www.objectdesign.com/products/index.html">
        <title>eXcelon B2B Solutions</title>
        <description>Well-known XML server.</description>
      </reference>
      <reference href="http://www.datachannel.com/">
        <title>DataChannel Server</title>
        <description>DataChannel's Chief Scientist,
Norbet Mikula, wrote one of
the first XML parsers (as
his PhD project).</description>
      </reference>
      <reference href="http://www.wddx.org/">
        <title>Web Distributed Data eXchange</title>
        <description>A system for exchanging XML
documents via the Web.</description>
      </reference>
    </slide>
    <slide>
      <reference href="http://www.arbortext.com/Products/ADEPT_Series/adept_series.html">
        <title>Arbortext Adept</title>
        <description>A good, high-end XML editor.</description>
      </reference>
      <reference href="http://www.xmetal.com/">
        <title>SoftQuad XMetal</title>
        <description>A good, high-end XML editor.</description>
      </reference>
      <reference href="http://www.alphaworks.ibm.com/tech/xeena">
        <title>IBM Xeena</title>
        <description>A free XML editor in Java.
Requires a DTD, and makes
sure that your document fits
the DTD.</description>
      </reference>
      <reference href="http://msdn.microsoft.com/xml/notepad/intro.asp">
        <title>Microsoft XML Notepad</title>
        <description>A free XML editor for Windows.
Allows you to write freeform
XML without a DTD.</description>
      </reference>
    </slide>
  </topic>
  <topic>
    <title>References - XML Repositories</title>
    <slide>
      <reference href="http://www.XML.org/">
        <title>XML.org</title>
      </reference>
      <reference href="http://www.BizTalk.com/">
        <title>BizTalk.com</title>
      </reference>
      <reference href="http://www.schema.net/">
        <title>schema.net</title>
      </reference>
    </slide>
  </topic>
  <topic>
    <title>References - Industry Schemas</title>
    <slide>
      <reference href="http://www-4.ibm.com/software/developer/library/tpaml.html">
        <title>IBM XML specification for business-to-business transactions</title>
      </reference>
      <reference href="http://www.ebXML.org/">
        <title>UN's ebXML specification for
global e-commerce</title>
      </reference>
      <reference href="http://www.FpML.org/">
        <title>Financial Products Markup Language specification</title>
      </reference>
    </slide>
  </topic>
  <topic>
    <title>References - Articles</title>
    <slide>
      <reference href="http://www.javaworld.com/jw-04-1999/jw-04-xml.html?032499txt">
        <title>XML for the Absolute Beginner</title>
        <description>JavaWorld article.</description>
      </reference>
      <reference href="http://www.xml.com/pub/2000/01/26/feature/index.html">
        <title>Schema Repositories: What's at Stake?</title>
        <description>An interesting discussion
of the politics of schema
repositories.</description>
      </reference>
      <reference href="http://xml.com/pub/2000/02/09/feature/index.html?wwwrrr_20000209.txt">
        <title>Inside SOAP</title>
        <description>A good place to start if you
are interested in SOAP or
XML-RPC for communicating
with remote applications via
XML.</description>
      </reference>
      <reference href="http://www.javaworld.com/javaworld/jw-02-1999/jw-02-beans.html">
        <title>XML JavaBeans: Part 1</title>
        <description>JavaWorld article.</description>
      </reference>
      <reference href="http://www.javaworld.com/javaworld/jw-03-1999/jw-03-beans.html">
        <title>XML JavaBeans: Part 2</title>
      </reference>
      <reference href="http://www.javaworld.com/javaworld/jw-07-1999/jw-07-beans.html">
        <title>XML JavaBeans: Part 3</title>
      </reference>
      <reference href="http://xml.com/pub/2000/01/19/feature/index.html?wwwrrr_20000119.txt">
        <title>Design Patterns in XML Applications: Part 1</title>
        <description>If you are familiar with
design patterns, and article
worth reading.  If not, worth
reading anyway before you
design an XML DTD or Schema.</description>
      </reference>
      <reference href="http://xml.com/pub/2000/02/16/feature/index.html?wwwrrr_20000216.txt">
        <title>Design Patterns in XML Applications: Part 2</title>
      </reference>
    </slide>
  </topic>
  <topic>
    <title>References - Other</title>
    <slide>
      <reference href=" http://www.egroups.com/group/xml-dev/">
        <title>xml-dev Archive (new)</title>
        <description>The "xml-dev" mailing list
is the #1 list for XML
developers.</description>
      </reference>
      <reference href="http://www.lists.ic.ac.uk/hypermail/xml-dev/">
        <title>xml-dev: Archive (old)</title>
      </reference>
      <reference href="http://www.mulberrytech.com/xsl/xsl-list">
        <title>XSL-List Archive</title>
        <description>The "XSL-List" mailing list
is the #1 list for XSL
developers and users.</description>
      </reference>
      <reference href="http://www.jxml.com/coins/">
        <title>Coins (JavaBeans serialised as XML)</title>
        <description>Software for converting data
between Java classes and
XML documents.</description>
      </reference>
      <reference href="http://www.omg.org/xml/">
        <title>CORBA &amp; XML Resource Page</title>
      </reference>
      <reference href="http://www.unicode.org/">
        <title>Unicode</title>
        <description>The Unicode system for
encoding the world's
languages.  Supported natively
by XML and Java.</description>
      </reference>
      <reference href="../README.html">
        <title>Source files for this seminar</title>
      </reference>
    </slide>
  </topic>
</seminar>

