[Date Prev][Date Next] [Chronological] [Thread] [Top]

[mapserver-users] SUM: Template URL



I flailed around with template URLs this week and finally got it straight in my mind (and working in my application), so I thought I'd document it for the list archive. If I was smart enough to setup DocBook, I'd contribute this to the documentation project, but that will have to wait for another day.

Thanks to Ed McNierney and Stephen Lime for helping me out so much.

A TEMPLATE can be either a File or a URL. MapServer examines a template definition, decides  whether you have specified a File or a URL, and responds accordingly. For example;
     “Display_Results.html”
looks like a file and so will be processed as a file, but
    “http://www.some_domain.com/Index.html”
looks
like a URL and so will be processed as a URL, which is quite a bit different than how a File is processed.

If MapServer decides that it has a file template, it goes through the file and replaces stuff within [] with appropriate data. If the template is a URL, however, MapServer redirects to that URL. The URL might be on the same server, or another server. Although MapServer can not process the file pointed to by a URL, it does process the URL string itself. For example:
   
http://www.tetonwyo.org/clerk/query/default.asp?pidn=[PIDN]
MapServer will replace [PIDN] with an appropriate value before redirecting to the new location. Note also that you can go to an Active Server Page, or other not-purely HTML type location. (To me, this is really sweet, because it allows you to easily mix CGI MapServer with other web technologies.)

Okay, so you read this far and I still haven't told you anything that you didn't already know, but here’s what had me flailing. A template can only reference a URL in a SINGLE query mode. So if you are in a MULTIPLE query mode, e.g. nquery, MapServer only attempts to processes the template as a file. Not a good thing if you specified a URL, but still entirely logical. A URL is intrinsically a single thing, and you can't simultaneously redirect a browser to multiple locations. In other words, MapServer assumes that if your query could potentially return more than one result, that you would have specified a File for the template, not a URL.

So that’s the most interesting thing I learned this week.

Happy mapping,
Rich

Richard W. Greenwood, PLS
Greenwood Mapping, Inc.
Rich@GreenwoodMap.com
(307) 733-0203
http://www.GreenwoodMap.com