Justin Deoliveira ha scritto:
Hi Andrea,
Finally got a chance to look your proposal over, i must say this looks
pretty darn cool. I had an idea about how to extend the protocol.Instead of modifying any of the existing wfs schema files, could we
define all of the needed functionality to support versioning in terms of
new operations? If so, then we could create a new schema which just
imports the wfs schemas proper, and extends any types that it needs to.For instance, consider the type for a GetFeature reqquest from the wfs
schema:WFS-basic.xsd:
<xsd:complexType name="GetFeatureType">
<xsd:sequence>
<xsd:element ref="wfs:Query" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="version"
type="xsd:string" use="required" fixed="1.0.0"/>
<xsd:attribute name="service"
type="xsd:string" use="required" fixed="WFS"/>
<xsd:attribute name="handle"
type="xsd:string" use="optional"/>
<xsd:attribute name="outputFormat"
type="xsd:string" use="optional" default="GML2">
</xsd:attribute>
<xsd:attribute name="maxFeatures" type="xsd:positiveInteger"
use="optional">
</xsd:attribute>
</xsd:complexType>In our schema we create a new type of request, GetFeatureAtRevision (for
lack of a better name) which extends the normal operation type just
adding an additionalWFS-version.xsd:
<xsd:complexType name="GetFeatureAtRevisionType">
<extenstion base="wfs:GetFeatureType">
<xsd:attribute name="revision" type="xsd:string"/>
</extension>
</xsd:complexType>An idea, it would make extending the schema nice and clean. However it
hinges on being able to create all the needed operations by xml schema
extension and restriction. Not sure if that is possible.
Yeah, I was thinking about it myself too... seems like a good plan indeed, and for operations where I cannot cleanly extend the WFS XSD,
I'll just have to copy and hack.
Restriction allows me to better constraint existing element/attributes,
but does not allow me to wipe out existing attributes, right?
I'm also considering this from the point of view of someone that already
implemented WFS-T, and wants to support versioning as well... would the
copy and paste approach from a GetFeature request work for GetDiff?
I don't want to support everything GetFeature has in that call, for example. The same goes for GetLog.
This seems the only clean way, yet it seems more work for implementors... having the protocol dead easy to implement is key, since
we don't have a OpenGIS spec for it (and having "revision" around, we
cannot even try to turn this into a spec, because global revision numbers do expose an implementation detail I guess).
Cheers
Andrea