[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: XML/XSL on the client for dynamic UI


Subject: Re: XML/XSL on the client for dynamic UI
From: Tim Taylor <ttaylor@xxxxxxxxxx>
Date: Mon, 01 Nov 1999 19:11:57 -0500

Mark Hayes wrote:
> 
> > From: Tim Taylor [mailto:ttaylor@xxxxxxxxxx]
> > Is every page dynamic with every request?  I've found that
> > with Cocoon,
> > once a page is cached, it frequently finishes processing in
> > under 50ms.
> 
> Just curious:  By "cached" do you mean that only the stylesheet and source
> document are cached with Cocoon, or is the result document cached as well?
> I assume the result is not cached, but I just wanted to be sure.  50 ms is a
> good number.

Actually, I assumed the result was cached.  Also, remember that 50ms was
the ceiling once cached.  Here are some numbers:

first request, no cache: 2934 ms
reload, cached: 5 ms
reload, XML "touched", XSL cached (presumably): 2366 ms
reload, cached: 4 ms
reload, XML cached (presumably), XSL "touched": 2672 ms
reload, cached: 5 ms

This is with Cocoon configured to use OpenXML and XSL:P, though, for the
simple XML and stylesheet I used there probably wouldn't be much
difference with other parsers and processors.  Anyhow, the point isn't
to be a benchmark (too many variables), but just to point out that
caching can give you order of magnitude improvements.  Of course, I
should also point out that Cocoon is a memory hog...no suprises there :)

I've attached my test documents.  Please disregard the content, I put it
together when I was just learning XML :)

FYI, the developers have some pretty agressive goals with respect to
non-cached processing times.  The project is worth checking out at
http://java.apache.org/

Tim

> 
> We have been seeing 130 ms for XT processing with a cached stylesheet and a
> medium sized source document, but the source document is reparsed as part of
> this operation.  (We're still working on a DOM-to-SAX translator so that the
> source document can be cached as well.  If anyone happens to have this code
> and is willing to share it please let me know...!)
> --
> thanks,
> mark
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

-- 
Tim Taylor
<?xml version="1.0"?>
<?cocoon:process type="xslt"?>
<?xml-stylesheet href="outline.xsl" type="text/xsl"?>

<presentation>
<title>eXtensible Markup Language (XML) Overview</title>

<slideset>
	<slide>
	<title>Overview</title>
	<subtitle>what I'll talk about</subtitle>
	<ol>
		<li>Why XML.  Why XML was created, what purpose does XML have,
		why use XML.</li>
		<li>What XML.  What is XML.  What does it look like.  What does
		it have in common with HTML.</li>
		<li>How XML.  How to work with XML.  How to write software
		to utilize XML.</li>
	</ol>
	</slide>

	<slide>
	<title>Why XML?</title>
	<slideset>
		<slide>
		<title>History</title>
		<dl class="calendar">
			<dt>1986</dt>
			<dd>SGML</dd>

			<dt>1992</dt>
			<dd>HTML 1.0, semantic</dd>

			<dt>1996</dt>
			<dd>HTML 3.2</dd>

			<dt>Febuary, 1998</dt>
			<dd>XML 1.0</dd>

			<dt>April, 1998</dt>
			<dd>HTML 4.0</dd>
		</dl>
		</slide>

		<slide>
		<title>Why was XML created</title>
		
		XML was created to restore semantic markup to the Web.  
		Why is this good?
		<ol>
			<li>allows more than just graphical browsers to be consumers
			of info on the Web.
			<ol>
				<li>non-graphical browsers (screen readers)</li>
				<li>search engines</li>
				<li>computers in business to business (b2b) communication</li>
			</ol>
			</li>

			<li>seperates formatting from content.  Focus on content 
			and structure</li>
		</ol>
		</slide>

		<slide>
		<title>Why use XML?</title>
		<ol>
			<li>
			seperate presentation from content
			<ol>
				<li>presentation can change independent of the underlying 
				mechanism for generating, retrieving, syndicating content</li>
				<li>presentation can change without breaking other consumers
				of information</li>
				<li>multiple presentations of same content</li>
			</ol>
			</li>

			<li>validation</li>

			<li>common set of content manipulation tools v. ad
			hoc tools
			<ol>
				<li>content administration</li>
			</ol>
			</li>
		</ol>
		</slide>
	</slideset>
	</slide>

	<slide>
	<title>What XML?</title>
	<slideset>
		<slide>
		<title>What is XML</title>
		<ul>
			<li><strong>SGML</strong> is a language <strong>for defining</strong> markup languages</li>
			<li><strong>HTML</strong> is a language that <strong>is defined</strong> using <strong>SGML</strong></li>
			<li><strong>XML</strong> is a <strong>refinement</strong> of <strong>SGML</strong></li>
			<li><strong>XHTML</strong> is a language that <strong>is defined</strong> using <strong>XML</strong></li>
		</ul>

		<p>Consequently, XML and HTML are structurally similar, i.e. their
		markup looks alike in many ways</p>
		</slide>

		<slide>
		<title>Structural Similarities between XML and HTML</title>

