Dieter Maurer wrote:
Craeg K Strong writes:
... The Zope protocol handler idea is interesting, and I haven't thought this all the way through yet. Could <dtml-var blat> be thought of as referring to "zope://blat" where the Zope protocol is the default and therefore omitted? I do not think, this would be a good correspondence:
"zope://blat" is kind of an absolute URL while "blat" is by no means absolute.
Dieter
You're right, it is a different thing. I was originally thinking that you could imagine a URN with a "zope" namespace ID (meaning the entire contents of the ZODB) and the python expression as the namespace specific string. However, I believe URNs are supposed to name a specific resource. By contrast, acquisition means that a dtml-var can name very different resources depending on what is in the ZODB. It is a variable, not a name. I am now thinking that the way to avoid my multiple mixin problem in Zope-2 is to break things apart into small pieces that each do a specific thing. For example, you could have: - a CVSFile product that makes an object in ZODB retrieve its content from a CVS sandbox - an XPath filter product that applies an xpath to an object in ZODB and returns the result - an XSLT transformer product that applies an xslt to an object in ZODB and returns the result - a STX to Docbook filter product that takes an ASCII file in structured text format and returns an XML file using the docbook dialect (I think STXDocument does this) So you could have a structured text document foo.stx in your CVS sandbox. A contrived example follows. Lets say you wanted an HTML page that displayed only a portion of the contents of a structured text file. The file ("foo.stx") is in your CVS sandbox, and you just want the first paragraph as an HTML page. You would create an instance of CVSFile called foo.stx in ZODB. foo.stx gets its content from the file "foo.stx" in your CVS sandbox. You would then create an instance of STXDocument that gets its content from foo.stx but transforms it into docbook XML. You might call it foo.xml You could then create an instance of XPathFilter that gets its content from foo.xml but just picks out some subset of that content based on the specified xpath. You might call that object "bar.xml" Finally, You could create an instance of XSLTFile that gets its content from bar.xml and applies an xslt transformer to it to output HTML. You might call this file "index_html" So inside a single folder in ZODB you could have your four different objects: folder/foo.stx (instanceof CVSFile) folder/foo.xml (instanceof STXDocument) folder/bar.xml (instanceof XPathFilter) folder/index_html (instanceof XSLTFile) So by navigating to "folder" you automatically get the HTML webpage with the desired content. How to make this work? Each Zope Product must be able to either hold its content directly or get its content by referring to another object in ZODB. Also, if the Product maintains a cache (obviously you don't want to run a transformation more than once on the same content) it must ask the referrred to object if its contents have changed. Thoughts? --Craeg