On Tue, 27 Nov 2001, Stefano Mazzocchi wrote: > Berin Loritsch wrote: > > > > While using Cocoon to generate the developer's docs, I have discovered some use > > cases where a more flexible matcher should be considered. First, let me outline > > how it works (now that we can follow links....): > > > > 1) By default, all requests for **.html files are handled by a default pipeline > > 2) We override this default for the developer's docs (have to perform includes for > > one big document) > > 3) We override this default for externally generated HTML files (i.e. the UML > > diagrams) > > 4) We override this again for the API docs and return index.xml because it will be > > overridden later. > > > > Why are the latter two even necessary? They didn't used to be, but the URI >following > > in Cocoon does not allow me to exclude certain URI paths from Cocoon. In a way, I > > would like to have a method for negative matching, and a way to perform aggregated > > matching. > > > > Negative matching basically works so that Cocoon will IGNORE the matched uris. > > For example, if I have a directive that will directly generate a 404 error, I can > > satisfy this requirement like this: > > > > <map:match pattern="api/**"> > > <map:generate-error type="404"/> > > </map:match> > > > > The Aggregate matching would change the way patterns are expressed. I know we have > > a RegExp matcher--which is great, but sometimes we want something more familiar: > > > > <map:match pattern="{api|diagrams}/**"> > > <map:generate-error type="404"/> > > </map:match> > > Gosh, I had the *exact* same feeling that we need something in between > star-matching and regexp-mathing. > > I already proposed it and it got rejected, I'd be all for it!!!
I knew it. Mixing pattern language is a -0 for me. > > > This also opens the door for something equally powerful on the positive matching >side: > > > > <map:match pattern="**/images/*.{gif|jpg|png}"> > > <map:select type="parameter"> > > <map:parameter name="parameter" value="{3}"/> > > <map:when test="jpg"> > > <map:read src="images/{2}.{3}" mime-type="image/jpeg"/> > > </map:when> > > <map:default> > > <map:read src="images/{2}.{3}" mime-type="image/{3}"/> > > </map:default> > > <map:select> > > <map:match> > > or even > > <map:match patter="**/images/*.{gif|jpeg|png}"> > <map:read src="images/{2}.{3}" mime-type="image/{3}"/> > </map:match> > > since nobody forces you to use three-letters extensions for your URIs :) As I've already said, the reader can (and will) ask the servlet engine for the mime-type and the sitemap asks the reader to set the mime-type. > > Of course, then I would want to go a step further and explicitly state my mime-type > > first in the select statement and only have one read. > > > > <map:mime-type value="image/jpeg"/> > > <map:read/> > > > > Although, we can apply separation of concerns again. In other words, mime-type >matching > > is not always a concern of the sitemap. URIs with standard extensions should not >need > > to have the mime-type matched by the sitemap. IOW, standard extensions such as >".pdf", > > ".jpg", ".gif", ".png", ".rtf", etc. should have a table that automatically gets >looked > > up and applied to the response. This can be be a mimetypes file that can either >be a > > simple properties file (there are only a flat hierarchy to mime-type resolution) >or a > > simplified configuration file: > > > > <mime:entry extension="pdf" type="application/pdf"/> > > > > Of course It can be grouped for maintenance purposes like this: > > > > <mime:table group="application"> > > <mime:entry extension="pdf" type="pdf"/> > > </mime:table> > > <mime:table group="image"> > > <mime:entry extension="jpg" type="jpeg"/> > > <mime:entry extension="gif" type="gif"/> > > </mime:table> > > > > The table approach can be further shortened by removing the "type" attribute if it >is the > > same as the extension. Keep in mind that command line environments and other >yet-to-be > > created environments won't have the same mechanisms for mime-type resolution, and >it should > > be easy to create a general component that performs the resolution for you. This >way 90% > > of all mime-type declarations can be resolved in a maintainable and uniform manner. > > > > The only need for the mime-type would be when your URI does not have an extension, >or it is > > non-standard. > > I thought this was already implemented? isn't it? What do you thought was already implemented? Giacomo --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]