DXL: Working with Domino Data in XML

Preview:

Citation preview

AD110AD110DXL: Working with Domino Data in XMLDXL: Working with Domino Data in XML

Ned Batchelder, Iris AssociatesNed Batchelder, Iris AssociatesDave Schlesinger, Lotus DevelopmentDave Schlesinger, Lotus Development

AgendaAgenda

What is DXL?What is DXL?Design principlesDesign principlesStatusStatusToolsToolsDemosDemosQuestionsQuestions

What is DXL?What is DXL?

Domino XML LanguageDomino XML LanguageDomino data expressed in XMLDomino data expressed in XMLA universal format for Domino dataA universal format for Domino data

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

Why DXL?Why DXL?

XML is good for describing informationXML is good for describing informationXML is easy to work withXML is easy to work with

widely available toolswidely available toolspowerful declarative toolspowerful declarative tools

XML schemas are "APIs" to dataXML schemas are "APIs" to dataXML is a good way to work with Domino data: DXLXML is a good way to work with Domino data: DXL

DXL UsesDXL Uses

ExportExportImportImportModificationModificationExternal ToolExternal Tool

Use: ExportUse: Export

DXLNSF

Data exported from NSF as DXLData exported from NSF as DXL

DominoDomino

The World

Use: ExportUse: Export

DXLNSF

XSLT

XSL

XML orHTML

Data exported from NSF as DXLData exported from NSF as DXLOptionally transformed via XSLTOptionally transformed via XSLT

DominoDomino

The World

Use: ImportUse: Import

External DXL imported into NSFExternal DXL imported into NSF

DXL NSFThe World

DominoDomino

Use: ImportUse: Import

External DXL imported into NSFExternal DXL imported into NSFCould have been transformed from other XML Could have been transformed from other XML

DXL NSF

XSL

XMLThe World XSLT

DominoDomino

Use: ModificationUse: Modification

Data exported to DXLData exported to DXLDXL modified (in whatever way you like)DXL modified (in whatever way you like)Data imported back into NSFData imported back into NSF

DXL

NSF

DXL

Modification

Use: External ToolUse: External Tool

Third-party tool uses DXL to create Domino Third-party tool uses DXL to create Domino contentcontent

NSF

DXL

DXL

Tool

Use: External ToolUse: External Tool

Third-party tool uses DXL to create Domino Third-party tool uses DXL to create Domino contentcontentPrivate information can be stored as wellPrivate information can be stored as well

NSF

DXL

DXL

Tool

DXL GoalsDXL Goals

CompleteCompleteLosslessLosslessApproachableApproachableTransformableTransformableExtensibleExtensible

Goal: CompleteGoal: Complete

Express all Domino dataExpress all Domino datadocumentsdocumentsdesign elementsdesign elementseverything elseeverything else

Goal: LosslessGoal: Lossless

Preserve as much information as possiblePreserve as much information as possibleGet Domino data out to the worldGet Domino data out to the worldGet data into DominoGet data into DominoEnable round-tripping through XMLEnable round-tripping through XML

Goal: ApproachableGoal: Approachable

A Domino developer would be able to read (and A Domino developer would be able to read (and write) itwrite) itYou don't have to worry about "Domino secrets"You don't have to worry about "Domino secrets"No more specially-named items!!No more specially-named items!!

Goal: TransformableGoal: Transformable

Should be transformable with XSLTShould be transformable with XSLTinto other XMLinto other XMLinto other DXLinto other DXLinto HTMLinto HTML

Goals: ExtensibleGoals: Extensible

Third-party tools should be able to round-trip Third-party tools should be able to round-trip through Dominothrough DominoFuture features should be accommodatedFuture features should be accommodated

DXL Non-GoalsDXL Non-Goals

DXL cannot be directly displayed in a browserDXL cannot be directly displayed in a browserit isn't HTMLit isn't HTML

DXL is not stored in NSFDXL is not stored in NSFit isn't on-diskit isn't on-disk

Domino app semantics won't be built with XSLDomino app semantics won't be built with XSLit doesn't replace HTTPit doesn't replace HTTP

DXL Challenges: Levels of RepresentationDXL Challenges: Levels of Representation

An appointment...An appointment......is really a mail memo......is really a mail memo......which is actually a document......which is actually a document......which is implemented as a note....which is implemented as a note.So: <appointment> or <memo> or <document> or So: <appointment> or <memo> or <document> or <note>?<note>?Answer: <document>Answer: <document>

DXL Challenges: Rich TextDXL Challenges: Rich Text

Needs to be understandableNeeds to be understandableNeeds to represent all of Domino rich textNeeds to represent all of Domino rich textUse HTML?Use HTML?Encode CD records?Encode CD records?Answer: our own tag languageAnswer: our own tag language

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

<document form='Memo'><document form='Memo'><document form='Memo'><document form='Memo'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'><noteinfo unid='9C93469B4BFC2081852567AE00559882'>

<created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created><created><datetime>19991205T091500,00-04</datetime></created></noteinfo></noteinfo></noteinfo></noteinfo><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Subject'><text>XML Talk</text></item><item name='Sent'><item name='Sent'><item name='Sent'><item name='Sent'>

<datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><datetime dst='true'>19991205T091500,00-04</datetime></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='From'><text>Ned Batchelder</text></item><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext><item name='Body'><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'><run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!<run><font style='italic'>Please</run> come to my talk!

</par></richtext></item></par></richtext></item></par></richtext></item></par></richtext></item></document></document></document></document>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code></code></code></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code></code></code></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></par></par></par></richtext></body></richtext></body></richtext></body></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

<form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><form name='Mini Doc' default='true' mailable='true'><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><noteinfo>...</noteinfo><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'><code event='windowtitle'>

<formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><formula>@If(@IsNewDoc; "New Memo"; Subject)</formula></code><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><actionbar><action .../>...</actionbar><body><richtext><body><richtext><body><richtext><body><richtext>

<par def='1'><par def='1'><par def='1'><par def='1'>Subject: Subject: Subject: Subject: <field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'><field type='text' kind='editable' name='Subject'>

<code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><code event='defaultvalue'><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code><formula>"New Document"</formula></code>

</field></field></field></field></par></richtext></body></par></richtext></body></par></richtext></body></par></richtext></body>

</form></form></form></form>

Status: SchemaStatus: Schema

In progessIn progessThe schema is not doneThe schema is not done

IT WILL CHANGE!!!IT WILL CHANGE!!!We want your feedbackWe want your feedback

Status: ProductStatus: Product

Some DXL is available todaySome DXL is available today?ReadViewEntries (5.02)?ReadViewEntries (5.02)Document.generateXML (5.03)Document.generateXML (5.03)Those parts of the schema won't change!Those parts of the schema won't change!

Lots more in future feature releasesLots more in future feature releases

ToolsTools

DXLExport: output DXL from NSF dataDXLExport: output DXL from NSF dataDXLImport: input DXL into NSFDXLImport: input DXL into NSFThese tools are available on an unsupported basis These tools are available on an unsupported basis nownow

notes.net/dxlnotes.net/dxlRun on 5.0Run on 5.0

DXLExportDXLExport

Translates NSF into DXLTranslates NSF into DXLHandles database, documents, rich text, forms, Handles database, documents, rich text, forms, viewsviewsUninterpreted stuff is dumped rawUninterpreted stuff is dumped rawExample:Example:

DXLExport db.nsf Memo -o memo.dxlDXLExport db.nsf Memo -o memo.dxl

DXLImportDXLImport

Imports DXL into NSFImports DXL into NSFHandles database, documents, rich textHandles database, documents, rich textExample:Example:

DXLImport docs.dxl -d db.nsfDXLImport docs.dxl -d db.nsf

DemosDemos

Design synopsisDesign synopsisAnalysisAnalysisDocument importDocument importGlobal search-and-replaceGlobal search-and-replace5.03 Book demo5.03 Book demo

Design Synopsis DemoDesign Synopsis Demo

Export design informationExport design informationTransform into a readable pageTransform into a readable page

NSFExport DXL LotusXSL HTML

XSLXSL

XSL

Design Analysis DemoDesign Analysis Demo

Export design informationExport design informationTransform into a reportTransform into a report

NSFExport DXL XSLT HTML

XSLXSL

XSL

Document Import Demo Document Import Demo

DocDemoXML

LotusXSL

HTML

Document Import DemoDocument Import Demo

Transform "DocDemo" XML to both DXL and Transform "DocDemo" XML to both DXL and HTML using LotusXSL (Xalan)HTML using LotusXSL (Xalan)

Using HTML only to view document outside of DominoUsing HTML only to view document outside of Domino

DXL

XSL

DXL DXLImport

Document Import Demo Document Import Demo (continued)(continued)

Import DXL into Domino using DXLImportImport DXL into Domino using DXLImport

NSF

Search and Replace DemoSearch and Replace Demo

Search and Replace DemoSearch and Replace Demo

Export Domino document to DXL using Export Domino document to DXL using DXLExportDXLExport

DXLDXLExportNSF

Modify DXL file using text editorModify DXL file using text editor

DXL'Text

EditorDXL

DXL' DXLImport

Search and Replace Demo Search and Replace Demo (continued)(continued)

Import modified DXL back into Domino using Import modified DXL back into Domino using DXLImportDXLImport

NSF

Books DemoBooks Demo

DXLNSF

XSLT

XSL

DominoDomino

Document mailed as XMLDocument mailed as XML

XML

The World

SummarySummary

DXL brings the power of XML to Domino DXL brings the power of XML to Domino informationinformationWe've already started putting it in the productWe've already started putting it in the productThe future will have much moreThe future will have much moreGive us your opinionsGive us your opinions

DownloadDownload

Get it from Get it from http://notes.net/dxlhttp://notes.net/dxlWhat you get:What you get:

DXL Schema (DTD)DXL Schema (DTD)DXLExport.exeDXLExport.exeDXLImport.exeDXLImport.exeSamplesSamples

Feedback in the notes.net ForumFeedback in the notes.net Forum

Questions?Questions?

Other sessions:Other sessions:AD101: The Wide Angle View of XML at LotusAD101: The Wide Angle View of XML at LotusAD109: Exploiting XML in DominoAD109: Exploiting XML in Domino

Visit the lab!Visit the lab!Download from Download from http://notes.net/dxlhttp://notes.net/dxl