Poniższy rozdział opisuje budowę plików ISL. Jeśli zamierzasz jedynie wklejać wartości tekstowe parametrów do schematów, możesz go na razie opuścić i przejść do kolejnego rozdziału opisującego edycję schematów za pomocą programu Inkscape.
Jak już pisaliśmy dokumenty ISL są plikami graficznymi w formacie SVG, z zwartymi dodatkowymi informacjami dotyczącymi pobierania wartości parametrów z systemu SZARP. Sam format SVG oparty jest na standardzie XML. Więcej o standardzie XML można znaleźć np. w Wikipedii, dla nas bardzo istotne jest, że dokumenty XML są plikami tekstowymi, które można oglądać i edytować w zwykłym edytorze tekstowym.
Notatka: Jeśli używasz Windows, nie próbuj otwierać dokumentów XML w Notatniku - prawdopodobnie otrzymasz jedną długą, nieczytelną linię - Notatnik nie obsługuje końców linii typu uniksowego. Jeśli nie masz żadnego lepszego edytora, możesz użyć Wordpada.
Wszystkie istotne elementy występują w przykładowym dokumencie termometr.isl, który zainstalowaliśmy w poprzednim rozdziale. Otwieramy ten dokument w edytorze tekstowym i szukamy ciągów znaków isl. Po kolei w dokumencie napotkamy:
<svg xmlns:isl="http://www.praterm.com.pl/ISL/params" ... />Jest to deklaracja przestrzeni nazw ISL, która mówi że elementy i atrybuty o nazwach zaczynających się od isl: należą do przestrzeni nazw ISL. Słowo wyjaśnienia: dokument XML składa się z elementów, które mogę zawierać atrybuty opisujące te elementy, a także zawartość tekstową. Atrybuty posiadają nazwę i wartość. Elementy mogą być dowolnie zagnieżdżane. Początek i koniec elementu oznaczamy nazwą elementu ujętą w nawiasy ostre (przy czym oznaczenie końca ma dodatkowo jeszcze ukośnik), wartości atrybutów zapisujemy w cudzysłowie. Przykładów reprezentacja struktury książki w XML:
<książka> <rozdział numer="1" tytuł="Wstęp"> To jest treść rozdziału 1. </rozdział> <rozdział numer="2" tytuł="Wielki wybuch"> To jest treść rozdziału 2. </rozdział> <rozdział numer="3" tytuł="Epilog"> To jest treść rozdziału 3. </rozdział> </książka>
Mechanizm przestrzeni nazw pozwala na mieszanie w jednym dokumencie XML elementów i atrybutów różnych typów - przez przedrostek isl: oznaczamy elementy i atrybuty, które nie mają być traktowane jako obiekty graficzne SVG, ale jako dodatkowe informacja związane z ISL. Tak więc powyższa deklaracja przestrzeni nazw jest pierwszym i niezbędnym elementem do działania całego systemu.
<rect style="..." ... height="305.396825" isl:uri="http://localhost:8081/Siec/Sterownik/temperatura_zewnetrzna@value" isl:target="height" isl:shift="145" isl:scale="2.8" ... />Tu mamy do czynienia z dość skomplikowanym przykładem. Element rect opisuje prostokąt, atrybut height odpowiada jego aktualnej wysokości. Na rysunku prostokąt ten reprezentuje słupek rtęci termometru. Chcemy, aby słupek ten zwiększał się wraz ze wzrostem temperatury. Atrybut isl:uri zawiera link do parametru, którego wartość chcemy reprezentować. Końcówka @value oznacza, że interesuje nas wartość liczbowa parametru (parametr ma też inne właściwości, takie jak np. jednostka czy nazwa). Atrybut isl:target informuje nas, że wartość parametru będzie wpływała na atrybut height elementu rect, czyli na wysokość prostokąta. W ten sposób uzależniamy wysokość prostokąta (słupka rtęci) od wartości parametru.
Nie jest to jednak wystarczające - wysokość prostokąta powinna przyjmować wymiary wynikające z jego położenia na rysunku, które raczej nie będą bezpośrednio odpowiadać mierzonej temperaturze - np. dla temperatury 0 stopni słupek powinien mieć około połowy swojej maksymalnej wielkości. Do przeskalowania temperatury na odpowiednią wysokość służą atrybuty liczbowe isl:scale i isl:shift. Wartość atrybutu height wyliczana jest ostatecznie według wzoru:
height = [wartość parametru] * isl:scale + isl:shiftWspółczynniki skalowania i przesunięcia dobrać można eksperymentalnie - po narysowaniu słupka rtęci w programie graficznym w pozycji 0 należy sprawdzić aktualną wysokość słupka i przyjąć ją jako isl:shift, następnie narysować słupek w pozycji +50 stopni i zobaczyć o ile zwiększyła się wysokość prostokąta - wartość ta podzielona przez 50 da prawidłową wartość isl:scale.
Podobnej transformacji mogą podlegać inne atrybuty. Dostępne atrybuty i ich znaczenie opisane są w specyfikacji SVG, dostępnej na stronach World Wide Web Consortium
<tspan ... isl:uri="http://localhost:8081/Siec/Sterownik/temperatura_zewnetrzna@v_u" >?</tspan>Ten przykład jest dużo prostszy - mamy do czynienia z elementem tspan, reprezentującym fragment tekstu. Zawartość tego fragmentu ma być zastąpiona wartością parametru podanego w atrybucie isl:uri. Zwróćmy uwagę, że używamy tu atrybutu parametru o nazwie v_u - jest to skrót od value i unit - czyli otrzymujemy wartość parametru wraz z towarzyszącą mu nazwą jednostki. Jest to najprostsza konstrukcja, pozwalająca na wklejenie do schematu napisu z aktualną wartością parametru.
Poprzedni | Spis treści | Następny |
Uruchomienie przykładowego schematu | Początek rozdziału | Edycja schematów w programie Inkscape |