[Mapbender-users] problem with sld editor and geoserver

Michael Schulz mschulz at webgis.de
Wed Nov 10 11:15:42 EST 2010


Hi Karim and Zorg,

ok, I could narrow down the problem a little and did some workarounds
to see whether it would work at all:

- after eliminating the namespace problem (use xml_parser_create_ns)
it did turn out that Geoserver unlike Mapserver uses <ogc:literal>
element e.g. for the Value of <size>. So far the Literal tag was only
handled in the filter parser... And Geoserver uses the <isdefault> tag
which wasn't treated either.

This small patch should at least get the SLD-Editor to parse the SLD
and display most of its contents, but the value e.g. of a <size> tag
is not evaluated since it sits inside a literal. Thus changing the SLD
and using the changed SLD with Geoserver will likely not work.
Therefore the new or rather unhandled tags have to be taken into
account and the object modell has to be adapted accordingly.

Cheers, Michael

Here is the patch-diff:

+++ sld_parse.php       (Arbeitskopie)
@@ -90,7 +90,7 @@
  */
 function parseSld($data)
 {
-       $xml_parser = xml_parser_create();
+       $xml_parser = xml_parser_create_ns();
        xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
        xml_parse_into_struct($xml_parser, $data, $vals, $index);
        xml_parser_free($xml_parser);
@@ -99,11 +99,12 @@
        $parent = array();
        $objects = array();
        $parentactual = 0;
-
+
        for ($i=0; $i<count($vals); $i++)
        {
                $element = $vals[$i];
-               $tag = $element["tag"];
+               $tagAr = explode(":",$element["tag"]);
+               $tag = count($tagAr)>1?$tagAr[2]:$tagAr[0];
                $tagname=strtoupper($tag);
                switch($tagname)
                {
@@ -859,6 +860,10 @@
                        //END TODO
                        //von den vorhergegangenen XML Elementen

+                       // we have some new tags... as a workaround skip them
+                       case "LITERAL":
+                       case "ISDEFAULT":
+                               break;

                        default:
                                        $temp = "";
--------- end of patch


2010/11/10 Michael Schulz <mschulz at webgis.de>:
> Hi Karim,
>
> the sld parser, was done the same way the older versions of the wms
> parsing were. The first and presumably not too complicated issue to
> overcome is namespace support. The next issue is the supported sld
> features problem. Since it was originally done for mapserver, it
> covers basically mapserver sld functionality and only geoserver sld
> where it overlaps. Although we're talking OGC standards (in my
> experience) the SLD implementation varies from WMS to WMS in some
> points, which can make parsing an sld pretty complicated (e.g. see an
> example for that on the discussion page of the SLD integration
> http://www.mapbender.org/Talk:Sld_integration)
>
> I currently checking whether the namespace issue is easy to fix and
> will come back with an answer later ...
>
> Cheers, Michael
>
> 2010/11/10 Karim Malhas <karim at malhas.de>:
>> Hello Michael,
>>
>>> ok, I could reproduce this behaviour with MB 2.7 also. This is a
>>> problem of the SLD parser (it has nothing to do with the wfs_conf
>>> assignment to a wms layer). The SLD-Editor has been initially
>>> developed and tested for Mapserver. I have done some things to be able
>>> to handle also GeoServer, but that was for GS 1.6/1.7 and especially
>>> prior to GS supporting the getStyles request.
>>>
>>> I think from GS 2 onwards the getStyles request is supported but the
>>> SLD parser is currently not able to cope with it. This would mean it
>>> will need to be overhauled for this requirement. Unfortunately I don't
>>> have enough ressources at the moment to do this.
>>
>> Do you have a specific example of where the parsing fails ? No time to
>> fix here, just curious.
>>
>> Regards,
>> Karim
>>
>> _______________________________________________
>> Mapbender_users mailing list
>> Mapbender_users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/mapbender_users
>>
>
>
>
> --
> -----------------------------------------------------------
> Michael Schulz
> mschulz at webgis.de
>
> in medias res
> Gesellschaft für Informationstechnologie mbH
>
> Schwimmbadstraße 2
> D-79100  Freiburg i. Br.
>
> Tel:  +49 (0)761 705798-102
> Tel:  +49 (0)761 705798-0
> Fax: +49 (0)761 705798-09
>
> http://www.webgis.de / http://www.zopecms.de
> --------------------------------------------------------------
> Geschäftsführer: Stefan Giese, Dr. Christof Lindenbeck
> Eingetragen im Handelsregister HRB 5930 beim Amtsgericht Freiburg
>



-- 
-----------------------------------------------------------
Michael Schulz
mschulz at webgis.de

in medias res
Gesellschaft für Informationstechnologie mbH

Schwimmbadstraße 2
D-79100  Freiburg i. Br.

Tel:  +49 (0)761 705798-102
Tel:  +49 (0)761 705798-0
Fax: +49 (0)761 705798-09

http://www.webgis.de / http://www.zopecms.de
--------------------------------------------------------------
Geschäftsführer: Stefan Giese, Dr. Christof Lindenbeck
Eingetragen im Handelsregister HRB 5930 beim Amtsgericht Freiburg


More information about the Mapbender_users mailing list