Navigace, odkazování a adresování v XML datech Obsah XPath .......................................................................................................................2 XPath - hlavní principy ........................................................................................................2 XPath - aplikační oblasti.......................................................................................................2 XPath - pojem cesty (paths) a lokace (locations)........................................................................2 XPath - osy (axes) ...............................................................................................................3 XPath - predikáty (predicates) ...............................................................................................4 XPath-Výrazy...................................................................................................................4 XPath - zkrácená notace - Příklady .........................................................................................4 XPath - zkrácená notace (2) ..................................................................................................5 Informační zdroje k XPath....................................................................................................6 XPath 2.0 ..........................................................................................................................6 XPath 2.0 - příklady ............................................................................................................6 XML Linking Language (XLink) ...................................................................................6 XLink - úvod......................................................................................................................6 XML Linking Language (XLink) - původ standardu ..................................................................7 XLink - historie a motivace...................................................................................................7 Výhody odkazové infrastruktury na bázi XLink ........................................................................7 Specifikace, tutoriály ...........................................................................................................8 XLink - základní principy .............................................................................................8 Integrace XLinku do (schémat) dokumentů ..............................................................................8 XLink - základní typy ..........................................................................................................9 Simple XLink odkaz ............................................................................................................9 Extended XLink odkaz .........................................................................................................9 Příklad odkazu XLink (1) - jednoduchý XLink .......................................................................10 Příklad odkazu XLink (2) - rozšířený XLink...........................................................................10 Sémantika odkazů XLink............................................................................................10 Chování aplikací nad odkazy XLink .....................................................................................10 Upřesnění role odkazu pro aplikace ......................................................................................11 Upřesnění role odkazu pro člověka .......................................................................................12 Použití XLink a implementace procesorů XLink .............................................................12 Procesory XLink...............................................................................................................12 Prohlížeče........................................................................................................................12 Příčiny nízkého rozšíření ....................................................................................................13 Alternativy k XLink ..................................................................................................13 HLink.............................................................................................................................13 VELLUM........................................................................................................................ 13 VELLUM - přednosti a nedostatky .......................................................................................14 VELLUM - ukázka............................................................................................................14 1 Navigace, odkazování a adresování v XML datech VELLUM - ukázka (2) .......................................................................................................15 VELLUM - ukázka (3) .......................................................................................................15 VELLUM - srovnání s RDF ................................................................................................16 Odkazy na další zdroje .......................................................................................................16 XPointer..................................................................................................................16 XML Pointer Language (XPointer).......................................................................................16 Aktuální specifikace skupiny XPointer..................................................................................16 XPointer - terminologie......................................................................................................17 pojem Point .....................................................................................................................17 pojem Range ....................................................................................................................18 pojem Location.................................................................................................................18 XPointer - ukázky .....................................................................................................18 XPointer-ukázka (1).........................................................................................................18 XPointer - ukázka (2).........................................................................................................18 Zvon XPointer Tutorial ......................................................................................................19 XPath XPath - hlavní principy XPath je syntaxe pro specifikaci částí XML dokumentů (uzly, množiny uzlů, sekvence uzlů; nelze specifikovat části textových uzlů). • XPath používá syntaxi obdobnou jako cesty v souborovém systému. • XPath používá knihovnu standardních funkcí (evt. uživatelsky definovaných - v XPath 2.0 nebo i XPath 1.x, ale proprietárně - podle procesorů) • XPath je od v 1.0 základem pro XSLT, od 2.0 i pro XQuery • XPath syntaxe není XML (bylo by příliš "upovídané") • XPath 1.0 je W3C Recommendation - http://www.w3.org/TR/xpath XPath - aplikační oblasti • Pokročilá navigace v XML datech • Transformace (XSLT) • V "selekční části" XML dotazovacích jazyků • V některých modelovacích jazycích - Schematron XPath - pojem cesty (paths) a lokace (locations) 2 Navigace, odkazování a adresování v XML datech Cesta určuje lokaci v dokumentu Cesty jsou konstruovány podobně jako cesty ve FS, tj. • relativní - vyhodnocovány vůči kontextovému uzlu (KU), viz dále • absolutní - od kořene, ale výrazy (predikáty) také vyhodnocovány vůči KU Syntaktická pravidla: [20] PathExpr ::= AbsolutePathExpr | RelativePathExpr [22] AbsolutePathExpr ::= ("/" RelativePathExpr?) | ("//" RelativePathExpr) [23] RelativePathExpr ::= StepExpr (("/" I "//") StepExpr)* [24] StepExpr ::= AxisStep | GeneralStep [25] AxisStep ::= (Axis? NodeTest StepQualifiers) | AbbreviatedStep XPath - osy (axes) Osy jsou množiny prvků dokumentu, vymezené (obvykle relativně) vůči kontextu. Kontext je tvořen především dokumentem a aktuálním (kontextovým) uzlem. Osami j sou: child - obsahuje dceřinné uzly kontextového (aktuálního) uzlu descendant - obsahuje všechny potomky kontextového (aktuálního) uzlu (dále jen KU). Nepočítají se mezi ně atributy!!! parent - obsahuje rodičovský uzel KU (existuje-li) ancestor - obsahuje všechny předky - rodiče, "prarodiče"... kořenový element (pokud KU není sám kořenový) following-sibling - obsahuje všechny následující sourozence KU (pro NS a atributy je tato osa prázdná) preceding-sibling - dtto, ale obsahuje předchozí sourozence following - obsahuje všechny uzly nacházející se po KU (mimo atributů, potomků a NS uzlů preceding - dtto, ale obsahuje předchozí uzly (ale mimo předky, attributy, NS!) attribute - obsahuje atributy (jen pro uzly - elementy) namespace - obsahuje všechny NS uzly KU (jen pro uzly - elementy) self - obsahuje samotný KU 3 Navigace, odkazování a adresování v XML datech • descendant-or-self - obsahuje sjednocení os descendant a self • ancestor-or-self - obsahuje sjednocení os ancestor a self XPath - predikáty (predicates) Určeny k selekci (výběru) z uzlů specifikovaných např. cestou př.: /article/para[3] - vybere třetí odstavec v článku Nejjednodušším výrazem v predikátu je specifikace pozice (blízkosti) (proximity position) -viz výše • pozor u reverzních os (ancestor, preceding...) - pozice se počítá v rámci množiny uzlů vždy OD KONTEXTOVÉHO UZLU! specifikaci pozice 3 možno nahradit výrazem position()=3 XPath - Výrazy Určeny k použití v predikátech, k výpočtům, atd. Výrazy mohou být: • řetězcové • numerické (hodnotami jsou floating-point čísla) • logické (boolean) uzly sekvence XPath - zkrácená notace - Příklady • para selects the para element children of the context node vybere všechny dceřinné elementy kontextového uzlu jmenující se para * selects all element children of the context node • text() selects all text node children of the context node @name selects the name attribute of the context node @* selects all the attributes of the context node 4 Navigace, odkazování a adresování v XML datech • para[l] selects the first para child of the context node • para[last()] selects the last para child of the context node */para selects all para grandchildren of the context node • /doc/chapter[5]/section[2] selects the second section of the fifth chapter of the doc • chapter//para selects the para element descendants of the chapter element children of the context node vybere všechny element para, jež jsou následníky chapter • //para selects all the para descendants of the document root and thus selects all para elements in the same document as the context node vybere všechny elementy para z dokumentu • //olist/item selects all the item elements in the same document as the context node that have an vybere všechny elementy item, které mají za rodiče olist . selects the context node vybere kontextový uzel .//para selects the para element descendants of the context node vybere všechny elementy-potomky kontextového uzlu, které nesou značku para .. selects the parent of the context node vybere rodičovský uzel od kontextového . ./@lang selects the lang attribute of the parent of the context node vybere atribut lang rodičovského uzlu od kontextového XPath - zkrácená notace (2) Nejpoužívanější zkracování je osy child: • tj. píšeme article/para místo child: :article/child: :para. • a atributu: píšeme para[@type="warning"] místo child::para[attribute::type="warning"] • Další používané zkracování je // místo /descendant-or-self: :node()/ • a samozřejmě zkratky . a .. 5 Navigace, odkazování a adresování v XML datech • Pro přehlednost někdy delší formu zachováváme Informační zdroje k XPath • XPath na W3C: http://www.w3.org/TR/xpath • Zvon XPath Tutorial: http://zvon.org/xxl/XPathTutorial/Output/index.html • XPath Tutorial na W3Schools: http://www.w3schools.com/xpath/xpath_intro.asp XPath 2.0 • zatím jako PRACOVNÍ NÁVRH - http://www.w3.org/TR/xpath20/ • Změna pohledu na hodnoty vrácené XPath výrazem: vše j sou sekvence (byť j ednoprvkové) ->odstraňuje problémy s "pořadím" uzlů v množině • Zavádí podmíněné výrazy a cykly • Zavádí možnost uživatelských funkcí (psanýchjako dynamicky vyhodnocované výrazy v XPath) • Lze použít existenční a obecné kvantifikátory, např. exist student/name="Fred" nebo all student/@id • Dále viz např. http://www.saxonica.com/ XPath 2.0 - příklady • Řetězcové funkce [http://www.fi.muni.cz/~tomp/xml03/xpath20/string.html] Numerické funkce [http://www.fi.muni.cz/~tomp/xml03/xpath20/numeric.html] • Funkce nad sekvencemi [http://www.fi.muni.cz/~tomp/xml03/xpath20/sequence.html] • Booleovské funkce [http://www.fi.muni.cz/~tomp/xml03/xpath20/boolean.html] XML Linking Language (XLink) XLink - úvod XLink pracuje na úrovni XML Infoset Dovoluje odkazovat se: 6 Navigace, odkazování a adresování v XML datech • v rámci dokumentu, • z jednoho dokumentu na další, mezi dokumenty (odkaz je uložen mimo ně) Rozlišuje kategorie: adresa (téz zdroj nebo lokace, tj. odkazovaný objekt - element, skupina elementů, text...) • a vlastní odkaz • Odkaz pak představuje vazbu mezi zdroji s případným upřesněním sémantiky odkazu. XML Linking Language (XLink) - původ standardu • W3 C Recommendation 27 July 2001 • Obecný mechanizmus na propojování XML zdrojů (=dokumentů a jejich částí) • Inspirován zejména std. HyTime (http://www.hytime.org/) • Ortogonální k entitám (lze použít současně oboje) • mnohem bohatší sémantika než u entit, • entity se vyhodnocují (resolve) při parsingu, • XLink odkazy většinou až v aplikaci XLink - historie a motivace • Vychází z pokročilých hypertextových technik - HyTime ImmntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7HyTime] Wrl K. I PI-. IílA 'Ilir ľni- Fil u L-^b-iL ■ [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=HyTime] (pro SGML - viz http://info.admin.kth.se/SGML/Anvardarforeriing/Arbetsgrupper/HyTime/Reports/trlvl.html), TEI I n MJ ntW clJ [http://www.instantweb.com/foldoc/foldoc.cgi7TEI] Wl k. IPFÍíl A lir ■Lm" Fil i. l-ault i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=TEI]... • Konstruován tak, že rozšiřuje a upřesňuje syntaxi i sémantiku HTML odkazů Výhody odkazové infrastruktury na bázi XLink 7 Navigace, odkazování a adresování v XML datech Na rozdíl od SGML línků (např. v HyTime) můžeme v XML využívat jmenné prostory. Nenutí nás to upravovat DTD pří použití odkazů. • Infrastruktura odkazů může existovat (v jiném NS) nezávisle na schématu (struktuře) XML dokumentů, v nichž se odkazy vyskytují. • Odkazy mohou být fyzicky mimo soubory s odkazovanými lokacemi. Specifikace, tutoriály • XML Linking Language (XLink) Version 1.0 - Specification [http://www.w3.org/TR/xlink/] Zvon simple XLink tutorial [http://www.zvon.org/xxl/xlink/OutputExamples/xlinksimple_intro.html] • Zvon extended XLink tutorial [http://www.zvon.org/xxl/xlink/xlink_extend/OutputExamples/xlinkextend_intro.html] XLink - základní principy Integrace XLinku do (schémat) dokumentů • Atributy a elementy XLink In^LantWeb [http://www.instantweb.com/foldoc/foldoc.cgi7XLink] WIKIPFMA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=XLink]u "TliF Fn-i- Fil i. Ljv-iki mají vlastní jmenný prostor • Jako prefix NS se obvykle používá xlink InüiantWeb [http://www.instantweb.com/foldoc/foldoc.cgi7xlink] Wl K IPETJlA Tli r hm- Fík u Lniki [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink] • Příslušnost k XLinku je dána deklarací daného elementu/atributu v XLink NS to umožňuje flexibilní integraci stávajících schémat (modelů) aXLinku (nemusíme měnit jména "lin-kovacích" elementů) • XLink odkaz "dovnitř" dokumentů používají standard XPointer InmntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7XPointer] Wl KIPFDIA Flip tni- Fit ■• Lnibi [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=XPointer] (http://www.w3 .org/TR/xptr). Navigace, odkazování a adresování v XML datech XLink - základní typy • Jednoduchý (simple |rnrjntWcl> [http://www.instantweb.com/foldoc/foldoc.cgi7simple] WlKIPFMA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=simple]) - Flip tni- Fib ■■ Lnibi vždy "in-line" • Rozšířený (extended InMjntWcb [http://www.instantweb.com/foldoc/foldoc.cgi7extended] Wl k IPF IIIA [http://cs.wikipedia.org/wiki/Speci%C3%A11n%C3%AD:Search?search=extended]) Trir rni- Fil i. ■■nt ■ - může být "out-of-line" (i v jiném dokumentu/souboru/databázi odkazů) Simple XLink odkaz Váže jeden lokální zdroj na jeden vzdálený (single local -> single remote entity); • Je vyznačen atributem xlink: type—"simple" |n^xjnť [http://www.instantweb.com/foldoc/foldoc.cgi?xlink:type="simple"] WlřCIPFfllA TTir Pni- Fil i. L-aa-iL i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:type="simple"]; Extended XLink odkaz • Váže jeden nebo více lokálních a jeden nebo více vzdálených zdrojů • Může mít přesněji definovanou sémantiku (nad rámec výše uvedených možností) • Odkazy mohou být uloženy mimo odkazující zdroj(e) • je vyznačen atributem xlink: type="extended" |n!.iantWeb [http://www.instantweb.com/foldoc/foldoc.cgi?xlink:type="extended"]Wl'E'lPFniA Tri r put Fík i. rinli [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:type="extended"] extended |n!.iantWeb [http://www.instantweb.com/foldoc/foldoc.cgi7extendedjWlFflPFrilA "Flip l-'n-i- Fil i. L^aik i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=extended] odkaz se může odkazovat na • lokální zdroje - vyznačené atributem xlink: resource InüiantWeb [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:resourcejWlFflPFDlA [lir ľni- Fill L-aa-iL i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:resource] nebo 9 Navigace, odkazování a adresování v XML datech • vzdálené zdroje - vyznačené atributem xlink: locator InMjntWEb [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:locator] Vťl K. I fr. I )l A Dip rm- pil i. L-^iiL ■ [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:locator] Směr odkazu a role participujících zdrojů mohou být upřesněny (nad rámec výše uvedených možností): • uvedením podelementů are |n;mntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7arc] WlKIPFDlA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=arc] v ex- Th r V n t F ■ ■ ■ ■ ľint i tended In^LantWeb [http://www.instantweb.com/foldoc/foldoc.cgi7extendedjWliCIPFniA Íri r priT Fib i. Lnik i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=extended] odkazu Příklad odkazu XLink (1) -jednoduchý XLink Příklad odkazu XLink (2) - rozšířený XLink Any content here Sémantika odkazů XLink Chování aplikací nad odkazy XLink Co má aplikace udělat s odkazovaným dokumentem/prvkem dokumentu je specifikováno atributem xlink: show |nMjntWcl> [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:show] WlKIPF. I JI A [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:show] "Tli r Fn-i- Fla akyiVj new InttjntWclJ [http://www.instantweb.com/foldoc/foldoc.cgi7newlWlKIPFfllA In r rm- riL i. LbbhLi [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=new] - chápat jako nový dokument (např. otevřít v novém okně) 10 Navigace, odkazování a adresování v XML datech I n Ml ntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7replace] Wl fCIPFľllA Hli r priT Fib i. Lnik i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=replace] - nahradit jím zdrojový dokument embed InMjntWcb [http://www.instantweb.com/foldoc/foldoc.cgi7embedlWlKIPFrilA I if F m1 (íl i. I'bbbb i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=embed] - vložit odkazovaný obsah do zdrojového dokumentu "kdy to má udělat" - specifikováno atributem xlink: actuate InüuntWeb [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:actuate] WlKIPFDlA I IP P PIT PIL I. Illl I [http ://cs. wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search? search=xlink: actuate] onLoad InuuntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7onLoadjWlFilPFniA TTi p F n t Fík i. Ľ ■ ■ i k i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=onLoad] - tj. inhed při zpracování zdrojového dokumentu (ale kdy? při parsingu?) onRequest |n;mntWĽb [http://www.instantweb.com/foldoc/foldoc.cgi7onRequest] WIKIPFMA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=onRequest] Flip tni- Fib ■■ I-ibib i - na požádání (např. po kliknutí na zobrazený obsah odkazujícího elementu) Upřesnění role odkazu pro aplikace roli odkazu lze upřesnit v podobě srozumitelné aplikacím: • atributem xlink: role |n:iLantWeb [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:role] WUCIPFhlA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:role] Tip p Pii" pil i. LniLi - u simple InimntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7simple] WrlK.I d.í11A "Ipip F'pib- Fib i. Lniki [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=simple] i extended I n MJ ntW C b [http://www.instantweb.com/foldoc/foldoc.cgi7extended] Wl KIPFÍll A ľ!i p p"pii ■ Fik ■■ Lniki [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=extended] odkazu • atributem xlink: arerole IntTantWcb [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:arcrolejWlFCIPFrilA I ir P PI B" FlL I. BBBP ■ [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:arcrole] - u elementu a r c I n SU ntW cb [http://www.instantweb.com/foldoc/foldoc.cgi7arc] Wl (í IPFI Íl A "Tfcp F PI B" FlL I. I'BBBB I [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=arc] v extended I n MJ ntW cb [http://www.instantweb.com/foldoc/foldoc.cgi7extended] Wl K IPFÍll A Trir ppiT riL i. Liinkí 11 Navigace, odkazování a adresování v XML datech [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=extended] odkazu Upřesnění role odkazu pro člověka Lze upřesnit roli odkazu v podobě srozumitelné člověku: • atributem xlink: title |n:mnť [http://www.instantweb.eom/foldoc/foldoc.cgi7xlink:title] Wl KIPFTH A 'ílir k'n-1- Fík u L-^a-iL i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlink:title] - u simple InSLantWeb [http://www.instantweb.com/foldoc/foldoc.cgi7simple] Wl It I Pí-. 131A r i r rnn1 Pil i. ľiiit i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=simple] i extended I n MJ] ntW C b [http://www.instantweb.com/foldoc/foldoc.cgi7extendedjWlKľlPFTJlA Tli r p"n t Fit i. Lnibi [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=extended] odkazu i u elementu are InüiantWeb [http://www.instantweb.com/foldoc/foldoc.cgi7arclWlLIPFillA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=arc] v extended I n MJ1 ntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7extended] Wl K. I ľ"Ff JlA Tri r F*nt Pii. i. Lnibi [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=extended] odkazu Použití XLink a implementace procesorů XLink Procesory XLink Zatím nepříliš rozšířené (řádově jednotky aplikací). Nejznámějšími procesory jsou: • Fujitsu XLink Processor (XLiP) - http://www.labs.fujitsu.com/free/xlip/en/ • Open source projekt xlinkit |n:mntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7xlinkit] Wl fCIPEDlA Tpip p ni1 pil i. LbbiLi [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=xlinkit] http://www.xlinkit.com/xtoox/index.html • X2X (komerční, velmi drahý produkt) podporuje XLink http://www.stepuk.com/products/prod_X2X.asp Prohlížeče podpora simple odkazů 12 Navigace, odkazování a adresování v XML datech • Mozilla (open source) a Netscape (komerční) DocZilla (komerční) MSIE ani Opera (vč. posledních verzí) XL ink nepodporují Příčiny nízkého rozšíření • Vývoj trval dlouho (cca 5 let), mezitím aplikace začaly používat vlastní řešení Sémantika XLinku je: • příliš obecná (aplikace raději používaly vlastní, na míru šitý odkazovači jazyk, viz (X)HTML) a současně • málo obecná (např. RDF metadata popíší vztahy mezi zdroji podrobněji, s typovou kontrolou přes RDF Schemata, atd.) XLink je také nahrazován aktivitou směřující ke specifikaci XML Topic Maps Alternativy k XLink HLink Cílem je adaptovat XLink pro potřeby XHTML, kde "nelze použít přímo XLink" • viz HLink - Link recognition for the XHTML Family - W3C Working Draft 13 September 2002 [http://www.w3 .org/TR/hlink/] specifikace je navržena W3C Working Group, jí oponovala W3C Technical Architecture Group (TAG) • Princip: mapuje vybrané atributy na jejich přesně dané XLink protějšky tzn. i to, co normálně nemůže být XLinkem, se na XLink může "automaticky" mapovat • Tento standard je kritizován jako "hybrid, který jedině dokazuje praktickou nevhodnost XLinku" • dále viz např. diskuse na xmlhack.com [http://xmlhack.com] VELLUM • Nezávislá alternativa Simona St. Laurenta • viz Very Extensible Linking Language Unafraid of Markup (VELLUM) 13 Navigace, odkazování a adresování v XML datech [http://www.simonstl.com/projects/vellum/] • Nevýhodou je poněkud rozvleklejší ("upovídaný", verbose) zápis, než u XLink VELLUM is aimed exclusively at "external" or out-of-line linking. This frees VELLUM from the constraints imposed by developer expectations for inline linking. • VELLUM accepts the cost of a verbose form in exchange for the extensibility and precision that element forms and indirection can offer. • VELLUM does permit the use of existing abbreviations (like URIs and URI references), but simultaneously allows developers to specify more information than is carried in those identifiers. • VELLUM also looks forward to the prospect of VELLUM processors which maintain state across multiple traversals and permit the creation of interactive hypertexts, not just collections of connections. VELLUM - přednosti a nedostatky VELLUM attempts to provide a general-purpose solution to linking which addresses the complexities raised by the W3C's XPointer and XLink specifications by taking a very different approach. VELLUM does not assume that URIs and URI references are adequate to the task of identifying resources, representations, and fragments of representations, and strives to put XML hyperlinking on firmer but still approachable foundations. VELLUM supports and uses URIs and URI references, but offers options that extend those capabilities. VELLUM is not a general-purpose solution to hypertext linking. VELLUM is intended to be used in cases where precision is important and verbosity is not a problem. While VELLUM could conceivably be mixed with other vocabularies and used to define links within them, it is not designed explicitly for such use. VELLUM is more appropriate for use in cases like external links and linkbases, where the links are stored separately from the resources they connect. (VELLUM's designer hopes that a simpler mechanism for in-line linking will emerge to complement VELLUM.) VELLUM both builds on the URI framework and goes beyond the URI framework. URIs and URI references may be used within the VELLUM framework if the level of precision they provide is adequate, but developers can specify more information about issues like content-negotiation within the VELLUM framework if they choose. VELLUM also makes it possible to explicitly specify whether a connection involves an abstract resource or a particular concrete representation. VELLUM also makes it possible for developers to create metadata which applies to their links in a local context. While XLink uses URIs for everything from href to arcrole, VELLUM lets developers use more intelligible identifiers whose meaning is defined within a particular VELLUM context. While VELLUM may be more verbose than a comparable XLink linkbase, it should (if designed thoughtfully) be more readable. VELLUM - ukázka 14 Navigace, odkazování a adresování v XML datech VELLUM - ukázka (2) VELLUM - ukázka (3) 15 Navigace, odkazování a adresování v XML datech VELLUM - srovnání s RDF koncept VELLUM out-of-line odkazuje podobný metadatům podle rámce RDF (odkazy jsou také metadata...) proto se k VELLUM vrátíme po prostudování RDF Odkazy na další zdroje • XLink Tutoriál na Zvonu (http://zvon.org) Specifikace XLink (http://www.w3.org/TR/xlink) • IBM Developerworks/XML • Portál XML.COM (např. článek What is XLink? http://www.xml.eom/lpt/a/2000/09/xlink/index.html) xmlhack.com [http://xmlhack.com] XPointer XML Pointer Language (XPointer) W3C Working Draft 16 August 2002 • Definuje mechanizmus adresování (tj. "pointing" - ne odkazování!) v rámci XML dokumentu Rozšiřuje koncept kotvy (anchor) známé z HTML - #jménoKotvy • Umožňuje explicitní adresování navigací i implicitní adresování dotazováním • Umožňuji adresování i v rámci textových uzlů • Umožňuje rozlišit adresu bodu (point) a úseku (range) v XML dokumentu • Jako základ pro specifikaci adresy bere jazyk XPath In^untWeb [http://www.instantweb.com/foldoc/foldoc.cgi7XPath] Wl FCIPFDIA mr rni1 ml i. ■nk i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=XPath] Aktuální specifikace skupiny XPointer 16 Navigace, odkazování a adresování v XML datech POZOR - specifikace XPointer se v současnosti rozpadla na 4 následovníky: • XPointer Framework - This specification defines the XML Pointer Language (XPointer) Framework, an extensible system for XML addressing that underlies additional XPointer scheme specifications. The framework is intended to be used as a basis for fragment identifiers for any resource whose Internet media type is one of text/xml, application/xml, text/xml-external-parsed-entity, or ap-plication/xml-external-parsed-entity. Other XML-based media types are also encouraged to use this framework in defining their own fragment identifier languages. • XPointer element!) Scheme - The XPointer element () IniTgntWEb [http://www.instantweb.com/foldoc/foldoc.cgi7element0] Wl fCIPFf JlA Tri r put ml i. u n n U ■ [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=element()] scheme is intended to be used with the XPointer Framework to allow basic addressing of XML elements. • XPointer xmlnsQ Scheme - The XPointer xmlns() scheme is intended to be used with the XPointer Framework to allow correct interpretation of namespace prefixes in pointers, for instance, namespace-qualified scheme names and namespace-qualified element or attribute names appearing within scheme data. • XPointer xpointerQ Scheme - The XPointer xpointer() scheme is intended to be used with the XPointer Framework to provide a high level of functionality for addressing portions of XML documents. It is based on XPath, and adds the ability to address strings, points, and ranges in accordance with definitions provided in DOM 2: Range. XPointer - terminologie XPointer - terminologie pojem Point point | n ^ntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7pointjWliCIPFniA *Hi r r'n t F ■ l ■. LniLi [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=point] - bod, daný svým kontejnerem (container ImmntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7container] WlKIPFTJlA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=container]) a Tn r p n t Fík i. ■.■■■nh ■ celočíselným indexem (pozicí) v rámci kontejneru bod může mít explicitní nebo implicitní hranici může být typu node-point InimntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7node-point] Wl K IPRf )l A r i p F n t Fit ■■ ■ ■ % h i [http://cs.wikipedia.org/wiki/Speci%C3%A11n%C3%AD:Search?search=node-point] nebo character-point InsuntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7character-point] 17 Navigace, odkazování a adresování v XML datech WIKIPFMA T i r tni1 Fil i. »líh i [http ://cs. wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search? search=character-point] dále viz specifikace - typ Point [http://www.w3.Org/TR/xptr-xpointer/#dt-point] viz také tutoriál node-point [http://zvon.org/xxl/xpointer/tutorial/OutputExamples/xml30_out.xml.html] a character-point [http://zvon.org/xxl/xpointer/tutorial/OutputExamples/xml40_out.xml.html] pojem Range range |n:mntWeb [http://www.instantweb.com/foldoc/foldoc.cgi7rangejWlKIPFniA Im r priT r ik i. L-iinh i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=range] -je obsah mezi dvěma body V RÁMCI jednoho dokumentu nebo jedné externí analyzované entity dále viz specifikace - typ Range [http://www.w3.Org/TR/xptr-xpointer/#dt-range] pojem Location location in^_intWeb [http://www.instantweb.com/foldoc/foldoc.cgi71ocation]WlřCIPFMA Íri r pnT Fil i. Lnik i [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=location] - "místo" - může být DOM uzel po ■LTí'c |nHTJntWEb [http://www.instantweb.com/foldoc/foldoc.cgi7point]VťlfCIPF.ľllA ■ Pír ľni- Fib i. LniVi [http ://cs. wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search? search=point], range In íiantWeh [http://www.instantweb.com/foldoc/foldoc.cgi7range] Wl K IPFÍll A iiLiuiiiLiTciy ~i r.i:T :,.'i.:'. [http ://cs. wikipedia. org/wiki/Speci%C3 %A 1 ln%C3 %AD: Search? search=range] dále viz specifikace - typ Location [http://www.w3.Org/TR/xptr-xpointer/#dt-location] XPointer - ukázky XPointer - ukázka (1) XPointer - ukázka (2) Xpointer výraz b2/3 In^untWeb [http://www.instantweb.com/foldoc/foldoc.cgi?b2/3] WIKIPFTJIA [http://cs.wikipedia.org/wiki/Speci%C3%Alln%C3%AD:Search?search=b2/3] nebo xpointer (id ( ' b2 ' ) /* [ 3] ) imiantWeb [http://www.instantweb.com/foldoc/foldoc.cgi?xpointer(id('b2')/*[3])]WlK:iPFrilA li r pnT Fík ■■ Lniki 18 Navigace, odkazování a adresování v XML datech [http://cs.wikipedia.org/wiki/Speci%C3%A 1 ln%C3%AD: Search? search=xpointer(id('b2')/* [3])] vybere z následujícího dokumentu ...třetí uzel DDD ddd="777"... Zvon XPointer Tutorial Zvon XPointer Tutorial - http://www.zvon.org/xxl/xpointer/tutorial/OutputExamples/xpointer_tut.html ="___»> Text in the first element BBB. ="222"> element BBB. Text in more nested element. Text in more nested element. Text in more nested element. ="321"> Again some text in some element. 19