XLink a XPointer

XLink popisuje odkazy mezi zdroji; XPointer adresuje části XML. Jsou to samostatné starší specifikace, jejichž praktická podpora závisí na konkrétním formátu a procesoru.

Autor: Aktualizováno

Jednoduchý XLink

Atributy z namespace XLink vyjadřují odkaz. Samotný XML parser adresu neotevře; význam musí implementovat aplikace. Vedle jednoduchých odkazů existují rozšířené odkazy s více zdroji a vazbami.

Jednoduchý XLink
<odkaz xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="https://example.cz/data.xml">Data</odkaz>

XPointer a fragment

Framework definuje rámec fragmentových identifikátorů a zkrácené adresování ID. Odkaz #uvod není automaticky vyhledání libovolného atributu id: procesor musí znát ID hodnotu podle svého modelu.

XPointer a fragment
<kapitola xml:id="uvod">Úvod</kapitola>

https://example.cz/prirucka.xml#uvod

Framework versus schémata

Framework, element() schéma a xpointer() schéma nejsou jediný dokument se stejným statusem. Neslibuj podporu libovolného XPath v URI fragmentu. Pro vybraný procesor ověř konkrétní podporovaná schémata; i XInclude má vlastní integrační pravidla.

Dnešní relevance

XLink 1.1 je doporučení z roku 2010, XPointer Framework z roku 2003. V praxi na ně narazíš například ve slovnících nebo soustavách odkazů XBRL. Pro nový vlastní formát nejprve zvaž jednoduché URI a existující konvenci příjemce; prohlížeč nemusí obecné XML odkazy renderovat jako HTML.

Výběr části XML pomocí element schématu

casti.xml — druhá kapitola je druhý elementový potomek kořenu
<dokument><kapitola><nadpis>První</nadpis></kapitola><kapitola><nadpis>Druhá</nadpis></kapitola></dokument>
vyber.xml — vyžaduje XInclude procesor s element() podporou
<vysledek xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="casti.xml" xpointer="element(/1/2)"/></vysledek>
V libxml2 ověř konkrétní podporu schématu
xmllint --xinclude vyber.xml

Child sequence /1/2 vybírá kořenový element dokumentu a jeho druhého elementového potomka. Po zpracování očekávej ve vysledek kapitolu s nadpisem Druhá. Komentáře a textové uzly se do těchto elementových pozic nepočítají. Přidání jiné kapitoly na začátek ale cíl změní; pořadová adresa není stabilní obchodní identifikátor.

element(uvod) může adresovat element podle známého ID. Jméno atributu id samo nezaručuje ID typ: záleží na xml:id, deklaraci DTD/XSD a schopnostech procesoru. V URI je fragment za #, v atributu xpointer XInclude se uvádí samotný výraz schématu. XPointer element() Scheme má vlastní definici; nejde o obecné spuštění libovolného XPath.