<code class="html"><![CDATA[<html>
<head>
	<title>sample HTML</title>
</head>
<body>
	<h1>sample HTML</h1>
	<h2>another header</h1>
	<p>This is a paragraph<br>
	with some breaking<br>
	text</p>
</body>
</html>]]></code>

<code class="xml"><![CDATA[<?xml version="1.0"?>
<my-document>
	<title>sample HTML</title>

	<header>another header</header>
	<paragraph>This is a paragraph<br/>
	with some breaking<br/>
	text</paragraph>
</my-document>]]></code>

		<ol>
			<li>elements</li>
			<li>attributes</li>
			<li>comments</li>
		</ol>
		But don't confuse the structural similarity with functional similarity
		</slide>

		<slide>
		<title>XML is more than HTML</title>
		
		XML is structurally different:
		<ol>
			<li>stricter requirements.  (makes developing tools easier, leaves
			fewer things to doubt)
			<ol>
				<li>must have a single, top-level element.  This is called the root element.  <span class="comment">[examples here]</span></li>
				<li>tag attributes must have quotes <span class="comment">[example here]</span></li>
				<li>all tags must have an end tag, or be an empty tag <span class="comment">[example]</span></li>
			</ol>
			</li>

			<li>processing instructions <span class="comment">[example here, including reserved 'xml']</span></li>
			<li>CDATA sections <span class="comment">[example, explain why it's usefull]</span></li>
		</ol>
		</slide>

		<slide>
		<title>What makes a document an XML document</title>  
		<subtitle>when is an XML document not an XML document</subtitle>
		<ol>
			<li>Well formed XML document  (http://www.xml.com/axml/target.html#sec-well-formed).  As an oversimplification, an
			document is a well formed XML document if:
			<ol>
				<li>it contains one or more elements.</li>
				<li>there is exactly one element, called the root, or document element, that only appears as the first
				and last tags (open and close tags) in the document</li>
				<li>the elements, delimited by start- and end-tags, nest properly within each other <span class="comment">[example here]</span></li>
			</ol>
			</li>

			<li>Valid XML document 
			(http://www.xml.com/axml/target.html#dt-valid).  A document is a 
			valid XML document if:
			<ol>
				<li>it is a well formed XML document</li>
				<li><p>if it has an associated document type declaration (DTD) and
				if the document complies with the constraints expressed in the
				DTD</p>

				<p>briefly, a DTD defines:</p>
				<ol>
					<li>what elements (tags) are allowed in the document</li>
					<li>how those tags can/must be structured</li>
					<li>what attributes are allowed in an element</li>
					<li>which of those attributes are required</li>
					<li>default values for attributes <span class="comment">[example here]</span></li>
				</ol>
				</li>
			</ol>
			</li>

			<li>Otherwise, it's not an XML document, even if it looks like 
			an XML document, or has an .xml extension.  This may seem like 
			beating a dead horse, but it is basically a lesson learned from the
			browser wars <span class="comment">[rephrase/elaborate]</span></li>
		</ol>
		</slide>

		<slide>
		<title>What XML doesn't do</title>

		<p>XML doesn't:</p>
		<ol>
			<li>say what the tags mean (though you should choose meaningfull
			tag names)</li>
			<li>describe how to format the document.  Formatting descriptions,
			when necessary, come from an external source.</li>
			<li>prescribe one-to-one relationship between "document" and 
			"page".  With HTML, if you break a book into chapters, each 
			chapter an HTML document, they're only related because they 
			might have reciprocal links, live in the same directory, or 
			whatever.  But they're not technically part of a larger 
			document called "book"</li>
		</ol>
		</slide>
	</slideset>
	</slide>

	<slide>
	<title>How XML?</title>
	<slideset>
		<slide>
		<title>Programming With XML</title>

		<ol>
			<li>Document Object Model (DOM) core API</li>
			<li>Simple API for XML (SAX)</li>
			<li>custom/proprietary APIs</li>
			<li>Tranformation (XSL, XSL:T (XTL)</li>
		</ol>
		</slide>

		<slide>
		<title>How to transition to XML</title>
		<subtitle>sneaking in XML when your Project Manager isn't looking</subtitle>

		<ol>
			<li>write valid HTML, and use validation software</li>
			<li>use end-tags, even when they're optional.  For example:
			<dl>
				<dt>paragraphs</dt>
				<dd><code class="xhtml"><![CDATA[<p>...</p>]]></code></dd>

				<dt>lists</dt>
				<dd><code class="xhtml"><![CDATA[<li>list item</li>, <dt>term</dt>, <dd>description</dd>]]></code></dd>

				<dt>and these</dt>
				<dd><code class="xhtml"><![CDATA[<html>...</html>, <body>...</body>, <td>...</td>, etc.]]></code></dd>
			</dl>
			</li>
			<li>always quote attributes: <code class="xhtml"><![CDATA[<div class="foo">]]></code></li>
			<li>write XHTML
			<ol>
				<li>valid empty-tags (with a twist):
				<code class="xhtml"><![CDATA[<br />, <hr />]]></code></li>
			</ol>
			</li>
		</ol>
		</slide>

		<slide>
		<title>XML is for more than the Web</title>
		<subtitle>Andrew made me say this</subtitle>
		Similar to Java, which was designed originally for consumer appliances,
		specifically T.V. set top boxes, XML, which was designed for the Web
		is applicable in more areas</title>
		</slide>
	</slideset>
	</slide>

	<slide>
	<title>Conclusion</title>
	<subtitle>what I talked about</subtitle>
	<ol>
		<li>One purpose of XML is to restore semantic meaning to the Web
		so that other things besides graphical browsers can be consumers
		of the information</li>
		<li>XML is a language definition language, refined from XML.  It
		has structural similarities to HTML, but is functionally different</li>
		<li>Transition to XML through XHTML.  Stable and evolving XML APIs and
		technologies</li>
	</ol>
	</slide>
</slideset>
</presentation>
<?xml version="1.0"?> 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0"
		xmlns="http://www.w3.org/TR/REC-html40">

<!-- Root template - start processing here -->
<xsl:template match="/">
	<html>
	<head>
		<title><xsl:value-of select="presentation/title"/></title>
		<link rel="stylesheet" href="outline.css" type="text/css" />
	</head>

	<body>
		<h1><xsl:value-of select="presentation/title"/></h1>
		<xsl:apply-templates select="presentation"/>
	</body>
	</html>
</xsl:template>

<xsl:template match="title">
	<!-- supress titles -->
</xsl:template>

<xsl:template match="slide">
	<h2><xsl:value-of select="title"/></h2>
	<xsl:apply-templates/>
</xsl:template>

<xsl:template match="slide/subtitle">
	<p class="parenthetical">...<xsl:apply-templates/></p>
</xsl:template>

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

<xsl:template match="ul">
	<dl>
		<xsl:apply-templates/>
	</dl>
</xsl:template>

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

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

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

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

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

<xsl:template match="br">
	<br />
</xsl:template>

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

<xsl:template match="code">
	<pre><code><xsl:apply-templates/></code></pre>
</xsl:template>

<xsl:template match="code[@class='xhtml']">
	<span class="element"><xsl:apply-templates/></span>
</xsl:template>

<xsl:template match="note">

</xsl:template>

</xsl:stylesheet>

Current Thread
Keywords