Hlavní navigace

Akta X: Navigace v XML pomocí selektorů CSS

Petr Cimprich 21. 7. 2006

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?

24. 7. 2006 11:26

Mama Flama (neregistrovaný)
Myslim si ze nemate tak uplne pravdu, napriklad XSLT ktere je jednim z XML standardu je vlastne programovaci jazyk - mimochodem s uplne strasnou a smesnou syntaxi.
Urazlive poznamky o "teoreticich" a "cernych koutech" si prosim odpustte, nebo snad mate dojem ze vedet min je v programovani duvodem k chlubeni?

23. 7. 2006 12:27

Palo (neregistrovaný)
Asi ti uniklo ze XML je datovy format. Lisp je programovaci jazyk. To ze ked nahradis < a > za ( ) sa to potom dost podoba nic neznamena. Neviem o tom ze by v lispe existovali nastroje na definovanie struktury ala XSD pripadne automaticka validacia voci XSD. Namespaces tiez neviem ze by mali ekvivalent v lispe. Takze chod so svojim Lispom tam kde patri, do ciernych zakuti IT sveta kde sa pohubuju tebe podobny tazki teoretici. Aj ked vzhladom k tomu co o Lispe pises musis este Lisp chvilu …
Podnikatel.cz: Platební brány a EET? Stále s otazníkem

Platební brány a EET? Stále s otazníkem

Vitalia.cz: Vláknina: Rozpustná, nebo nerozpustná?

Vláknina: Rozpustná, nebo nerozpustná?

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Vitalia.cz: Žloutenka v Brně: Nakaženo bylo 400 lidí

Žloutenka v Brně: Nakaženo bylo 400 lidí

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Dárky v podnikání. Jak je uplatnit v daních?

Dárky v podnikání. Jak je uplatnit v daních?

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: Další dva kanály nabídnou HbbTV

Další dva kanály nabídnou HbbTV

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...