Sylvain Wallez wrote: > >Unfortunately, this requires a different attribute, something like > > > > <pipeline exposure="(public|internal|block)"> > > > > > > Interesting thought. Let's keep it for when we will discuss the > security-related topics of block.
Ok. > <snip/> > > >For example, we could have done: > > > > <map:generate type="aggregate"> > > > >instead of > > > > <map:aggregate ...> > > > >but than we would have left the user the ability to 'remove' > >functionality from the sitemap. > > > >This is why I prefer to encode proper sitemap functionality in its > >semantics, even if, implementation-wise, it would be equivalent to reuse > >the existing component infrastructure. > > > >Do you see my point? > > > > > > Yes, and I agree : visible semantic is better than a magical > implementation of another one. Cool. > <snip/> > > >Admittedly, this very random thinking, but at least it will trigger > >something in your synapses (hopefully :) > > > > > > Yes ! But what it triggered isn't exactly what you may have been waiting > for : I'm pretty sure now we both have the same understanding of this > pipeline inheritance and overloading stuff, but each of us re-used > existing but different terms with their associated meanings, leading to > this confusion. All right. > However, you still did not catch what I want to explain. Let's give it > another try with your new <import>, which has no previous history, > unlike <call> or <transform>. Ok, great. > I wish we could join in front of a whiteboard, this would be much easier :) Ah, no kidding :) > What I (desperately ;) try to show you is that <import> without > explicitly saying what is to be imported from the target pipeline is > sometimes ambiguous in a _real_ sitemap, containing several matchers > building several different pipelines. > > Let's consider a skin pipeline that renders an xdoc as an html page. > This pipeline requires a "doc" parameter which should be passed by the > caller (let's not argue about argument passing, as this is yet another > problem!) : > <pipeline name="doc2html"> > <generate src="{doc}.xml"/> > <transform src="doc2html.xsl"/> > <serialize type="html"/> > </pipeline> > > Now let's consider the typical doc generation statements : > <match pattern="*.html"> > <import name="doc2html"> > <parameter name="doc" value="{1}"/> > </import> > </match> > > No problem here : we import the full "doc2html" pipeline. > > Now, let's consider the case of the FAQ which has a special DTD : > <match pattern="faq.html"> > <generate src="faq.xml"/> > <transform src="faq2doc.xsl"/> > <import name="doc2html"> > <parameter name="doc" value="dummy"/> > </import> > </match> > > We generate our FAQ, transform it into an xdoc and import the > transformation and serialization of doc2html. The "doc" parameter, used > by the generator, is actually useless and could even have been avoided. > > Now let's assemble all this in a sitemap : the internal "doc2html" and > the externally visible pipeline, with "faq.html" matcher first, since it > is more specific than "*.html" : > <sitemap> > <pipeline name="doc2html"> > <generate src="{doc}.xml"/> > <transform src="doc2html.xsl"/> > <serialize type="html"/> > </pipeline> > > <pipeline> > <match pattern="faq.html"> > <generate src="faq.xml"/> > <transform src="faq2doc.xsl"/> > <import name="doc2html"> > <parameter name="doc" value="dummy"/> > </import> > </match> > > <match pattern="*.html"> > <import name="doc2html"> > <parameter name="doc" value="{1}"/> > </import> > </match> > </pipeline> > > </sitemap> > > And here comes the ambiguity that I desperately try to show you : in the > current sitemap syntax, <serialize> marks the end of the pipeline > construction, and consequently the end of the processing of sitemap > statements. > > <import>, on the contrary, can be considered as a generator, a > transformer or a serializer *depending on the context*. Yes, this is correct. > And the context > of the two matchers above (assembled in a sitemap) *is different* from > the context of each matcher considered separately. :-? I don't get it... > So when we end the <match> for "faq.html", how can we know if pipeline > construction is finished (with the serializer of "doc2html") or if it > should continue with the following statements ? The answer is : we > cannot know. :-??? sorry, probably I'm stupid and slow, but I still don't get it: when it finds a serializer the sitemap stops. I really don't see the problem (but since I didn't implement all this stuff, you are seeing something I'm not) > And worse, if we continue evaluating statements, the second match > ("*.html") matches, and we encounter another <import>. What happens here > ? Since the pipeline being built already has a generator, will we append > (a second time) the transformer part of "doc2html" ? > > That's why I say a more explicit semantic is required. The calling > pipeline *must* explicitly say what is to be included and what is to be > overloaded in the called pipeline. I keep on not getting it: what is the difference between an explicit information and an implicit one? The information on *what* to include and what to overload is taken from the context and the context *is* specified by where you place the <import> statement. I'm sorry, but I really can't see your point. > Consider the same sitemap with just > an additional "what" attribute to <import> : > > <sitemap> > <pipeline name="doc2html"> > <generate src="{doc}.xml"/> > <transform src="doc2html.xsl"/> > <serialize type="html"/> > </pipeline> > > <pipeline> > <match pattern="faq.html"> > <generate src="faq.xml"/> > <transform src="faq2doc.xsl"/> > <import name="doc2html" what="transform, serialize"> > <parameter name="doc" value="dummy"/> > </import> > </match> > > <match pattern="*.html"> > <import name="doc2html" what="all"> > <parameter name="doc" value="{1}"/> > </import> > </match> > </pipeline> > </sitemap> > > I don't pretend this notation is nice, but it carries the required > information : this simple attribute has removed all ambiguities, and we > are able to know exactly what will happen. > > Has this triggered something in your synapses ? No, not really :/ -- Stefano Mazzocchi One must still have chaos in oneself to be able to give birth to a dancing star. <[EMAIL PROTECTED]> Friedrich Nietzsche -------------------------------------------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]