<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:wfw="http://wellformedweb.org/CommentAPI/"
 xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
<channel>
<title>from Domino to Infinity</title>
<description></description>
<lastBuildDate>Mon, 7 Nov 2005 10:41:10 +0800</lastBuildDate>
<link>http://fromdomino.com/__48256E5A001AB060.nsf</link>
<item><title>How To Extend Domino Authentication For Websites, Single Sign-On and Persistent Sessions</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6HW56S</link><description><![CDATA[ There is an excellent
article over at Agileview,
the blog of Agileware.
If you are not into Websphere or DSAPI, you now have an option. A ...]]></description><dc:subject>Java</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6HW56S</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6HW56S</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">There is an </font><a href="http://blog.agileware.net/index.php/archives/2005/10/23/how-to-extend-domino-authentication-for-websites-single-sign-on-and-persistent-sessions/" target=_blank><font size=2 color=blue face="sans-serif">excellent
article</font></a><font size=2 face="sans-serif"> over at </font><a href=http://blog.agileware.net/ target=_blank><font size=2 color=blue face="sans-serif">Agileview</font></a><font size=2 face="sans-serif">,
the blog of </font><a href=http://www.agileware.net/ target=_blank><font size=2 color=blue face="sans-serif">Agileware</font></a><font size=2 face="sans-serif">.
If you are not into Websphere or DSAPI, you now have an option. A must
read!</font>
]]></content:encoded><pubDate>Mon, 7 Nov 2005 10:41:10 +0800</pubDate><slash:comments></slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=F39F54820220CD11482570B2000EC19C</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=F39F54820220CD11482570B2000EC19C</wfw:comment></item><item><title>Importing MS Excel into Lotus Notes via XML -- the code</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6H3LR7</link><description><![CDATA[ In August we published a XSLT stylesheet,
that can transfom Excel XML into a more record like XML structure. The
missing part is the Notes side of the exercise, which I will show today.
There is a functional database in the download section. The agent ...]]></description><dc:subject>XML</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6H3LR7</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6H3LR7</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">In August we published a XSLT stylesheet,
that can transfom Excel XML into a more record like XML structure. The
missing part is the Notes side of the exercise, which I will show today.
There is a functional database in the download section. The agent code
reads some values from a configuration document and applies the listed
transformations to the xml before invoking the sax parser to read the values.
We opted for multipe transformation runs to be able to massage the data
after it has been transformed from the rather crude Excel XML form.</font>
<br><font size=2 face="sans-serif">But you are not limited to Excel. Any
XML you can transform into the &lt;record&gt;&lt;field&gt;... format can
be imported.</font>
<br>
<br><font size=2 face="sans-serif">Let's look at the core of the agent
code:</font>
<br>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'make sure all
conversion files are detached</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Call DetachTransformationFiles(tempDir,doc,transformationNames)</font></tt>
<br>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Pipelined call
to XSLT Transformation an SAX Parser</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Call TransformFileToSax(transformationNames,fileNames(0),doc,
xsltParameters) &nbsp; &nbsp; &nbsp; &nbsp;</font></tt>
<br>
<br><font size=2 face="sans-serif">After detaching the XSLT files to the
system temp directory we run a cascaded transform:</font>
<br>
<br><tt><font size=2>Function TransformFileToSax(transformationNames As
Variant,fileName As String, doc As NotesDocument, Parameters List As String)
As Boolean</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Transformes the
input file in a series of transformation, one each for each name in transformationNames</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Then hands over
the stream to the Sax parser for further processing</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim s As New NotesSession</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim i As Integer</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim sourceStream
As NotesStream &nbsp; &nbsp; &nbsp; &nbsp;</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim tempDir As
String &nbsp; &nbsp; &nbsp; &nbsp;</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim transformers()
As NotesXSLTransformer</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim styleStreams()
As NotesStream</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim loopcount
As Integer</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Dim saxParser
As NotesSAXParser</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; On Error Goto
Err_TransformFileToSax</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Create the Import
Definition</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Set obj_ImportDefinition
= New clsImportDefinition(doc) '</font></tt><tt><font size=2 color=red><b>&lt;--
this is where the magic is</b></font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Create the Sax
parser</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Set saxParser
= s.CreateSAXParser()</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; On Event SAX_Characters
From saxParser Call SAXCharacters</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; On Event SAX_EndElement
From saxParser Call SAXEndElement</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; On Event SAX_StartElement
From saxParser Call SAXStartElement</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; On Event SAX_EndDocument
From saxParser Call SAXEndDocument</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; If Isempty(transformationNames)
Then</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 'No transformation has to be done, just load a stream
and hand it to the sax parser</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Set sourceStream = s.CreateStream</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Call sourceStream.Open(fileName)</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Call saxParser.SetInput(sourceStream)</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Call saxParser.Process</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Goto Exit_TransformFileToSax</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; End If</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'We need to feed
the result of the first transformation to the second, second to third etc.</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'We will use an
array of transformers and use the pipelineing capabilities of NotesXSLT
to chain them</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; tempDir = Environ(&quot;Temp&quot;)+&quot;\&quot;</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; loopcount = Ubound(transformationNames)
'How many loops do we have</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Redim transformers(loopcount)
'We initialize the exact number of transformers...</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Redim styleStreams(loopcount)
'Also the exact numbers of styles</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Set sourceStream
= s.CreateStream 'the source file</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Call sourceStream.Open(fileName,&quot;Unicode&quot;)
'Open the source</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt><tt><font size=2 color=red><b>'Now
the chaining loop &lt;-- this is the interesting part, we chain the Notes
Streams from file i/o until SAX Parser,</b></font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; For i = 0 To loopcount
Step 1</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 'Create the transformer</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Set transformers(i) = s.CreateXSLTransformer</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 'Feed in the parameters</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Forall p In Parameters</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Call transformers(i).AddParameter(Listtag(p),
p)</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; End Forall</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 'Create the style sheet and link it</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Set styleStreams(i) = s.CreateStream</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Call styleStreams(i).Open(tempDir+transformationNames(i),&quot;Unicode&quot;)</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Call transformers(i).SetStylesheet(styleStreams(i))</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; 'Link the input</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; If i = 0 Then</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Call transformers(i).SetInput(sourceStream)</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Else</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Call transformers(i).SetInput(transformers(i-1))</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; End If</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Next</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Link the final
output --- all other outputs are linked via input of the next one</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Call transformers(loopcount).SetOutput(saxParser)</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Process</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Call transformers(0).Process
'</font></tt><tt><font size=2 color=red><b>Just start the first one, pipelining
will take care of the others</b></font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; 'Wind down</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Call SourceStream.Close</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; For i = 0 To loopcount</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; Call styleStreams(i).close</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Next</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; TransformFileToSax
= True 'If we got here it worked</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>Exit_TransformFileToSax:</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Exit Function</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>Err_TransformFileToSax:</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Print Error$ +
&quot; in TransformFileToSax&quot;</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; TransformFileToSax
= False</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; Resume exit_TransformFileToSax</font></tt>
<br><tt><font size=2>&nbsp; &nbsp; &nbsp; &nbsp; </font></tt>
<br><tt><font size=2>End Function</font></tt>
<br>
<br><font size=2 face="sans-serif">The Sax stuff is quite simple...</font>
]]></content:encoded><pubDate>Tue, 11 Oct 2005 23:58:36 +0800</pubDate><slash:comments></slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=232F065A4F13E041482570970057C366</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=232F065A4F13E041482570970057C366</wfw:comment></item><item><title>Transforming DXL to a record/field structure.</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6GRMNM</link><description><![CDATA[ 
Gary
is updating his samples to Domino 6.x. One challenge he encountered is
how to transform DXL to something that looks more like a record. In LotusScript
you chain a NotesDXLExporter with a NotesXSLTransformer and apply a stylesheet.
Here it gets a ...]]></description><dc:subject>XML</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6GRMNM</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6GRMNM</guid><content:encoded><![CDATA[ <font size=3 color=blue><u><br>
</u></font><a href="http://blog.advisor.com/blog/garydev.nsf/d6plinks/GDEF-6GR268" target=_blank><font size=2 color=blue face="sans-serif"><u>Gary</u></font></a><font size=2 face="sans-serif">
is updating his samples to Domino 6.x. One challenge he encountered is
how to transform DXL to something that looks more like a record. In LotusScript
you chain a NotesDXLExporter with a NotesXSLTransformer and apply a stylesheet.
Here it gets a little tricky. Since Notes knows multi-values you are never
too sure what you will get. Also there is MIME and RichText. Excluding
these two, the following stylesheet does the trick (might be incomplete):</font><font size=3>
<br>
</font><font size=2 face="sans-serif"><br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
version=&quot;1.0&quot;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;xmlns:d=&quot;http://www.lotus.com/dxl&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;/&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;records&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:apply-templates select=&quot;//d:document&quot;/&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;/records&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:document&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:element name=&quot;record&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:attribute name=&quot;form&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:value-of
select=&quot;@form&quot;/&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/xsl:attribute&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:attribute name=&quot;unid&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:value-of
select=&quot;d:noteinfo/@unid&quot;/&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/xsl:attribute&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:apply-templates select=&quot;d:item&quot;/&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;/xsl:element&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:item&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:element name=&quot;field&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:attribute name=&quot;name&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:value-of
select=&quot;@name&quot;/&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/xsl:attribute&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;!-- here comes the tricky
part - get the field type and the values --&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:attribute name=&quot;type&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:value-of
select=&quot;name(child::*[1])&quot; /&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;/xsl:attribute&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:apply-templates /&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;/xsl:element&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;!-- Process the various data types --&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:textlist&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:apply-templates select=&quot;d:text&quot;/&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:text[position()=1]&quot;&gt;&lt;xsl:value-of
select=&quot;.&quot;/&gt;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;!-- We use ; separators for multivalues --&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:text[position()!=1]&quot;&gt;;
&lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;/xsl:template&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:datetimelist&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:apply-templates select=&quot;.//d:datetime&quot;/&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:datetime[position()=1]&quot;&gt;&lt;xsl:value-of
select=&quot;.&quot;/&gt;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;!-- We use ; separators for multivalues --&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:datetime[position()!=1]&quot;&gt;;
&lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;/xsl:template&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:numberlist&quot;&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp; &nbsp; &nbsp;&lt;xsl:apply-templates select=&quot;d:number&quot;/&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:number[position()=1]&quot;&gt;&lt;xsl:value-of
select=&quot;.&quot;/&gt;&lt;/xsl:template&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;!-- We use ; separators for multivalues --&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:number[position()!=1]&quot;&gt;;
&lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;/xsl:template&gt;</font><font size=3>
</font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;!-- exclude rawitemdata for now, we are only interested
in native fields --&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
 &nbsp; &nbsp;&lt;xsl:template match=&quot;d:item[d:rawitemdata]&quot;
/&gt;</font><font size=3> </font><font size=2 face="sans-serif"><br>
&lt;/xsl:stylesheet&gt;</font><font size=3> <br>
</font><font size=2 face="sans-serif"><br>
(Get it in the download section)</font><font size=3> </font>
]]></content:encoded><pubDate>Sat, 1 Oct 2005 00:00:00 +0800</pubDate><slash:comments>1</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=5D502E5E7AF5C9304825708D005C1512</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=5D502E5E7AF5C9304825708D005C1512</wfw:comment></item><item><title>Importing MS Excel into Lotus Notes via XML</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6FBK9X</link><description><![CDATA[ A very typical task in any Notes environment
is to import MS-Excel into Lotus Notes. While the client sports import
filters (with an eventual round trip through the venerable 1-2-3 format,
the server doesn't allow an import. OLE is rarely an option since ...]]></description><dc:subject>XML</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6FBK9X</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6FBK9X</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">A very typical task in any Notes environment
is to import MS-Excel into Lotus Notes. While the client sports import
filters (with an eventual round trip through the venerable 1-2-3 format,
the server doesn't allow an import. OLE is rarely an option since (rightfully)
any administrator rather runs naked into the CEO's office than to allow
desktop applications (read MS Office) to be installed on the server.</font><font size=3>
</font><font size=2 face="sans-serif"><br>
Since Office 2000 there is a new possibility: One could save an MS-Excel
file as XML Spreadsheet and use XML processing to extract the data. However
the rather harmless looking table:</font><font size=3> <br>
</font><img src="./plinks/SHWL-6FBK9X/StoryRichText/M2?OpenElement" alt="A picture named M2"><font size=2 face="sans-serif"><br>
turns into quite a LOT of XML. Before even thinking of processing it we
need to clean-up the code.</font><font size=3> </font>
]]></content:encoded><pubDate>Tue, 16 Aug 2005 22:43:01 +0800</pubDate><slash:comments>8</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=3F07D3934DF33283C125705F0050D7BE</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=3F07D3934DF33283C125705F0050D7BE</wfw:comment></item><item><title>Domino as XML Documents</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6D5AXX</link><description><![CDATA[ Richard
and Brian
had their take on Domino documents as XML. In my comment to Brian's post
I suggested to use webDAV
to achieve that today. Using webDAV Domino databases and folders could
be displayed as folders (not so sure about views) and Domino ...]]></description><dc:subject>XML</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6D5AXX</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6D5AXX</guid><content:encoded><![CDATA[ <a href="http://smokey.rhs.com/web/blog/PowerOfTheSchwartz.nsf/d6plinks/RSCZ-6CZW4W" target=_blank><font size=2 color=blue face="sans-serif">Richard</font></a><font size=2 face="sans-serif">
and </font><a href=http://bbenz.typepad.com/softwaresoapbox/2005/06/nsf_replaced_by.html target=_blank><font size=2 color=blue face="sans-serif">Brian</font></a><font size=2 face="sans-serif">
had their take on Domino documents as XML. In my comment to Brian's post
I suggested to use </font><a href=http://www.webdav.org/ target=_blank><font size=2 color=blue face="sans-serif">webDAV</font></a><font size=2 face="sans-serif">
to achieve that today. Using webDAV Domino databases and folders could
be displayed as folders (not so sure about views) and Domino documents
as XML documents. webDAV comes with support for access control, so Domino's
security (readers/authors/acl) would be in force. You could even use filters
(a.k.a. XSLT transformations), so the XML could be domain specific rather
than raw XML.</font>
<br><font size=2 face="sans-serif">A prove of concept servlet doesn't seem
too much magic. What would one do with such a capability?</font>
]]></content:encoded><pubDate>Tue, 7 Jun 2005 15:37:27 +0800</pubDate><slash:comments>4</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=45AAA5733F8A474D482570190029E1CE</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=45AAA5733F8A474D482570190029E1CE</wfw:comment></item><item><title>Legacy code?</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6D4AHE</link><description><![CDATA[ &quot;Before we get started, do you
know what 'Legacy Code' means? It's code that works&quot;.
Via ...]]></description><dc:subject>Concepts</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6D4AHE</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6D4AHE</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif"><b><i>&quot;Before we get started, do you
know what 'Legacy Code' means? It's code that works&quot;.</i></b></font>
<br><font size=2 face="sans-serif">Via </font><a href=http://msmvps.com/bill/archive/2005/06/06/50699.aspx target=_blank><font size=2 color=blue face="sans-serif">Ben</font></a>
]]></content:encoded><pubDate>Mon, 6 Jun 2005 15:14:13 +0800</pubDate><slash:comments>2</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=9E5D0476D2444DA4C12570180027B76E</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=9E5D0476D2444DA4C12570180027B76E</wfw:comment></item><item><title>Getting a Gannt chart out of Domino</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6BCD98</link><description><![CDATA[ 
Alan Bell of Dominux Consulting describes
how to use jfree.org's Java libraries to produce a Gannt chart in ...]]></description><dc:subject>Java</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6BCD98</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-6BCD98</guid><content:encoded><![CDATA[ 
<br><font size=2 face="sans-serif">Alan Bell of Dominux Consulting </font><a href="http://www.dominux.co.uk/dominuxblog.nsf/d6plinks/FOUN-6BCAPV" target=_blank><font size=2 color=blue face="sans-serif"><u>describes</u></font></a><font size=2 face="sans-serif">
how to use jfree.org's Java libraries to produce a Gannt chart in Domino.</font><font size=3>
</font>
]]></content:encoded><pubDate>Mon, 11 Apr 2005 17:34:41 +0800</pubDate><slash:comments></slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=361C7742CBCEE3FEC1256FE0003568AB</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=361C7742CBCEE3FEC1256FE0003568AB</wfw:comment></item><item><title>Detailed documentation how to connect Tomcat 5.5 to Domino</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-68YHZT</link><description><![CDATA[ Dan Simmonds just published a detailed
documentation about his experience with connecting Tomcat 5.5 and Domino
6.5.1. A ...]]></description><dc:subject>Java</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-68YHZT</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-68YHZT</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">Dan Simmonds just published a detailed
documentation about his experience with connecting Tomcat 5.5 and Domino
6.5.1. A </font><a href="http://home.exetel.com.au/dangela/technical_docs/tomcat-domino.html" target=_blank><font size=2 color=blue face="sans-serif">must
read</font></a><font size=2 face="sans-serif">.</font>
]]></content:encoded><pubDate>Tue, 25 Jan 2005 21:38:48 +0800</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=D476DC1A137FDF7A48256F94004AF6F4</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=D476DC1A137FDF7A48256F94004AF6F4</wfw:comment></item><item><title>Purifying (x)HTML</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/PDWD-68UJ8Y</link><description><![CDATA[ 

Richard
Schwarz asked the question
how to purify
HTML that has been submitted
in a Blog. Stephan suggested to transform the HTML to proper xHTML first
using jTidy
and then, since you gain valid XML (validating against the xhtml schema),
filter it ...]]></description><dc:subject>XML</dc:subject><dc:creator>Peter de Waard</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/PDWD-68UJ8Y</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/PDWD-68UJ8Y</guid><content:encoded><![CDATA[ 
<br><font size=3 color=blue><u><br>
</u></font><a href=http://smokey.rhs.com/web/blog/PowerOfTheSchwartz.nsf/ target=_blank><font size=2 color=blue face="sans-serif"><u>Richard
Schwarz</u></font></a><font size=2 face="sans-serif"> asked the question
how to </font><a href="http://smokey.rhs.com/web/blog/PowerOfTheSchwartz.nsf/plinks/RSCZ-68AKH3" target=_blank><font size=2 color=blue face="sans-serif"><u>purify
HTML</u></font></a><font size=2 face="sans-serif"> that has been submitted
in a Blog. Stephan suggested to transform the HTML to proper xHTML first
using </font><a href=http://sourceforge.net/projects/jtidy target=_blank><font size=2 color=blue face="sans-serif"><u>jTidy</u></font></a><font size=2 face="sans-serif">
and then, since you gain valid XML (validating against the xhtml schema),
filter it using XSLT.</font><font size=3> </font><font size=2 face="sans-serif"><br>
We had a quick session and came up with a template you can download in
the downloads section of this blog. First we had to decide on the general
mode of operation: Either: &quot;Everything is ok unless explicitly forbidden&quot;
or: &quot;Only tags that are explicitly allowed will go through. We opted
for the first one. The result was about 4k of XSLT, that serves as the
template for your specific needs.</font><font size=3> </font>
]]></content:encoded><pubDate>Fri, 21 Jan 2005 21:50:15 +0800</pubDate><slash:comments>1</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=FD036A298F91126848256F90004C02FB</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=FD036A298F91126848256F90004C02FB</wfw:comment></item><item><title>Single Sign-on for Tomcat and Domino</title><link>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-67E52F</link><description><![CDATA[ There is an excellent
article on www.automatedlogic.com
how to integrate Tomcat and Domino. A must ...]]></description><dc:subject>Java</dc:subject><dc:creator>Stephan H. Wissel</dc:creator><comments>http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-67E52F</comments><guid isPermaLink="true">http://fromdomino.com/__48256E5A001AB060.nsf/d6plinks/SHWL-67E52F</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">There is an </font><a href=http://www.automatedlogic.com/domblog.nsf/dx/DominoTomcatSSOIntegration target=_top><font size=2 color=blue face="sans-serif">excellent
article</font></a><font size=2 face="sans-serif"> on www.automatedlogic.com
how to integrate Tomcat and Domino. A must read.</font>
]]></content:encoded><pubDate>Mon, 6 Dec 2004 10:34:15 +0800</pubDate><slash:comments>1</slash:comments><wfw:commentRss>http://fromdomino.com/__48256E5A001AB060.nsf/CommentsRSS?Open&amp;id=7CDE83B262B52D8748256F62000E1F47</wfw:commentRss><wfw:comment>http://fromdomino.com/__48256E5A001AB060.nsf/PostComment?RunAgent&amp;id=7CDE83B262B52D8748256F62000E1F47</wfw:comment></item></channel>
</rss>

