vlastnosti, syntaxe, typy uzlů, struktura @ DTD x XSD, transformace, XPath
extensible markup language
* je to obecný značkovací jazyk
* pro výměnu dat mezi dokumenty a pro pulikování dokumentů
* nezabývá se sám o sobě vzhledem dokumentu nebo jeho částí
* snadná transformace do jiného typu (formátu) dokumentu či do jiné struktury XML
* nemá žádné předdefinované značky (tagy, jednotlivé elementy)
====== 10x o XHTML ======
* **slouží ke strukturalizaci dat**
* pozor, není to programovací jazyk
* soubor pravidel, která mi uspořádají data ve strukturách
* nezávislé na platformě
* **má vysoký informační obsah**
* tagy vyznačují význam jednotlivých částí textu
* jenom data ohraničuje (těmi tagy), ale nečte je -> o to se stará až aplikace, která ta data čte
* **je text, co není určen ke čtení**
* ale pokud ho číst chci, tak můžu!
* když zapomenu ukončit tag, tak si to ta aplikace nemůže domyslet, ale musí okamžitě nahlásit chybu
* **nešetří místem**
* XML je textový formát
* je vždy větší, než ta samá data v binárním formátu
* **je to celá skupina technologií**
* __XML 1.0__ je specifikace, která říká, co jsou tagy a atributy – na jejím základě "XML rodina" - vytváří několik modulů, které nabízejí různé služby, které plní časté a důležité potřeby
* __Xlink__ popisuje standardní cestu, jak přidat do XML souboru hypertextové odkazy
* __XPointer__ je něco jako URL, akorát místo odkazů na dokumenty na webu odkazuje dovnitř XML dokumentů
* __XPath__ umožňuje adresovat jednotlivé části dokumentu
* __XSL__ je vylepšený jazyk pro zapisování stylů - založen na XSLT, transformačním jazyce používaném pro přidávání, odebírání i úpravu tagů a atributů
* __DOM__ je standardizace funkcí pro manipulaci s XML soubory v programovacích jazycích
* **je staronové**
* **podobá se HTML**
* používá taky tagy a atributy
* **je modulární**
* dovoluje definovat nový formát kombinací jiných formátů
* obsahuje mechanismus jmenných prostorů (namespaces) - např. XSL a RDF
* **je základem RDF a sémantického webu**
* systém popisu zdrojů od W3C (RDF) je XML formát podporující popis zdrojů a uplatnění metadat (hudební "playlisty", file katalogy, knihovny)
* RDF spojuje aplikace a agenty do jednoho sémantického webu
* **je nelicencované, platformě nezávislé a široce podporované**
* specifikace od W3C je přístupná totiž pro všechny
* můžu fičet na čem chci (linux, winy,...)
====== typy uzlů ======
Uzel = to jsou ta vlastní data, uzavřena v metadatech
* **XML deklarace**
*
* **element, atribut, text**
* V terminologii XML se jednotlivým označeným částem dokumentu říká elementy. Elementy do sebe mohou být navzájem vnořené a tím dle potřeby zachycovat strukturu informací uložených v dokumentu
* **CDATA**
* Pokud potřebujeme do textu vložit větší kus textu, kde se hojně používají znaky se speciálním významem jako `<', `>' a `&', je nepohodlné je zapisovat pomocí znakových entit. Sekce CDATA oceníme zejména v případech, kdy je součástí XML dokumentu kód nějakého programu nebo HTML či XML kód
* Každý XML dokument musí být celý obsažen v jednom elementu (musí být JEDEN kořenový element - takže to všechno prostě "obalím")
{{ ::syntaxe-zaklady.png?nolink |}}
====== ověřování dokumentu ======
* tagy si definuju sama
* a to pomocí DTD nebo XML schématu (XSD)
* prostej text -> well-formed -> validní dokument
* parser = syntaktický analyzátor = program, který vykonává syntaktickou analýzu
* proces analýzy posloupnosti formálních prvků s cílem určit jejich gramatickou strukturu vůči předem dané (byť ne nutně explicitně vyjádřené) formální gramatice
* transformace vstupního textu do datové struktury, většinou stromu
* **token** = elementárních nositel významu v rámci daného formálního jazyka
====== styly ======
* CSS
* XLS
====== model XML dokumentu ======
* parent-child-sibling (rodič, potomek, sourozenec)
* ancestor -> descendant (předchůdce, následovník)
* uzly uspořádané ve stromové struktuře
* to je DOM, druhá verze je Simple API for XML (SAX), která umožňuje proudové zpracování a oproti DOMu bývá několikrát rychlejší
====== definice struktury ======
===== DTD (document type definition) =====
{{ ::dtd.png?nolink|}}
* neobsahuje možnost kontrolovat typy dat (čísla, měnové údaje, údaje o datu a čase)
* jednoduchý, stručný, může být přímo součástí dokumentu XML
* má nižší vyjadřovací schopnost a nepoužívá syntaxi XML
* četnost: + je jednou a více, * je nula a více, ? je nula nebo 1
{{ ::2dtd.png?nolink&300 |}}
===== XSD (XML schema definitio) =====
{{ ::xsd.png?nolink&300|}}
* W3C standard
* včetně sady XSL stylů
* složité a obsáhlé
* super vyjadřovací schopnosti, zavádí datové typy, jmenné prostory apod.
* datové typy: string, decimal, boolean, integer, date, time
* komplexní dytové typy si deklaruju sama - můžou obsahovat další elementy nebo atributy
====== XSLT transformace ======
* XML dokument + XSLT styl -> XSLT procesor -> XML, HTML, text,..
====== aplikace XML ======
* XHTML - nástupce po HTML... no...
* RDF (resource description framework) - specifikace umožňující popsat metadata (anotace html třebas)
* RSS - rodina XML formátů umožňující čít novinky webových stránek
* SMIL (sznchroniyed multimedia integration language] / popis multimédií pomocí XML
* MathML (mathematical markup language) - popis matematických vzorců apod. na webu
* SVG (scalable vector graphic) - jazyk pro popis dvourozměrné vektorové grafiky
* DocBook - sada definic dokumentů a stylů pro publikační činnosti
* SOAP - protokol pro komunikaci mezi webovými službami
* OpenDocument - souborový formát určený pro ukládání a výměnu dokumentů vytvořených kancelářskými aplikacemi
====== RSS a GeoRSS ======
===== RSS =====
* metadatové formáty určené pro čtení novinek na webových stránkách a obecněji přebírání dat mezi weby = syndikace obsahu
* technologie RSS umožňuje uživatelům přihlásit se k odběru novinek z webu, který nabízí RSS zdroj (RSS feed, = RSS kanál = RSS channel)
* RSS formát poskytuje obsah celého článku, příp. jeho část, odkaz na původní článek a také jiná metadata
* **povinné elementy**: - kořenový element, - to je samotný kanál, který obsahuje vnořené elementy jako title, link, description a dále nepovinné jako language, pubDate, copyright, webMaster apod.
* **AtomSyndication**: standard založený na XML, podporuje přenost textu a multimédií, protože byl potřeba jednotný formát pro informační kanály
* Podcast: nešíří jenom text, ale i multimédia. pomocí tohoto kanálu si můžu do kompu stahovat mp3 písničky
===== GeoRSS =====
* standard pro kódování geografické polohy websitu/zdroje v rámci webových kanálů
* umožňuje doručování informací o změnách provedených v digitální mapě
* spočívá v přidání prvku, který určuje přesnou polohu, do těla každé části RSS kanálu
* pole //where//
* **geometrie prvků**
* bod
* linie
* polygon (4 páry souřadnic) - poslední pár totožný s prvním
* box (čtverec - 2 páry souřadnic) - levý dolní a pravý horní roh
* **zápis geometrie:**
- Simple GeoRSS
* podporuje jen WGS84
* malá škála prvků
*
- GeoRSS GML
* point, lineString, envelope, polygon
* souřadnicový referenční systém (SRS)
* záladní je WGS84
* vzájemné vztahy (relationship)
* vztah obsahu webu ke konrétním prvkům na Zemi
* nadmořská výška - jenom v SIMPLE GeoRSS!!
* - výška od elipsoidu, počet pater budovy třeba
====== XPath (XML Path language) ======
* umožňuje z XML dokumentu vybírat jednotlivé elementy a pracovat s jejich hodnotami a atributy
* obsahuje knihovnu funkcí a slouží jako navigační nástroj
* adresujé části XML dokumentů
* základ: path expression - cesta k XML uzlu (Location Path)
* jednotlivé kroky výrazu se spojí lomítkem, před atributem je @, vyhodnocení zleva doprava, povinný je pouze test uzlu
* definováno celkem 13 os - např. child (dítě, implicitní), descendant (potomek), parent (rodič), ancestor (předek), attribute (atribut)
====== XML RPC (remote procedura call) ======
* Cíl: umožnit aplikacím, bez ohledu na to jak rozdílné jednotlivé programy a jejich účely jsou, navzájem spolu standardizovaným způsobem komunikovat po síti
* pracují jako požadavky protokolu HTTP realizované metodou POST
* serializace - transformace dat do podoby přenositelné sítí
* datové typy: pole, skalár, struktura
====== sémantický web ======
* web, kde jsou informace strukturovány a uloženy podle standardizovaných pravidel, což usnadňuje jejich vyhledání a zpracování
* uživatelé Internetu pracují s WWW jako s relační databází a dotazovat se na její obsah prostřednictvím jazyků podobných SQL
*
===== RDF (resource description framework)=====
* obecný rámec pro popis, výměnu a znovupoužití metadat
* formát RDF vyžaduje, aby byl pro každý element specifikován jmenný prostor
* zajišťuje přístup ke klíčovým elementům RDF, tvořící strukturu dokumentu @ RDF
* v kořenovém elementu, v Description, v atributu about
* datový model RDF:
* specifikace trojice: zdroj, vlastnost, hodnota vlastnosti
* obloha má modrou barvu
===== klasifikační schémata =====
* RDF/XML - je to pouze metajazyk pro popis dalších jazyků
* == soubor vlastností s definovanou sémantikou a omezeními kladenými na možné hodnoty těchto vlastností
* začlenění klasifikačních schémat do struktury RDF/XML = jmenné prostory XML
===== řízené slovníky =====
* == tezaurus, terminologická ontologie
* soubor předmětových hesel s definovanou strukturou nadřazených a podřazených termínů a určením synonym či jiných pojmových relací
* pro určení hodnoty určité vlastnosti mohou klasifikační schémata vyžadovat použití hesla z konkrétního slovníku <=> přispívá k interoperabilitě metadat
* využito v metainformačních systémech
===== GeoSPARQL =====
* geografický dotazovací jazyk pro RDF data
* geonames, data.gov, online mapové služby
===== OWL (ontology web language) =====
* konceptualizace dat dostupných na Internetu, jejíž klíčovým nástrojem jsou formalizované reprezentace znalostí určené k jejich sdílení a znovupoužití (ontologie)