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.

Doba čtení: 3 minuty

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?