Indeed, it appears it should be straightforward to resolve this from the OL end. I have just summoned the help of the "OpenLayers-User mailing list" gurus about this. Refer to the thread over there for further information.
Thanks,
Eric

On 09/07/2012 11:57 AM, Stephen Woodbridge wrote:
Eric,

Thanks for reporting this because I have to dive into doing the same shortly.

I would suggest that OpenLayers is where the problem is because it is generating the XML that is going to TinyOWS. I have not looked into this specific issue but in general OL is pretty flexible and you might only need to set the appropriate namespace or GML level in OL to fix this problem. I would check with that list first.

Thanks,
  -Steve

On 9/7/2012 1:08 AM, Eric wrote:

Hello list,
I am trying to save features to a PostGIS DB using tinyows. Saving
geometries alone works fine, updating records works well, but as soon as
I combine attributes and geometries, I get an error from tinyows
indicating that the XML is not in the right format. I have noticed a
difference between the 3 scenarios. For instance, when I save a geometry
without attributes, I get the following: (this works fine)

<wfs:Insert>
     <feature:parcels xmlns:feature="http://www.tinyows.org/";>
     <feature:geom>
<gml:MultiSurface xmlns:gml="http://www.opengis.net/gml"; srsName="EPSG:3857">
         <gml:surfaceMember>
             <gml:Polygon>
                 <gml:exterior>
                     <gml:LinearRing>
<gml:posList>-10752.....</gml:posList>
                     </gml:LinearRing>
                 </gml:exterior>
             </gml:Polygon>
         </gml:surfaceMember>
     </gml:MultiSurface>
</feature:geom>
</feature:washco_parcels>
</wfs:Insert>



And, when I add attributes, I get the following: (generates an error to
teh effect that "<feature:address1>test" is unexpected)

<wfs:Insert>
     <feature:parcels xmlns:feature="http://www.tinyows.org/";>
     <feature:geom>
<gml:MultiSurface xmlns:gml="http://www.opengis.net/gml"; srsName="EPSG:3857">
         <gml:surfaceMember>
             <gml:Polygon>
                 <gml:exterior>
                     <gml:LinearRing>
<gml:posList>-10752.....</gml:posList>
                     </gml:LinearRing>
                 </gml:exterior>
             </gml:Polygon>
         </gml:surfaceMember>
     </gml:MultiSurface>
</feature:geom>
*<feature:address1>test</feature:address1>*
</feature:washco_parcels>
</wfs:Insert>


Finally, if I do a simple UPDATE, I get the following: (works fine)

<wfs:Update xmlns:demo="http://www.tinyows.org/"; typeName="demo:parcels">
<wfs:Property>
     <wfs:Name>geom</wfs:Name>
     <wfs:Value>
<gml:MultiSurface xmlns:gml="http://www.opengis.net/gml"; srsName="EPSG:3857">
         <gml:surfaceMember>
             <gml:Polygon>
                 <gml:exterior>
                     <gml:LinearRing>
<gml:posList>-10737.....</gml:posList>
                     </gml:LinearRing>
                 </gml:exterior>
             </gml:Polygon>
         </gml:surfaceMember>
     </gml:MultiSurface>
</wfs:Value>
</wfs:Property>
*<wfs:Property>
     <wfs:Name>objectid</wfs:Name>
     <wfs:Value>18785</wfs:Value>
</wfs:Property>*

.......

The first difference is in the namespace used (feature vs wfs). Any
reason why it is doing so? Another difference is in the way attributes
are included:

<wfs:Property>
     <wfs:Name>objectid</wfs:Name>
     <wfs:Value>18785</wfs:Value>
</wfs:Property>

vs

<feature:address1>test</feature:address1>

The third example (using wfs:Property) seems to be the correct way to
specify information in a WFS file. The first example works fine despite
not using that format, because I suspect the GML schema is more flexible
and since it does not have attributes that are not geometries, it is
considered valid.

So I tried turning off schema checking in the tinyows.xml file and the
problem payload go through without issues. So this seem to indicate that
some of the XSD used are strict and don't allow attributes to be defined
like <feature:address1>test</feature:address1>.

So my question is how do I fix this best?

 1. remove schema enforcing at the tinyows level. Couldn't this lead to
    potential security issues with the server?
 2. Change the XSD files to allow both ways to define attributes.
    Wouldn't this go against the WFS standard?
 3. Change the way OL generates the payload. Not sure where it does it
    or how to force it to use a different one.


BTW, I am using OL 2.12 and Tinyows 1.0.0
thanks!
Eric

_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to