Greetings!
We at Ariel have recently started using Zope and, needless to say, we are enjoying a large increase in productivity compared to our previous Apache-Cocoon2-Tomcat-Servlet-dbXML-Java environment. In our opinion, Zope is about a year or two ahead of where these guys are in many respects. Kudos!
The main problems we faced while moving to Zope were these:
- how to support version control, branching, merging, tagging, etc. etc. (we use CVS) - how to support our XML/XSLT-pipeline based document publishing paradigm (cf Cocoon2)
We have seen several efforts underway to address these issues within the Zope community. We have gone a slightly different direction, but hope to contribute to these efforts in some way. In our environment:
- multiple author/developers work on the same documents at the same time - we work on content for several clients at the same time - web pages are cobbled together from content pulled from several XML documents, according to a PagePolicy (similar to the way articles are collected and pasted into a newspaper page). - the PagePolicies can be changed independent of the underlying content (header-body-leftmargin-footer, header-body, etc) - all content is in XML, transformed into HTML/DTML by XSLT. - we use lots of tools other than Zope, so we want to keep our content in XML, not pickled Zope objects. (hold the pickles ;-)
In order to make all this work, we created three Zope Products:
ExternalFile: Points to a file in the filesystem. Unlike ExtFile, it is not copied into a repository directory, but remains "in situ" Behaves similarly to a symbolic link in UNIX or windows shortcut. Metadata stays in Zope, but content stays in the file. index_html and __call__ return the content as if it were a real Zope object, so Zope doesn't know the difference. :-) Due to permissioning and other possible problems, this is probably only appropriate for development, not production. In future, we hope to add an option to copy in the content to ZODB, essentially converting it to a DTMLDocument. At that point we will probably rename the class "ExternalizableFile" more on this later.....
CVSFile: inherits from ExternalFile. Same thing, but the file is assumed to be inside of a CVS sandbox. Includes buttons for doing normal cvs commands. Sandboxdir is stored in a cookie, so each developer can access his own sandbox via THE SAME ZOPE OBJECT. That is, all developers can share a single Zope server but each see content from his own sandbox. (play in your own sandbox :-) This avoids the locking issues and other problems inherent in things like CVSwebClient. It also enables the content to stay "native" rather than becoming a Zope extract like in ZCVSMixin/ZCVSFolder.
XMLDocument: (Sorry for the name clash). Inherits from CVSFile. Has a notion of a "transformer" property that points to an XSLT transformer. This enables it to be rendered automatically into HTML when __call__ or index_html is called. The underlying XML file can either be external or not. The XMLDocument object represents the entire file, as opposed to the parsedXML stuff that explodes a single document into multiple Zope objects for each XML node (correct me if I am wrong...)
There is lots more to do, but we do have initial development versions of all three working in the lab. Is there interest in this kind of Product? Would it be considered heretical? ;-) Are others working on the same thing?
Thanks!
--Craeg
In our opinion, Zope is about a year or two ahead of where these guys are in many respects. Kudos!
When I asked the tomcat mailing list for Zope like functionality in tomcat (some year ago) nobody even answered. The product probably wasn't known or nobody saw the possibilities. I still think cocoon rocks, and session managament in Tomcat is way better than in Zope. The problem is that Tomcat demands more skills from the webbies. and Zope allows easy maintainance of 'live' sites, on site. Anyway,
The main problems we faced while moving to Zope were these:
- how to support version control, branching, merging, tagging, etc.
etc. (we use CVS)
- how to support our XML/XSLT-pipeline based document publishing
paradigm (cf Cocoon2)
Having moved ZZICT towards zope from jsp. we faced the same XSL/XSLT problems. I often wondered: how come they have xml-rpc but not XSLT?
<snipped> XMLDocument: (Sorry for the name clash). Inherits from CVSFile. Has a notion of a "transformer" property that points to an XSLT transformer. This enables it to be rendered automatically into HTML when __call__ or index_html is called. The underlying XML file can either be external or not. The XMLDocument object represents the entire file, as opposed to the parsedXML stuff that explodes a single document into multiple Zope objects for each XML node (correct me if I am wrong...)
We developed more or less the same thingy: a ZZXML product which is an XML file which upon rendering can be transformed by any number of XSLTs. the way the XML and XSL are linked is that of the XSLT spec:
<?xml version = "1.0"?> <?xml-stylesheet href="....xsl" type="text/xml"?> ...
I personally hacked in into a Zope 2.4 with the python xml.xslt and xml.dom.ext packages and some 200 lines of glue code.
The problems with the thingy are: - xml authoring :the xml documents are only editable as text - xslt is not context sensitive. fi I'd like to be able to apply different style sheets for (fe) different authorization roles - for some reason the webbies don't really like an XML/XSLT pipeline, because it is rather difficult to get the separation of concerns right. (fe content:XML only, first style sheet: structure of page second style sheet: markup elements , third style sheet: browser specifics aso) Web publishing still remains rather hard.
There is lots more to do, but we do have initial development versions of all three working in the lab. Is there interest in this kind of Product? Would it be considered heretical? ;-) Are others working on the same thing?
In short: yes, donno, yes.
Romain.
I'll leave the CVS to others, XML stuff is right where I am looking at the moment. My XML kit is not "standards" based (And anyone who has spoken to me about XMLKit will know that I don't like the current SAX/DOM implementations in python as they try to make Python think like Java...). I have been looking to greatly improve the proccessing in my XMLDocument because it is currently both counter-intuitive and clumsy to use. I may have misunderstood, but my XMLFile and XMLProxy objects my provide some of what you were taking about with the Zope access to XML both inside and outside of your Zope.
Maybe we can move XMLKit in the directions you are talking of aswell?
The two criteria that I have are: 1) The code needs to be Python, not C (For now at least) for the platform independance. (A number of Zope products I would love to use will only run on one platform and I need complete platform independance for most of my installations). 2) The product needs to be easy enough to use that a someone who is not an XML-guru can use it to good effect.
Adrian...
-- The difficulty of tactical maneuvering consists in turning the devious into the direct, and misfortune into gain. - Sun Tzu
----- Original Message ----- From: "Craeg K. Strong" cstrong@arielpartners.com To: zope-xml@zope.org; zope-dev@zope.org; cstrong@arielpartners.com Sent: Wednesday, October 31, 2001 2:30 AM Subject: [Zope-dev] Any interest in a set of Zope products to support CVS-versioned, XML/XSLT-based Zope development?
Greetings!
We at Ariel have recently started using Zope and, needless to say, we are enjoying a large increase in productivity compared to our previous Apache-Cocoon2-Tomcat-Servlet-dbXML-Java environment. In our opinion, Zope is about a year or two ahead of where these guys are in many respects. Kudos!
The main problems we faced while moving to Zope were these:
- how to support version control, branching, merging, tagging, etc.
etc. (we use CVS)
- how to support our XML/XSLT-pipeline based document publishing
paradigm (cf Cocoon2)
We have seen several efforts underway to address these issues within the Zope community. We have gone a slightly different direction, but hope to contribute to these efforts in some way. In our environment:
- multiple author/developers work on the same documents at the same time
- we work on content for several clients at the same time
- web pages are cobbled together from content pulled from several XML
documents, according to a PagePolicy (similar to the way articles are collected and pasted into a newspaper page).
- the PagePolicies can be changed independent of the underlying content
(header-body-leftmargin-footer, header-body, etc)
- all content is in XML, transformed into HTML/DTML by XSLT.
- we use lots of tools other than Zope, so we want to keep our content
in XML, not pickled Zope objects. (hold the pickles ;-)
In order to make all this work, we created three Zope Products:
ExternalFile: Points to a file in the filesystem. Unlike ExtFile, it is not copied into a repository directory, but remains "in situ" Behaves similarly to a symbolic link in UNIX or windows shortcut. Metadata stays in Zope, but content stays in the file. index_html and __call__ return the content as if it were a real Zope object, so Zope doesn't know the difference. :-) Due to permissioning and other possible problems, this is probably only appropriate for development, not production. In future, we hope to add an option to copy in the content to ZODB, essentially converting it to a DTMLDocument. At that point we will probably rename the class "ExternalizableFile" more on this later.....
CVSFile: inherits from ExternalFile. Same thing, but the file is assumed to be inside of a CVS sandbox. Includes buttons for doing normal cvs commands. Sandboxdir is stored in a cookie, so each developer can access his own sandbox via THE SAME ZOPE OBJECT. That is, all developers can share a single Zope server but each see content from his own sandbox. (play in your own sandbox :-) This avoids the locking issues and other problems inherent in things like CVSwebClient. It also enables the content to stay "native" rather than becoming a Zope extract like in ZCVSMixin/ZCVSFolder.
XMLDocument: (Sorry for the name clash). Inherits from CVSFile. Has a notion of a "transformer" property that points to an XSLT transformer. This enables it to be rendered automatically into HTML when __call__ or index_html is called. The underlying XML file can either be external or not. The XMLDocument object represents the entire file, as opposed to the parsedXML stuff that explodes a single document into multiple Zope objects for each XML node (correct me if I am wrong...)
There is lots more to do, but we do have initial development versions of all three working in the lab. Is there interest in this kind of Product? Would it be considered heretical? ;-) Are others working on the same thing?
Thanks!
--Craeg
Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )