Mapowanie i transformacja danych XML z użyciem symboli wieloznacznych w programie MapForce
MapForce 2014 teraz obsługuje mapowanie symboli wieloznacznych XML, co umożliwia wbudowany mechanizm rozszerzeń dla schematów XML, zaimplementowany jako xs:any lub xs:anyAttribute.
Rozważmy ten fragment kodu XML, wyświetlany w programie XMLSpy:

Ten fragment bardzo długiego pliku przedstawia dwa punkty trasy zarejestrowane przez urządzenie GPS firmy Garmin podczas podróży. Dane XML zgodne są ze schematem XML GPX, a firma Garmin dodała rozszerzenia umożliwiające zapisywanie wartości prędkości i kierunku. Dzięki mapowaniu symboli wieloznacznych w MapForce, można przypisać te rozszerzenia tak samo, jak inne elementy zdefiniowane w schemacie XML.
Załóżmy, że chcemy odczytać plik .gpx i wyodrębnić z niego najwyższą prędkość, jaką osiągnięto podczas danej podróży
!--more--
Możemy rozpocząć projektowanie nowego mapowania w MapForce, importując plik .gpx jako element wejściowy. MapForce wyświetla listę wszystkich elementów zdefiniowanych w odpowiadającym schemacie XML, które są dostępne do mapowania. Zrzut ekranu poniżej pokazuje fragment schematu XML dotyczący punktów trasy:

Szerokość geograficzna, długość geograficzna, wysokość i czas pojawiają się bezpośrednio po elemencie "trkpt" i definiują dane zawarte w fragmencie XML. Poniższe elementy – od wariacji magnetycznej (magvar) po identyfikator stacji DGPS (dgpsid) – są wszystkie opcjonalne i nie występują w pliku danych Garmin.
Elementy dotyczące prędkości i trasy nie są w ogóle zdefiniowane w tym schemacie XML. Zamiast tego, prędkość i trasa są dozwolone dzięki użyciu elementu xs:any na dole definicji obrazu. Kliknięcie ikony obok xs:any otwiera okno dialogowe, które umożliwia import innego schematu XML definiującego rozszerzenia oraz tworzy "opakowanie", które łączy oryginalny schemat XML z rozszerzeniami. Po imporcie, nowe elementy są wyświetlane w komponencie źródłowym i można je przypisać:

Sortowanie danych w mapowaniu
Przykładowe pliki zainstalowane wraz z MapForce zawierają mapowanie o nazwie FindHighestTemperatures.mfd, które możemy wykorzystać jako przykład, aby wyodrębnić najwyższą prędkość z naszego pliku, używając funkcji sortowania:

Ta funkcja sortuje wszystkie wartości prędkości od najwyższej do najniższej, a następnie przesyła tylko pierwszą wartość jako wynik. Klucz sortowania "Z-A" automatycznie sortuje dane numeryczne od najwyższych do najniższych wartości.
Konwersja wartości w mapowaniu
Na koniec, musimy przeliczyć prędkość z metrów na sekundę na mile na godzinę, zaokrąglić wynik do dwóch miejsc po przecinku i dodać opisowy tekst:

Wynik działania funkcji łączenia ciągów znaków, o której mowa powyżej, jest zapisywany do pliku tekstowego, który służy jako wynik

Należy zauważyć, że nie musieliśmy jawnie konwertować wartości prędkości z typu danych numerycznego na ciąg znaków podczas przesyłania danych między funkcjami. MapForce automatycznie obsługuje konwersję typów danych. Poniżej znajduje się skrócona wersja kompletnego odwzorowania, z adnotacjami najważniejszych operacji:

Kliknij na obrazie lub kliknij tutaj, aby wyświetlić obraz w pełnym rozmiarze.
Na stronie internetowej firmy Altova znajduje się bezpłatne szkolenie online dotyczące programu MapForce. Można również pobrać bezpłatną wersję próbną programu MapForce i zacząć już dziś rozwijać swoje umiejętności w zakresie mapowania i transformacji danych!