Question

How to read non-GML XML dynamically using XSD?

  • 24 March 2017
  • 0 replies
  • 2 views

Badge +3

I need to read simple, non-GML XML datasets dynamically (Single Merged Feature Types) and validate them against XSD files (see message bottom).

  • If I use the XML Reader, I may not use XSD (XFMap, and XRS only).
  • If I use the the GML Reader, I obtain:

<SOURCE_GML Reader> - No GML features were found in the set of XML Schemas, make sure that at least one of the schemas is a user, domain or community-specific "GML Application Schema".

QUESTION: How am I to dynamically read such non-GML XML datasets using XSD?

Here is one of my XSD as example:

<?xml version="1.0" encoding="utf-8"?>

 

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 

 <xs:element name="Gebaeude" type="Gebaeude"/>

 

 <xs:complexType name="Gebaeude">

 

 <xs:sequence>

 

 <xs:element name="Versicherungsnummer" type="xs:string" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="PolitischeGemeinde" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="PolitischeGemeindeCode" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="Ortsteil" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="OrtsteilCode" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="Gebaeudenummer" type="xs:string" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="Gebaeudebezeichnung" type="xs:string" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="Gebaeudelage" type="Gebaeudelage" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeBaujahr" type="xs:integer" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeXKoordinate" type="xs:float" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeYKoordinate" type="xs:float" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeZweckcode" type="xs:string" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="GebaeudeZweckcodeText" type="xs:string" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="GebaeudeStatusCode" type="xs:integer" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="GebaeudeStatus" type="xs:string" minOccurs="1" maxOccurs="1"/>

 

 <xs:element name="GebaeudeStatusInformation" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="DatumStatus" type="xs:date" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="Parzelleninfo" type="Parzelleninfo" minOccurs="0" maxOccurs="1"/>

 

 </xs:sequence>

 

 </xs:complexType>

 

 

 

 <xs:element name="Parzelleninfo" type="Parzelleninfo"/>

 

 <xs:complexType name="Parzelleninfo">

 

 <xs:sequence>

 

 <xs:element name="ParzellenNummer" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>

 

 </xs:sequence>

 

 </xs:complexType>

 

 

 

 <xs:element name="GebaeudeAdresse" type="GebaeudeAdresse"/>

 

 <xs:complexType name="GebaeudeAdresse">

 

 <xs:sequence>

 

 <xs:element name="GebaeudeStrasse" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeHausnummer" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeHausnummerBis" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudePLZ" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 <xs:element name="GebaeudeOrt" type="xs:string" minOccurs="0" maxOccurs="1"/>

 

 </xs:sequence>

 

 </xs:complexType>

 

 

 

 <xs:element name="NextToAgi" type="NextToAgi"/>

 

 <xs:complexType name="NextToAgi">

 

 <xs:sequence>

 

 <xs:element name="Gebaeude" type="Gebaeude" minOccurs="0" maxOccurs="unbounded"/>

 

 </xs:sequence>

 

 </xs:complexType>

 

 

 

 <xs:element name="Gebaeudelage" type="Gebaeudelage"/>

 

 <xs:complexType name="Gebaeudelage">

 

 <xs:sequence>

 

 <xs:element name="GebaeudeAdresse" type="GebaeudeAdresse" minOccurs="0" maxOccurs="unbounded"/>

 

 </xs:sequence>

 

 </xs:complexType>

 

</xs:schema>

Here is a simple example XML file for the above xsd:

<NextToAgi>

 

<Gebaeude>

 

<Versicherungsnummer>64/02/00127</Versicherungsnummer>

 

<PolitischeGemeinde>Tobel-Taegerschen</PolitischeGemeinde>

 

<PolitischeGemeindeCode>64</PolitischeGemeindeCode>

 

<Ortsteil>Taegerschen</Ortsteil>

 

<OrtsteilCode>02</OrtsteilCode>

 

<Gebaeudenummer>00127</Gebaeudenummer>

 

<Gebaeudebezeichnung>Wohnhaus Garage</Gebaeudebezeichnung>

 

<Gebaeudelage>

 

<GebaeudeAdresse>

 

<GebaeudeStrasse>Muenchwilerstrasse</GebaeudeStrasse>

 

<GebaeudeHausnummer>17</GebaeudeHausnummer>

 

<GebaeudePLZ>9554</GebaeudePLZ>

 

<GebaeudeOrt>Taegerschen</GebaeudeOrt>

 

</GebaeudeAdresse>

 

<GebaeudeAdresse>

 

<GebaeudeStrasse>Kirchstrasse</GebaeudeStrasse>

 

<GebaeudeHausnummer>5</GebaeudeHausnummer>

 

<GebaeudeHausnummerBis/>

 

<GebaeudePLZ>8274</GebaeudePLZ>

 

<GebaeudeOrt>Gottlieben</GebaeudeOrt>

 

</GebaeudeAdresse>

 

</Gebaeudelage>

 

<GebaeudeBaujahr>1975</GebaeudeBaujahr>

 

<GebaeudeXKoordinate>2.719693694000000e+006</GebaeudeXKoordinate>

 

<GebaeudeYKoordinate>1.263125223000000e+006</GebaeudeYKoordinate>

 

<GebaeudeZweckcode>29</GebaeudeZweckcode>

 

<GebaeudeZweckcodeText>Wohngebaeude mit diversen Zwecken</GebaeudeZweckcodeText>

 

<GebaeudeStatusCode>2</GebaeudeStatusCode>

 

<GebaeudeStatus>Realisiert</GebaeudeStatus>

 

<DatumStatus>2011-02-03</DatumStatus>

 

<Parzelleninfo>

 

<ParzellenNummer>4776_1_00107</ParzellenNummer>

 

<ParzellenNummer>4651_1_00068</ParzellenNummer>

 

</Parzelleninfo>

 

</Gebaeude>

 

</NextToAgi>


0 replies

Be the first to reply!

Reply