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í.