Hlavní navigace

Akta X: Navigace v XML pomocí selektorů CSS

Petr Cimprich

Selektory CSS 2.1 se osamostatňují jako alternativní prostředek pro vyhledávání uzlů v dokumentech XML. Z nových specifikací: XHTML Basic 1.1 s novými funkcemi pro malá zařízení, nové revize XML 1.0 i XML 1.1, XBL 2.0 technologie pro tvorbu webových aplikací s bohatým uživatelským rozhraním.

Selektory CSS

Pilná pracovní skupina Web API pod W3C začátkem června představila první pracovní verzi specifikace Selectors API. Tento dokument definuje dvě metody pro hledání uzlů ve stromech DOM, a přestože ani jednou nezmiňuje pojem XML, do světa XML zcela jistě patří. Je to však paralení svět lidí od webových prohlížečů, kteří často považují standardy jako je XPath, XSLT a XSL-FO za zbytečně přebujelý aparát a pro formátování XHTML preferují CSS. Názory obou stran tohoto sporu (tedy zastánců XPath/XSLT vs. CSS) jsou dobře vyjádřeny v rok a půl starých článcích na XML.com ([1], [2]).

Využití CSS se zatím, i podle svých největších přívrženců, omezovalo na formátování XML pro zobrazení na monitor nebo pro tisk. Specifikace Selectors API jde o krok dál; navrhuje samostatné využití selektorů CSS verze 2.1 při programování. Nový interface DocumentSelector by měl být implementován objekty, které již implementují interface Document podle specifikaceDOM 3 Core. Definice rozhraní DocumentSelector vypadá takto:

interface DocumentSelector {
  Node            match(in DOMString selectors, in XPathNSResolver nsresolver);
  StaticNodeList  matchAll(in DOMString selectors, in XPathNSResolver nsresolver);
}; 

Obě metody se liší pouze v tom, že match vrací jen první nalezený uzel (při procházení podle pořadí dokumentu způsobem „nejdříve do hloubky“), zatímco matchAll vrací seznam všech vyhovujících uzlů. První argument je v obou případech řetězec selektoru, druhým je funkce resolvující prefixy jmenných prostorů. Jediným programovacím jazykem, o kterém se specifikace zmiňuje, je ECMAScript (využití v kontextu prohlížeče je neskrývaným primárním cílem), ale lze si velmi snadno představit také implementace v dalších jazycích. Na prvních místech se nabízejí Java a C#, které mohou rozhraní DocumentSelector použít jako rozšíření svých implementací DOM. V prohlížečovém ECMAScriptu budou metody match a matchAll patřit globálnímu objektu  document.

Selektory CSS jsou zde používány podobným způsobem, jakým DOM 3 XPath (a starší verze DOMu pomocí rozšiřujících funkcí) používá XPath 1.0. Princip je stále stejný; funkce vyhodnotí výraz vnořeného jazyka a vrátí sadu vyhovujících uzlů. Selektory CSS tedy můžeme chápat jako alternativu k XPathu.

Bleskové srovnání těchto dvou technologií musím začít upozorněním na důležitý rozdíl. XPath vždy pracuje s pojmem aktuální sady uzlů a aktuální pozice, které hrají roli například při vyhodnocení relativních cest. Selektory žádný aktuální kontext nemají, pouze specifikují podmínky, které uzel buď splňuje nebo ne. V tom se spíše než výrazům XPath podobají „matchovacím“ vzorům šablon XSLT. XPath 1.0 je v mnoha ohledech komplexnější, má své osy, funkce, vnořené výrazy v predikátech. Na druhou stranu, selektory CSS jsou šité na míru prostředí prohlížeče, kde pomocí pseudotříd (visited, hover, first-of-type, only-child, atd.) a pseudoelementů (first-letter, first-line, selection, atd.) dokáží vybírat uzly způsobem za hranicí možností XPathu.

Selektory CSS představují zajímavý alternativní způsob lokace uzlů v dokumentu XML, výhodný zejména v prostředí webového prohlížeče. Příjemné je, že není nutné učit se nic nového, autoři specifikace jen využili známou a osvědčenou technologii v novém kontextu. Možný je také jiný pohled; objevil se další důvod konečně se pořádně a v plné šíři naučit pracovat se selektory.

Novinky z W3C

V červnu se objevilo poměrně dost nových dokumentů; následuje stručný přehled toho z mého pohledu nejzajímavějšího:

  • První pracovní verze XHTML Basic 1.1 s novými funkcemi pro malá zařízení.
  • Osm aktualizovaných kandidátů na doporučení z oblasti XPath 2.0/XSLT 2.0/XQuery 1.0 (odkazy).
  • Byly navrženy nové revize XML 1.0 i XML 1.1, včetně přidružených dokumentů o jmenných prostorech (odkazy).
  • První pracovní verze specifikace XML Binding Language (XBL) 2.0, technologie pro tvorbu webových aplikací s bohatým uživatelským rozhraním. XBL 2.0 je novou verzí XBL 1.0 z Mozilly. Také druhá verze byla původně napsána v Mozilla Foundation a teprve dodatečně se přesunula pod W3C.
  • Dokument Mobile Web Best Practices 1.0 se stal kandidátem na doporučení.
Našli jste v článku chybu?