02 Dlaczego GML nie wczytuje się

AcadGEO / Blog GML / 02 Dlaczego GML nie wczytuje się

02 Dlaczego GML nie wczytuje się

Zdarza się, że nie możemy zaimportować danych z pliku GML. Powodów tego problemu może być wiele. Żeby dowiedzieć się czegoś więcej, możemy użyć najmocniejszego rozwiązania, czyli odpalić walidator i sprawdzić taki plik. Jeśli będą błędy składni XML (ojca GML) to i tak nic z tego. W tym momencie warto spojrzeć na poziom niżej, tzn. warto sprawdzić czy podstawowe wymagania odnośnie formatu zostały spełnione, a dokładnie czy struktura elementów jest poprawna. Jeśli tak, to możemy przejść do kontroli na wyższym poziomie, czyli za pomocą walidatora sprawdzić poprawność danych, relacji, itd.


W tym artykule skupię się na zależnościach między elementami, które tworzą strukturę formatu GML.

Na pewno muszą zostać spełnione warunki:

  1. Każdy element musi zostać poprawnie zamknięty.
  2. Elementy powinny zostać poprawnie zagnieżdżone.

Poprawna struktura:

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
    <featureMember>
    </featureMember>
</FeatureCollection>

Warunek 1 i 2 zostały spełnione.


Przykład z naruszeniem warunku 1, czyli niepoprawnie zamknięty.

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection<featureMember>
    </featureMember>
</FeatureCollection>

Błąd polega na tym, że element ‘<FeatureCollection’ nie został poprawnie zapisany. Powinien być zapisany następująco '<FeatureCollection>'. Nie jest to częsty błąd, jednak musi zostać omówiony, ze względu na rygor związany z otwarciem i zamknięciem ostrych nawiasów.


Kolejny przykład to naruszenie warunku 2, czyli elementy nie są poprawnie zagnieżdżone.

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
    <featureMember>
</FeatureCollection>
    </featureMember>

Przykład z niepoprawną strukturą, która na pierwszy rzut oka wygląda dobrze, jednak po analizie zamiast wartości pojawia się kolejny element, dla którego brakuje zamknięcia.

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
    <featureMember>
        <EGB_Instytucja>
            <nazwaPelna><template></nazwaPelna>
        </EGB_Instytucja>
    </featureMember>
</FeatureCollection>

Problem jest z elementem '<template>'. Brakuje dla niego zamknięcia. Składnia GML pozwala na zagnieżdżanie elementów, jednak kontekst wskazuje, że powinna być już wartość elementu nazwaPelna, a nie kolejny element.


Co z tym możemy zrobić, żeby składnia była zgodna ze standardem?


1. Możemy dodać tag zamykający element.

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
    <featureMember>
        <EGB_Instytucja>
            <nazwaPelna>
                <template></template>
            </nazwaPelna>
        </EGB_Instytucja>
    </featureMember>
</FeatureCollection>

2. Możemy usunąć nawiasy z template.

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
    <featureMember>
        <EGB_Instytucja>
            <nazwaPelna>template</nazwaPelna>
        </EGB_Instytucja>
    </featureMember>
</FeatureCollection>

3. Możemy zmienić nawiasy dla template używając odpowiedniego kodu. Dla nawiasu otwierającego '<' będzie to '&lt;', a dla nawiasu zamykającego '>' będzie to '&gt;'. W ten sposób nawiasy będą w nazwie pod postacią kodu, który zrozumiały będzie dla programu odczytującego taki plik.

<?xml version="1.0" encoding="UTF-8"?>
<FeatureCollection>
    <featureMember>
        <EGB_Instytucja>
            <nazwaPelna>&lt;template&gt;</nazwaPelna>
        </EGB_Instytucja>
    </featureMember>
</FeatureCollection>

Tak można radzić sobie z problemami związanymi z domknięciami.


Notepad++ i wtyczka XML Tools

Do kontroli poprawności formatu GML dobry jest program Notepad++. Jest to darmowy edytor tekstów, do którego można doinstalowywać wtyczki. Ciekawą opcją jest Wtyczka XML Tools. Dzięki niej w Notepad++ możemy robić wiele rzeczy związanych z XML (czyli z GML również), np. możemy sprawdzić poprawność struktury.


Jak zainstalować wtyczkę Xml Tools w Notepad++?

  • uruchom Notepad++,
  • przejdź do menu Wtyczki,
  • następnie przejdź do 'Zarządzaj wtyczkami',
  • w sekcji Dostępne wpisz w Wyszukaj 'xml tools',
  • zaznacz odpowiednią wtyczkę,
  • wciśnij przycisk Instaluj.

Notepad zainstaluje wtyczkę i zrestartuje się.


01 Instalacja wtyczki XML Tools w programie Notepad++

Instalacja wtyczki XMl Tools w Notepad++

02 Instalacja wtyczki XML Tools w programie Notepad++

Instalacja wtyczki XMl Tools w Notepad++

Jak sprawdzić GML w Notepad++

Są dwa sposoby na sprawdzenie poprawności struktury GML w Notepad++:

  1. Otwieramy plik GML, następnie przechodzimy do menu Wtyczki -> XML Tools -> Check XML syntax now.
  2. Kolejnym sposobem jest wprowadzenie jakiejkolwiek zmiany w pliku i zapisanie go (najczęściej dodaje i usuwam spację). Wtyczka XML Tools automatycznie sprawdzi poprawność takiego pliku.

Komunikat o błędzie składni GML w programie Notepad++

Błąd składni GML w programie Notepad++

Opracował: Szymon Szczerba