[mapserver-commits] r8243 - in trunk/docs: community ogc

svn at osgeo.org svn at osgeo.org
Tue Dec 16 12:13:14 EST 2008


Author: hobu
Date: 2008-12-16 12:13:14 -0500 (Tue, 16 Dec 2008)
New Revision: 8243

Modified:
   trunk/docs/community/lists.txt
   trunk/docs/ogc/mapscript.txt
Log:
add Tom's OGC example code

Modified: trunk/docs/community/lists.txt
===================================================================
--- trunk/docs/community/lists.txt	2008-12-16 16:05:35 UTC (rev 8242)
+++ trunk/docs/community/lists.txt	2008-12-16 17:13:14 UTC (rev 8243)
@@ -90,3 +90,13 @@
         Please send a note to Howard Butler if you know of more MapServer 
         mailing lists in additional languages
 
+Downloading list archives
+-----------------------------------------------------------------------------
+
+The MapServer-Users and MapServer-Dev mailing lists have been migrated to the
+new OSGeo list server. One of the benefits of this migration is that you no
+longer need an account to download or read the archives. To access the
+MapServer archives, simply point your browser to
+http://lists.osgeo.org/pipermail/mapserver-users/ and download the gzipped
+file or click on the link. For MapServer-Dev archives, go to
+http://lists.osgeo.org/pipermail/mapserver-dev/.

Modified: trunk/docs/ogc/mapscript.txt
===================================================================
--- trunk/docs/ogc/mapscript.txt	2008-12-16 16:05:35 UTC (rev 8242)
+++ trunk/docs/ogc/mapscript.txt	2008-12-16 17:13:14 UTC (rev 8243)
@@ -136,6 +136,127 @@
 so you cannot call msIO_getStdoutBufferBytes(), and so cannot manipulate
 binary results.  
 
+More Perl example code
+----------------------
+
+.. code-block:: perl
+
+    #!/usr/bin/perl
+    ############################################################################
+    #
+    # Name:     wxs.pl
+    # Project:  MapServer
+    # Purpose:  MapScript WxS example
+    #           
+    # Author:   Tom Kralidis
+    #
+    ##############################################################################
+    #
+    # Copyright (c) 2007, Tom Kralidis
+    #
+    # Permission is hereby granted, free of charge, to any person obtaining a
+    # copy of this software and associated documentation files (the "Software"),
+    # to deal in the Software without restriction, including without limitation
+    # the rights to use, copy, modify, merge, publish, distribute, sublicense,
+    # and/or sell copies of the Software, and to permit persons to whom the
+    # Software is furnished to do so, subject to the following conditions:
+    #
+    # The above copyright notice and this permission notice shall be included in
+    # all copies of this Software or works derived from this Software.
+    #
+    # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+    # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+    # DEALINGS IN THE SOFTWARE.
+    ############################################################################/
+
+    use CGI::Carp qw(fatalsToBrowser);
+    use mapscript;
+    use strict;
+    use warnings;
+    use XML::LibXSLT;
+    use XML::LibXML;
+
+    my $dispatch;
+
+    # uber-trivial XSLT document, as a file
+    my $xsltfile = "/tmp/foo.xslt";
+
+    # here's the actual document inline for
+    # testing save and alter $xsltFile above
+
+    =comment
+    <?xml version="1.0" encoding="UTF-8"?>
+    <xsl:stylesheet version="1.0"
+     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+     xmlns:wfs="http://www.opengis.net/wfs">
+     <xsl:output method="xml" indent="yes"/>
+     <xsl:template match="/">
+      <WFSLayers>
+       <xsl:for-each select="//wfs:FeatureType">
+        <wfs_layer>
+         <name><xsl:value-of select="wfs:Name"/></name>
+         <title><xsl:value-of select="wfs:Title"/></title>
+        </wfs_layer>
+       </xsl:for-each>
+      </WFSLayers>
+     </xsl:template>
+    </xsl:stylesheet>
+    =cut
+
+    my $mapfile  = "/tmp/config.map";
+    # init OWSRequest object
+    my $req = new mapscript::OWSRequest();
+
+    # pick up CGI paramters passed
+    $req->loadParams();
+
+    # init mapfile
+    my $map = new mapscript::mapObj($mapfile);
+
+    # if this is a WFS GetCapabilities request, then intercept
+    # what is normally returned, process with an XSLT document
+    # and then return that to the client
+    if ($req->getValueByName('REQUEST') eq "GetCapabilities" && $req->getValueByName('SERVICE') eq "WFS") {
+
+      # push STDOUT to a buffer and run the incoming request
+      my $io = mapscript::msIO_installStdoutToBuffer();
+      $dispatch = $map->OWSDispatch($req);
+
+      # at this point, the client's request is sent
+
+      # pull out the HTTP headers
+      my $ct = mapscript::msIO_stripStdoutBufferContentType();
+
+      # and then pick up the actual content of the response
+      my $content = mapscript::msIO_getStdoutBufferString();
+
+      my $xml  = XML::LibXML->new();
+      my $xslt = XML::LibXSLT->new();
+
+      # load XML content
+      my $source = $xml->parse_string($content);
+
+      # load XSLT document
+      my $style_doc = $xml->parse_file($xsltfile);
+      my $stylesheet = $xslt->parse_stylesheet($style_doc);
+
+      # invoke the XSLT transformation
+      my $results = $stylesheet->transform($source);
+      # print out the result (header + content)
+      print "Content-type: $ct\n\n";
+      print $stylesheet->output_string($results);
+    }
+
+    # else process as normal
+    else {
+      $dispatch = $map->OWSDispatch($req);
+    }
+
+
 =============================================================================
  Java Example
 =============================================================================



More information about the mapserver-commits mailing list