[OSGeo-Discuss] XML to GML XSLT
"René A. Enguehard"
ahugenerd at gmail.com
Wed Jun 10 12:28:42 PDT 2009
Kralidis,Tom [Ontario] wrote:
>
>
>
>> -----Original Message-----
>> From: discuss-bounces at lists.osgeo.org
>> [mailto:discuss-bounces at lists.osgeo.org] On Behalf Of "René
>> A. Enguehard"
>> Sent: Wednesday, 10 June 2009 13:59
>> To: discuss at lists.osgeo.org
>> Subject: [OSGeo-Discuss] XML to GML XSLT
>>
>> Hi all,
>>
>> I've been working on getting an XML document to transform
>> into a GML document. Currently I'm running into two issues:
>>
>> 1. How do we define the XSD rules for a string node with an
>> attribute?
>> ie: <point dimension="2">12.12, 34.34</point>
>> Currently all I have found relates to simple text nodes
>> or simple attribute nodes, but not mixed ones.
>>
>>
>
> You could declare something like:
>
> <xs:element name="foo" type="fooType">
>
> <xs:complexType name="fooType">
> <xs:simpleContent>
> <xs:extension base="xs:string">
> <xs:attribute name="age"/>
> </xs:extension>
> </xs:simpleContent>
> </xs:complexType>
>
> ..which would look like this when instantiated:
>
> <foo age="123">bar</foo>
>
>
>
This worked perfectly. Thanks.
>> 2. How do we get XSD to "play nice" with the gml: prefix? I
>> want to use gml:Point and gml:pos but the XSD file doesn't validate.
>>
>> Some sample XML:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <user xmlns:gml="http://www.opengis.net/gml">
>> <name>test</name>
>> <gml:Point>
>> <gml:pos dimension="2">-97.7452090, 30.2687350</gml:pos>
>> </gml:Point>
>> </user>
>>
>> The XSD file for the code (so far):
>>
>> <?xml version="1.0" encoding="utf-8"?>
>> <xsd:schema
>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>> xmlns:gml="http://www.opengis.net/gml">
>> <xsd:import namespace="http://www.opengis.net/gml"/>
>> <xsd:element name="user" type="userType" />
>>
>> <xsd:complexType name="userType">
>> <xsd:sequence>
>> <xsd:element name="name" type="xsd:string" />
>> <xsd:element name="gml:Point" type="gml:Point" />
>> <---- ???
>> </xsd:sequence>
>> </xsd:complexType>
>>
>>
>
> What version of GML are you designing against?
>
>
I'm designing with GML 3.x in mind, but it doesn't make much difference
since all I'm really using is gml:Point and gml:pos, which have been
available for a long time.
> Have you considered doing your .xsd as a GML application schema, where you would extend as follows:
>
> <xs:element name="Meeting" substitutionGroup="gml:_Feature">
> <xs:complexType>
> <xs:complexContent>
> <xs:extension base="gml:AbstractFeatureType">
> <xs:sequence>
> <xs:element name="year" type="xs:integer"/>
> <xs:element name="venue" type="xs:string"/>
> <xs:element name="website" type="xs:anyURI"/>
> </xs:sequence>
> </xs:extension>
> </xs:complexContent>
> </xs:complexType>
> </xs:element>
>
> By extending gml:AbstractFeatureType, you inherit gml:location (among other things), from which you can express various geometry types. So the above would then instantiate as:
>
> <Meeting>
> <gml:description>This was where the first meeting was held</gml:description>
> <gml:name>St. Paul</gml:name>
> <gml:location>
> <gml:Point srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
> <gml:coord>
> <gml:pos-93.093055556 44.944444444</gml:pos>
> </gml:coord>
> </gml:Point>
> </gml:location>
> <year>2003</year>
> <venue>University of Minnesota, St. Paul Campus</venue>
> <website>http://www.mapserver.org</website>
> </Meeting>
>
>
I've tried the above but it causes two problems: substitutionGroup on
xs:element is apparently not valid (or at least that's the exception
that SAX throws at me) and gml:AbstractFeatureType doesn't resolve
anyway. Is there something wrong with how I did my xmlns:gml or my
import? I have never worked with XSDs before so I really don't know very
much about this issue.
> You might want to consult the OGC Public Forum (http://feature.opengeospatial.org/forumbb/) as well.
>
> ..Tom
>
> _______________________________________________
> Discuss mailing list
> Discuss at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/discuss
>
Thanks a lot for your help! I'll keep working at it and post any results
I get on here.
René
More information about the Discuss
mailing list