[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