[Zope] XSLT is zope

Phil Harris phil.harris@zope.co.uk
Mon, 26 Mar 2001 22:34:07 +0100


This is a multi-part message in MIME format.

------=_NextPart_000_0077_01C0B644.DE78E470
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Tom,

Find attached the beginnings of what I call nXMLDocument.  I made this
sometime ago but never got around to finishing it the way I wanted to.

It's a document type which has the ability to have it's content associated
with an XSLT document (basically a DTML Method).

The XML and XSLT can be built on the fly from DTML and all the other
goodies, and then these are then brought together with the same namespace
stack to create an output document.

The stylesheet can be 'got' in a few ways, by setting a property on a
document/folder etc in Zope or from a session (I think I've taken that out
for the moment tho), and finally from the URL or a form.

It's pretty quick depending on the XSLT processor used with it, I've tried a
few so far including  4XSLT, Sablotron and MSXML3.  Of these MSXML3 is fast
and compliant, 4Suite is fairly slow but compliant, and Sablotron is just
plain fastest but not too compliant (but getting better).

It's still pretty much development stuff but it works and should give a good
idea how to do this sort of thing.

hth

Phl
----- Original Message -----
From: "tom smith" <tom@othermedia.com>
To: "zope zope.org" <zope@zope.org>
Sent: Monday, March 26, 2001 7:29 PM
Subject: [Zope] XSLT is zope


> Is there any zope-based way to apply an xsl template to data in a
> DTMLMethod?
>
> tom
> --
> tom smith | tom@othermedia.com
> http://www.othermedia.com/blog
> tel 020 8541 5355  | fax 020 8541 5507
> 11 penrhyn road, kingston-upon-thames, london KT1 2BZ
>
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )

------=_NextPart_000_0077_01C0B644.DE78E470
Content-Type: application/x-zip-compressed;
	name="nXMLDocument.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="nXMLDocument.zip"

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
CAAuhGYp+qtHRqwCAABnBwAAIgAAAAAAAAABACAAtoGACgAAblhNTERvY3VtZW50L25YTUxkb2N1
bWVudEVkaXQuZHRtbFBLAQIUABQAAAAIAMd2qyg2fjKvyQIAAFMGAAAjAAAAAAAAAAEAIAC2gWwN
AABuWE1MRG9jdW1lbnQvblhNTGRvY3VtZW50UHJveHkuZHRtbFBLAQIUABQAAAAIABBvYyeW4AH8
5QEAACIDAAAkAAAAAAAAAAEAIAC2gXYQAABuWE1MRG9jdW1lbnQvblhNTGRvY3VtZW50VXBsb2Fk
LmR0bWxQSwECFAAKAAAAAAAAB24qAAAAAAAAAAAAAAAAGAAAAAAAAAABACAAtoGdEgAAblhNTERv
Y3VtZW50L3JlZnJlc2gudHh0UEsBAhQAFAAAAAgAlbl3KOk3LaiBAAAAhAAAABgAAAAAAAAAAAAg
ALaB0xIAAG5YTUxEb2N1bWVudC94bWxfZG9jLmdpZlBLAQIUABQAAAAIADpbZinwbzIl0gAAAJoB
AAAYAAAAAAAAAAEAIAC2gYoTAABuWE1MRG9jdW1lbnQvX19pbml0X18ucHlQSwECFAAKAAAAAAAP
tHoqAAAAAAAAAAAAAAAADQAAAAAAAAAAABAA/0GSFAAAblhNTERvY3VtZW50L1BLBQYAAAAACQAJ
AJkCAAC9FAAAAAA=

------=_NextPart_000_0077_01C0B644.DE78E470--