Jazyk XML v geoinformatice
Dr. Ing. Jiří Horák
Ing. Jan Růžička
Institut ekonomiky a systémů řízení
VŠB – Technická univerzita Ostrava
tř. 17. listopadu
708 33 Ostrava – Poruba
E – mail: jiri.horak@vsb.cz, jencekruzicka@hotmail.com
Abstract
The paper presents new tool, which strongly influence the field of computer sciences and geoinformatics. The basic features of XML language and basic methods of document preparation are described. Last but not least the possibilities of XML application for geoinformatics are reviewed, mainly in the context of metadata and metainformation system.
Abstrakt
Tento příspěvek si klade za cíl seznámit čtenáře s novým nástrojem, který významnou měrou ovlivní oblast informatiky včetně geoinformatiky. V příspěvku jsou popsány základní vlastnosti jazyka XML (eXtensible Markup Language), základní metody tvorby dokumentů s využitím tohoto jazyka. V neposlední řadě jsou zde nastíněny možnosti využití jazyka XML pro potřeby geoinformatiky, především ve vztahu k metadatům a metainformačním systémům.
Prolog
Jak často jste na Webu hledali nějakou informaci a protože jste nevěděli, kde přesně ji hledat, použili jste oblíbeného vyhledávače? Zadali jste řetězec, chvíli jste počkali a získali seznam 8000 stránek, které tento řetězec obsahují. Většinou vám inteligence vyhledávačů (seřazení, hledání podle kategorie, apod.) příliš nepomůže a nezbývá vám, než stránku po stránce otevírat a číst, čekat, číst, čekat,..
Jak by se vám líbilo mít možnost zadat, že to co hledáte má svůj význam - jde např. o název programu - a že nehledáte libovolný text, kde se o programu mluví, ale požadujete jeho popis.
Řešení pro tuto situaci (ale i pro mnoho jiných aplikací) nabízí jazyk XML (eXtensible Markup Language). Tento příspěvek nemůže poskytnout popis jazyka XML, pokusí se pouze vysvětlit základní principy XML a uvést možnosti použití.
Co je XML
Jazyk XML patří mezi tzv. značkovací jazyky, kam patří i HTML, se kterým bývá často srovnáván. XML je poměrně mladý; doporučení k tomuto jazyku vydalo konsorcium W3C v únoru 1998. XML vznikl právě díky snahám dát překotně publikovaným dokumentům na WWW nějaký pořádek a nabídnout nástroj, který by se nesoustřeďoval jen na formátování informace jako HTML, ale informace dobře strukturoval a strukturu popisoval vhodnými metadaty.
XML vychází z jazyka SGML. Tento jazyk, prazáklad značkovacích jazyků, vznikal již koncem 60tých let ve firmě IBM, která hledala možnost ukládání velkého množství právních dokumentů v SW a HW nezávislém formátu. Jazyk SGML se dočkal standardizace v roce 1986 (ISO 8879) v rámci projektu ODA (Open Document Architecture) jako univerzální nástroj (de facto metajazyk) pro definici zápisu různých elektronických dokumentů (nejen textu !) nezávislé na HW a SW platformě a maximálně flexibilní.
SGML používá vláda USA (zvláště ministerstvo obrany) a velké společnosti jako IBM či Boeing.
Jednou z nejúspěšnějších aplikací jazyka SGML je elektronická dokumentace elektronických součástek, na jejímž standardu (standardu pro výměnu informací) se dohodli firmy Hitachi, Intel, National Semiconductors, Philips Semiconductors a Texas Instruments, kteří založili skupinu ECIX. Standard zahrnuje 2 části - PCIS (Pinnacles Component Information Standard) a CIDS (Component Information Dictionary Standard). PCIS poskytuje informace o součástkách ve formátu, který lze snadno číst nebo ho importovat do CAD systémů. Najde se zde popis funkcí součástek, zapojení, montáže, instrukčních sad i balení, stejně jako paměťové mapy. Popis se odkazuje na slovník CIDS, kde jsou definovány termíny a vlastní součástky. Inženýři tak mohou podstatně jednodušším způsobem zařazovat součástky různých firem do svých návrhů, hledat optimální, rychle zjišťovat jejich parametry.[1][http://www.cfi.org/ecix/]
Z jiných projektů lze jmenovat sadu specifikací pro údržbu letadel a výměny informací (Sdružení amerických leteckých dopravců), standard pro výměnu informací pro vozový park (Master Car Builder’s Association) atd.
Aplikace SGML se příliš nerozšířily, protože jazyk je značně komplikovaný a aplikace jsou drahé. Stěží se tak může prosadit v prostředí Internetu. Na jeho základě však vznikl populární HTML a perspektivní XML.
Tvorba XML dokumentů
XML dokumenty se skládají z textu (obsahu) a značek. Každý dokument má pevnou strukturu, která je definovaná v deklaraci typu dokumentu. V ní je uvedeno, jaké prvky (elements) bude následující dokument obsahovat, kolikrát se mohou vyskytovat, jaké jiné prvky obsahují, jaké atributy mohou nebo musí mít a co mají obsahovat. Definuje se rovněž kořenový prvek, kterým celá struktura začíná.
V následující části je vlastní obsah dokumentu. Jakýkoliv text musí být uzavřen mezi značkami. K základním používaným značkám patří prvky, entity, komentáře a zpracovatelské instrukce. Prvek určuje význam textu, který obklopuje. Začíná počáteční značkou (start-tag) a uzavírá se koncovou značkou.
<řeka>Morava</řeka>
Typ prvku je řeka a jeho obsahem je Morava.
Prvek může mít určité atributy, jejichž hodnota je zadávána v rámci počáteční značky.
<řeka číslo = ”1345”>Morava</řeka>
V tomto případě je zadán atribut číslo (možná identifikátor řeky).
Pro úplnost dodejme, že existují i tzv. prázdné prvky, které nemají počáteční a koncovou značku; nelze však do nich nic vložit.
<prvek/>
Entity dovolují vkládat do textu určité předem definované pasáže. Lze je přirovnat ke konstantám, které jsou deklarovány systémem, autorem na začátku dokumentu (interní), nebo obsahem externího souboru (externí) nebo jsou definovány v deklaraci typu dokumentu (proměnná část struktury).
1. příklad:
< dosadí do textu < (interní systémová entita, znak < totiž nelze přímo zapsat do textu);
2. příklad:
Do deklarace typu dokumentu se zapíše interní, autorem definovaná entita.
<!ENTITY mojeměsto ”Příbor” >
V XML dokumentu se pak může použít tato entita.
&mojeměsto; má krásné náměstí.
Výsledek po interpretaci XML bude:
Příbor má krásné náměstí.
Deklarace typu dokumentu
Deklarace typu dokumentu musí být uvedena v úvodu každého dokumentu. Interní deklarace je celá popsána v dokumentu. Externí deklarace je provedena mimo vlastní dokument, ze kterého postačí provést odkaz na tuto definici. Externí deklarace jsou ukládány jako tzv. DTD (Document Type Definition) a umožňují standardizovat obsah dokumentů. Existuje již celá řada uznávaných standardních DTD pro jednotlivé typy dokumentů, můžete ale vytvářet své vlastní definice.
Deklarace provádí definice jednotlivých používaných prvků, jejich atributů,....
Příklad definice:
<!ELEMENT okres (název, obec+, přednosta?>
Prvek název se musí vyskytnout v dokumentu pro každý okres právě 1x, za ním se musí vyskytnout 1 nebo více prvků obec (některé městské okresy jsou tvořeny právě jednou obcí) a nakonec může, ale nemusí být uveden přednosta.
<!ELEMENT obec (jméno, popis*, starosta?>
Prvek obec je definován podobně - jméno se musí vyskytnout 1x, popis několikrát nebo také vůbec ne a nakonec starosta může, ale nemusí být uveden.
<!ELEMENT popis (#PCDATA|historie>
Prvek popis obsahuje buď text (#PCDATA) nebo prvek historie nebo obojí (| znamená OR).
U definice prvků je vhodné provést i definici atributů, které tyto prvky obsahují:
Např. <!ATTLIST okres
Kodok ID #REQUIRED
Kraj CDATA #IMPLIED
Stav(strukturálně postižený|nepostižený) “nepostižený”
Nazok ENTITY#IMPLIED
Kodob IDREFS#IMPLIED >
Okres má tedy 5 atributů. KODOK je identifikátor a jeho zadání je vždy vyžadováno. Kraj je znakovou sadou (CDATA) a nemusí být vůbec zadán (#IMPLIED). Stav může nabývat 2 hodnot, výchozí hodnota je “nepostižený”. ENTITY#IMPLIED znamená, že není vyžadován, ale je-li zadán, musí odpovídat jménu jiné entity. IDREFS#IMPLIED není vyžadován, ale je-li zadán, musí hodnota odpovídat hodnotám atributů.
V deklaraci typu dokumentu se může objevit i deklarace parametrických entit, které dovolují použít proměnnou specifikaci při definici prvků.
<!ENTITY % jádro
“jméno CDATA#REQUIRED
jazyk CDATA#IMPLIED” >
Řetězec uvedený v uvozovkách je nyní obsahem proměnné %jádro a lze ho použít při deklaracích.
<!ATTLIST řeka %jádro
délka CDATA#IMPLIED >
%jádro doplnilo do definice atributy jméno a jazyk.
Výhody XML
Výhody použití jazyka XML lze ukázat na několika bodech:
Využití XML
Využití XML je především tam, kde potřebujeme univerzální prostředek pro popis informace metadaty, její přenos a sdílení mezi více uživateli, mezi více SW a HW platformami. Je vhodný jak pro interpretaci člověkem (je čitelný), tak i pro automatické zpracování.
Dnešní příklady využití jsou v oblasti obchodování - především EDI (elektronická výměna dokumentů), jejichž standardy a nástroje zatím byly příliš drahé, složité a tudíž nevhodné pro malé a střední firmy. Dále je to příprava aplikací řízených daty a správa dokumentů.
K zajímavým projektům jistě patří v USA připravovaný pilotní projekt, který umožní odeslat daňové přiznání na finanční úřad ve formátu XML. Uživatel vyplní standardní kolonky a na druhé straně bude dokument snadno počítačově zpracován.
Přehled oblastí nasazení si můžeme udělat ze seznamu hlavních DTD [podle 2]:
Hypertext markup Language (HTML)
Jsou připraveny DTD pro jednotlivé verze HTML. Nově však bude DTD pro HTML rozloženo na několik relativně samostatných DTD pro jednotlivé funkce HTML - např. formátování, formuláře, tabulky.
Channel Definition Format (CDF)
Používá se pro definici kanálů.
Mathematical Markup Language (MathML)
MathML je jazyk určený pro zápis matematických výrazů. Vedle grafické věrnosti je důležité i zachycení významu tohoto výrazu. To umožňuje i výměnu dat mezi matematickými programy pomocí tohoto formátu.
Resource Description Framework (RDF)
Definuje standardní rámec, který lze využít pro přidávání metainformací k datovým zdrojům. Praktické využití je např. pro aplikace, které hodnotí obsah stránek.
Open Software Description Format (OSD)
Slouží pro popis programových aplikací a jejich částí. Měl by usnadnit automatickou distribuci a instalaci programového vybavení.
Chemical Markup Language
Je určen pro zápis vzorců chemických sloučenin. Podobně jako MathML dovoluje kvalitní grafický záznam vzorců, ale i záznam jejich významu.
Synchronized Multimedia Integration Language (SMIL)
Slouží pro tvorbu multimediálních aplikací.
Precision Graphics Markup Language (PGML)
PGML je návrhem jazyka pro definici dvourozměrné grafiky, postavené na formátech Postscriptu a PDF.
UML eXchange Format (UXF)
UXF slouží k výměně dat v jazyce UML (Unified Modelling Languge), který se uplatňuje při analýze a návrhu informačních systémů.
DocBook
Je vhodný pro psaní technické dokumentace.
Text Encoding Initiative (TEI)
TEI zahrnuje skupinu standardizovaných DTD vhodných pro uchování a výměnu publikací, především knih.
Scalable Vector Graphics (SVG)
Vzhledem k jeho významu pro geoinformatiku bude popsán podrobněji.
Stručná charakteristika SVG
SVG je jazykem pro popis dvourozměrné vektorové a smíšené rastr/vektor grafiky. Využívá 3 typy grafických objektů: vektorové prvky, rastrové obrázky a text. Grafické objekty mohou mít svůj styl, mohou být transformovány, skládány a seskupovány. Pomocí DOM pro SVG (DOM znamená Document Object Model), který vychází z obecného XML DOM, je možné realizovat např. animace.
SVG zatím není doporučením konsorcia W3C, jde zatím pouze o pracovní návrh.
SVG definuje některé základní tvary pro tvorbu vektorové grafiky - obdélník, kruh, elipsa, linie, polylinie, polygon. Je možné definovat uživatelský souřadný systém, jednotky měření, transformaci, styl kresby, použití symbolů, barev, vzorů, maskování, skládání obrazu, filtrace. Lze ale rovněž definovat odkazy, zoomování, animace, využít skriptování (např. definice událostí typu “onclick” nebo “onmouseover”.)
Na druhou stranu určitou slabinou zůstává rychlost přenosu detailní grafiky ve formátu SVG. ASCII formát z tohoto pohledu není nejvhodnější. V rámci projektu DISGIS byl srovnáván XML s binárními formáty a bylo konstatováno, že je průměrně 1.66x větší. Projekt DISGIS zkoumal možnost využití XML pro projekt MEGRIN, GEIXS a další.
Příklad definice polylinie [4]:
<?xml version=”1.0” standalone=”no”?>
<!DOCTYPE svg PUBLIC “-//W3C//DTD SVG December 1999//EN”
“http://www.w3c.org/Graphics/SVG/SVG-19991203.dtd”>
<svg width=”12cm” height=”4cm” viewBox=”0 0 1200 400”>
<desc>Example polyline01 - postupně rostoucí sloupce</desc>
<polyline style=”fill:none; stroke:blue; stroke-width:10cm”
points=”50,375
150,375 150,325 250,325 250,375
350,375 350,250 450,250 450,375
550,375 550,175 650,175 650,375
750,375 750,100 850,100 850,375
950,375 950,25 1050,25 1050,375
1150,375” />
</svg>
Obr.1 Příklad polylinie
Využití XML pro metainformační systém
Nezanedbatelnou součástí, každého dobře navrženého informačního systému (i geografického informačního systému) je správa metadat o datech spravovaných v tomto systému. Metadata mohou být spravována jako specifická část informačního systému nebo mohou stát mimo celý systém v tzv. metainformačním systému. Všeobecný zájem různých organizací o problematiku metadat v geoinformatice způsobil vznik několika zajímavých aktivit. V současné době na území České republiky probíhá několik aktivit, které směřují k vytvoření několika nezávislých metainformačních systémů. Převážná část těchto systémů je budována jako resortní metainformační systémy ministerstev vlády České republiky. Jedním metainformačním systémem, který by rád působil jako otevřený metainformační systém, zpřístupňující metadata širokému poli zájemců, je metainformační systém CAGI. Pro práci mnoha organizací je samozřejmě nutné mít přehled nejen o vlastních datech popsaných v interním metainformačním systému, ale i o datech jiných organizací. Většina metainformačních systémů nebude mít veřejný charakter a organizace nebudou mít možnost jednoduchým způsobem vyhledávat v metainformačních systémech jiných organizací. Některé organizace budou mít zájem poskytovat informace z jejich metainformačních systémů jiným organizacím formou nepřímého přístupu do systému. Bude vhodné navrhnout SW a HW nezávislý prostředek pro výměnu informací (dat) z metainformačních systémů. Velice zajímavým a vhodným nástrojem se v tomto případě jeví jazyk XML. Svým specifickým způsobem popisu struktury otevřeného textového dokumentu jazyk XML nabízí postupy pro tvorbu výměnného formátu pro metadata, který by byl snadno zpracovatelný počítačem stejně tak jako srozumitelný člověku.
V současné době již existuje několik zajímavých pokusů o vytvoření takového výměnného prostředku s využitím jazyka XML. Nejznámější z těchto aktivit, jejíž činnost vyústila až ve vytvoření standardního výměnného formátu metadat nazvaného XML Metadata Interchange Format (XMI). O vytvoření tohoto standardu se zasloužila skupina Object Management Group (OMG). Hlavním cílem XMI je umožnit snadnou výměnu metadat mezi modelovacími nástroji (založenými na Unified Modeling Language (UML)) a mezi nástroji a metadatovými sklady (založených na MOF - Meta Object Facility a OMG standardu pro modelování a metadatové sklady) v distribuovaných heterogenních prostředích.
XMI vychází z kombinace tří standardů: XML, UML, MOF. Integrace těchto tří standardů by měla umožnit sdílení a výměnu objektových modelů a jiných metadat prostřednictvím Internetu. Tento standard se jeví jako potenciálně zajímavý prostředek pro výměnu metadat mezi metainformačními systémy budovanými v České republice s návazností na možnou výměnu metadat i s metainformačními systémy budovanými za hranicemi naší země.
Za zmínku stojí také informace o výměném formátu pro metadata používaném pro potřeby nizozemského Nationaal Clearinghouse Geo-Informatie (NCGI). Tento výměnný formát byl vytvořen s využitím jazyka XML. NCGI budován na základě prestandardů CEN stejně jako některé metainformační systémy budované v České republice.
Závěr
XML představuje velmi slibný základ řady aplikací. Za nejdůležitější lze označit jeho využití pro výměnu dat a tvorbu metadat (definice struktury dokumentu, atributů, standard pro dvourozměrnou grafiku SVG). Přínosem je i nové pojetí odkazů a možnost využití skriptování (interaktivita objektů).
Literatura
[1] Laurent S.S.: Tvorba internetových aplikací v XML. Computerpress 1999, 222 stran, ISBN 80-7226-170-3
[2] www.kosek.cz
[3] www.ibm.com/xml